C语言课程设计实验报告

更新时间:2023-10-03 12:49:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

C语言程序设计实验报告

实验名称 姓 名 实验时间 LineEditor 号 学 级 班 实验目的:

1. 2.

窗口都有自己的类名,需要先把该类名及它对应的消息处理掌握简单、常用的算法,并在编程过程中体验各种算法的编

器注册到Windows界面系统中,再根据该类名来创建自己的窗口。 程技巧。进一步学习调试程序,掌握语法错误和逻辑错误的检查方法。

3. 明确在Windows Form应用中,Windows界面系统通过消息与应用程序进行交互,每个窗口都有相应的消息处理器,处理各自的用户输入及界面重绘等逻辑。

实验要求:

1、 响应用户的普通字符输入

2、 可以用光标键及HOME、END键来移动光标 3、 可以用鼠标键来移动光标

4、 可以用BACKSPACE及DELETE键来删除输入的内容

实验内容:

源代码

#include

#include

HINSTANCE _HInstance; // 应用程序句柄

TCHAR _Title[] = _T(\简单文本框\定义窗口的标题

TCHAR _WindowClass[] = _T(\主窗口类名

ATOM _RegisterClass(); // 注册主窗口类

HWND _CreateWindow(int nCmdShow); // 创建主窗口

LRESULT CALLBACK _WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam); // 主窗口消息处理函数

TCHAR _TextBoxClass[] = _T(\文本框的类名

ATOM _RegisterTextBoxClass(); // 注册文本框的类

HWND _CreateTextBoxWindow(HWND hParentWnd); // 创建文本框

LRESULT CALLBACK _TextBoxWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam); // 文本框窗口消息处理函数

void _DrawText(HDC hDC); // 绘制文本 void _SetCaretPos(HWND hWnd); // 设置光标位置

void _UpdateWindow(HWND hWnd); // 更新窗口

// 一些常量定义

#define MAINWINDOW_WIDTH 600 // 主窗口宽度

#define MAINWINDOW_HEIGHT 400 // 主窗口高度

#define TEXTBOX_WIDTH 400 // 文本框宽度

#define TEXTBOX_HEIGHT 36 // 文本框高度

#define TEXTBOX_MAXLENGTH 1024 // 文本框中文本的最大长度

TCHAR _String[TEXTBOX_MAXLENGTH + 1] = _T(\文本

int _StringPosition = ::_tcslen(_String); // 光标插入点所在的位置

int APIENTRY _tWinMain(HINSTANCE hInstance, // 当前的应用程序句柄

HINSTANCE hPrevInstance, // 前一个应用程序实例的句柄(在Win32上,始终为NULL)

LPTSTR lpCmdLine, // 命令行参数

int nCmdShow // 窗口的显示样式

) {

_HInstance = hInstance;

_RegisterClass(); // 注册窗口类

if(_CreateWindow(nCmdShow) == NULL) // 创建窗口

return FALSE;

MSG msg;

while (::GetMessage(&msg, NULL, 0, 0)) // 从消息队列中获取消息

{

::TranslateMessage(&msg); // 转译一些特殊的消

::DispatchMessage(&msg); // 执行消息处理

}

return (int)msg.wParam; }

// 注册应用程序窗口类

ATOM _RegisterClass() {

WNDCLASSEX wc;

::ZeroMemory(&wc, sizeof(wc)); // 作为一步清空,是为了让未赋值的字段的默认值为(或NULL)

wc.cbSize = sizeof(wc);

wc.style = CS_HREDRAW | CS_VREDRAW; // 指定当窗口横向和纵向的尺寸发生变化时都会重绘窗口

wc.hInstance = _HInstance;

wc.hbrBackground = (HBRUSH)( COLOR_APPWORKSPACE + 1); // 指定主窗口背景为“工作区域”系统颜色

wc.lpszClassName = _WindowClass; // 此为要注册的类名,创建窗口时要以此类名为标识符

wc.lpfnWndProc = _WndProc; // 此为处理窗口消息的函数

return ::RegisterClassEx(&wc); // 调用API函数注册窗口类

}

// 创建窗口

HWND _CreateWindow(int nCmdShow) {

HWND hWnd = ::CreateWindow(_WindowClass, _Title, WS_OVERLAPPEDWINDOW,

CW_USEDEFAULT, CW_USEDEFAULT, MAINWINDOW_WIDTH, MAINWINDOW_HEIGHT, NULL, NULL, _HInstance, NULL);

if(hWnd == NULL)

return NULL;

::ShowWindow(hWnd, nCmdShow);

::UpdateWindow(hWnd);

return hWnd; }

// 窗口处理过程

本文来源:https://www.bwwdw.com/article/7swd.html

Top