创建编辑控件 WM_COMMAND消息处理

编辑控件
创建编辑控件
WM_COMMAND消息处理

上代码


```c
/*---------------------------------------------------------
	050.c	WIN32 API 每日一练
	第53个例子:编辑控件
	创建编辑控件
	WM_COMMAND消息处理
	 2023 7.13
-----------------------------------------------------------*/

#include<Windows.h>
#define ID_EDIT 1

LRESULT  CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
TCHAR szAppName[] = TEXT("Popad1");

int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hPrevInstance,
	PSTR szCmdLine, int iCmdShow)
{
	static TCHAR szAppName[] = TEXT("Colors1");//移植你更改的地方
	HWND hwnd;
	MSG msg;
	WNDCLASS wndclass;

	wndclass.style = CS_HREDRAW | CS_VREDRAW;
	wndclass.lpfnWndProc = WndProc;
	wndclass.cbClsExtra = 0;
	wndclass.cbWndExtra = 0;
	wndclass.hInstance = hinstance;
	wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
	wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
	wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
	wndclass.lpszMenuName = NULL;
	wndclass.lpszClassName = szAppName;

	if (!RegisterClass(&wndclass))
	{
		MessageBox(NULL, TEXT("this program requires Windows NT!"),
			szAppName, MB_ICONERROR);
		return 0;
	}

	hwnd = CreateWindow(szAppName, TEXT("Color-Scroll "),//更新
		WS_OVERLAPPEDWINDOW,
		CW_USEDEFAULT, CW_USEDEFAULT,
		CW_USEDEFAULT, CW_USEDEFAULT,
		NULL, NULL, hinstance, NULL);

	ShowWindow(hwnd, iCmdShow);
	UpdateWindow(hwnd);

	while (GetMessage(&msg, NULL, 0, 0))
	{
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}
	return msg.wParam;
}

LRESULT  CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	static HWND hwndEdit;

	switch (message)
	{
	case WM_CREATE:
		hwndEdit = CreateWindow(TEXT("edit"),NULL,
			WS_CHILD|WS_VISIBLE|WS_HSCROLL|WS_VSCROLL|
		WS_BORDER|ES_LEFT|ES_MULTILINE|
		ES_AUTOHSCROLL|ES_AUTOVSCROLL,
			0,0,0,0,hwnd,(HWND)ID_EDIT,
			((LPCREATESTRUCT)lParam)->hInstance, NULL);

		//老师添加的代码
		SendMessage(hwndEdit, EM_SETLIMITTEXT, 0, 1);//输入的最大文本量(TCHAR)
		return 0;

		case WM_SIZE:
			MoveWindow(hwndEdit, 0, 0, LOWORD(lParam), HIWORD(lParam), TRUE);//重新绘制编辑框
		return 0;

	case WM_SETFOCUS:
		SetFocus(hwndEdit);//设为焦点
		return 0;
		
		//来自子窗口控件
	case WM_COMMAND:
		if (LOWORD(wParam) == ID_EDIT)
		{	//编辑控件中输入的文本量的默认限制为32kb.应用程序可以通过发送_SETLIMITTEXT消息的控件
			if (HIWORD(wParam) == EN_ERRSPACE || HIWORD(wParam) == EN_MAXTEXT)//已满
			{
				MessageBox(hwnd, TEXT("Edit control out of space."),
					szAppName, MB_OK | MB_ICONSTOP);
			}
		}
		return 0;

	case WM_DESTROY:
		PostQuitMessage(0);
		return 0;
	}

	return DefWindowProc(hwnd, message, wParam, lParam);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值