常见的消息

//常见消息
WM_DESTORY

WM_SYSCOMMAND

WM_CREATE

WM_SIZE

WM_QUIT //不需要程序员处理

#include <windows.h>
#include <stdio.h>
HANDLE g_hOutput = 0;//接收标准输出句柄
void OnCreate(HWND hWnd,LPARAM lParam)
{
	CREATESTRUCT* pcs = (CREATESTRUCT*)lParam;
	char* pszText = (char*)pcs->lpCreateParams;
	MessageBox(NULL, pszText, "Infor", MB_OK);

	CreateWindowEx(0, "EDIT", "hello", WS_CHILD | WS_VISIBLE | WS_BORDER, 200, 200, 100, 100, hWnd, NULL, 0, NULL);
}

void OnSize(HWND hWnd,LPARAM lParam)
{
	short nWidth = LOWORD(lParam);
	short nHight = HIWORD(lParam);
	char szText[256] = { 0 };
	sprintf_s(szText,256, "WM_SIZE: 宽:%d,高:%d\n", nWidth, nHight);
	WriteConsole(g_hOutput, szText, strlen(szText), NULL, NULL);
}

LRESULT CALLBACK WndProc(HWND hWnd, UINT msgID, WPARAM wParam, LPARAM lParam)
{
	switch (msgID)
	{
	case WM_CREATE:
		OnCreate(hWnd, lParam);
		break;
	case WM_SIZE:
		OnSize(hWnd, lParam);
		break;
	case WM_DESTROY:
		PostQuitMessage(0);
		break;
	case WM_SYSCOMMAND:
		//MessageBox(hWnd, "WM_SYSCOMMAND", "Infor", MB_OK);
		//return 0;
		if (wParam == SC_CLOSE)
		{
			int nRet = MessageBox(hWnd, "是否退出", "Infor", MB_YESNO);
			if (nRet == IDYES)
			{
				//什么都不写
			}
			else
			{
				return 0;
			}
		}
		break;
	}
	return DefWindowProc(hWnd, msgID, wParam, lParam);//微软提供的消息处理函数,可以给所有消息做处理。
}

//入口函数
int CALLBACK WinMain(HINSTANCE hIns,HINSTANCE hPreIns,LPSTR IpCmdLine,int nCmdShow)
{
	AllocConsole();//增加dos窗口
	g_hOutput = GetStdHandle(STD_OUTPUT_HANDLE);

	//注册窗口类
	WNDCLASS wc = { 0 };
	wc.cbClsExtra = 0;
	wc.cbWndExtra = 0;
	wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
	wc.hCursor = NULL;
	wc.hIcon = NULL;
	wc.hInstance = hIns;
	wc.lpfnWndProc = WndProc;

	wc.lpszClassName = "Main";
	wc.lpszMenuName = NULL;
	wc.style = CS_HREDRAW | CS_VREDRAW;
	RegisterClass(&wc);//将以上赋值全部写入系统内核

	//在内存创建窗口
	char pszText[] = "hello data";//自定义数据
	HWND hWnd = CreateWindowEx(0, "Main", "window", WS_OVERLAPPEDWINDOW, 100, 100, 500, 500, NULL, NULL, hIns, pszText);


	//注册窗口类
	wc.cbClsExtra = 0;
	wc.cbWndExtra = 0;
	wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
	wc.hCursor = NULL;
	wc.hIcon = NULL;
	wc.hInstance = hIns;
	wc.lpfnWndProc = DefWindowProc;//微软提供的消息处理函数,可以给所有消息做处理。

	wc.lpszClassName = "Child";
	wc.lpszMenuName = NULL;
	wc.style = CS_HREDRAW | CS_VREDRAW;
	RegisterClass(&wc);

	//创建子窗口
	HWND  hChild1 =  CreateWindowEx(0, "Child", "c1", WS_CHILD | WS_VISIBLE | WS_OVERLAPPEDWINDOW, 0, 0, 100, 100, hWnd, NULL, hIns, NULL);

	HWND  hChild2 = CreateWindowEx(0, "Child", "c1", WS_CHILD | WS_VISIBLE | WS_OVERLAPPEDWINDOW, 100, 100, 100, 100, hWnd, NULL, hIns, NULL);

	//显示窗口
	ShowWindow(hWnd, SW_SHOW);
	UpdateWindow(hWnd);

	//消息循环
	MSG nMsg = { 0 };
	while (GetMessage(&nMsg, NULL,0,0))
	{
		TranslateMessage(&nMsg);
		DispatchMessage(&nMsg);//将消息给窗口处理函数来处理
	}
	return 0;

}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值