要创建一个Windiws窗口程序,那么它的格式都是固定的
1。设计一个窗口类 WNDCLASS
2。注册窗口类 RegisterClass
3。创建一个窗口CreateWindow
4。显示窗口 ShowWindow
5。更新窗口 UpdateWindow
6。消息循环,从消息队列中取消息
要创建一个回掉函数,用来处理相应的消息
下面是一个示例:
#include <windows.h>
#include <stdio.h>
#include <iostream.h>

LRESULT CALLBACK WinProc(
HWND hwnd, // handle to window
UINT uMsg, // message identifier
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
);


int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd )
{
//创建窗口类
WNDCLASS wndC;

wndC.cbClsExtra = 0;
wndC.cbWndExtra = 0;
wndC.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
wndC.hCursor = LoadCursor(NULL,IDC_CROSS);
wndC.hIcon = LoadIcon(NULL,IDI_ERROR);
wndC.hInstance = hInstance;
wndC.lpfnWndProc = WinProc;
wndC.lpszClassName = "WinMain_M.A.O";
wndC.lpszMenuName = NULL;
wndC.style = CS_VREDRAW | CS_HREDRAW;

//注册窗口类
RegisterClass(&wndC);

//创建窗口
HWND hWnd;
hWnd = CreateWindow("WinMain_M.A.O","我的第一个WinApp - WinMain",(WS_OVERLAPPEDWINDOW) & ~WS_MAXIMIZEBOX,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hInstance,0);


//显示窗口
ShowWindow(hWnd,SW_SHOWNORMAL);

//更新窗口
UpdateWindow(hWnd);

//消息循环
MSG msg;

while (GetMessage(&msg,NULL,0,0)) //当接收到WM_QUIT消息后退出消息循环
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}

//窗口回掉函数
LRESULT CALLBACK WinProc(
HWND hwnd, // handle to window
UINT uMsg, // message identifier
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
)
{
switch(uMsg)
{
case WM_PAINT:
HDC hDc;
PAINTSTRUCT ps;
//BeginPaint 和 EndPaint只能在消息WM_PAINT中使用
hDc = BeginPaint(hwnd,&ps);
TextOut(hDc,0,0,"这是我的第一个Win APP 程序",strlen("这是我的第一个Win APP 程序"));
EndPaint(hwnd,&ps);
break;
case WM_CHAR:
//存储接收的char
char szBuffer[100];
sprintf(szBuffer,"char is %d",wParam);
MessageBox(hwnd,szBuffer,"Reserved",MB_OK);
break;
case WM_LBUTTONDOWN:
MessageBox(hwnd,"Onclick Mouse","Onclick",MB_OK);
HDC hdc;
hdc = GetDC(hwnd);
TextOut(hdc,250,100,"^_^捕获鼠标按下消息",strlen("^_^捕获鼠标按下消息"));
ReleaseDC(hwnd,hdc);
break;
case WM_CLOSE:
if (IDYES == MessageBox(hwnd,"是否要退出程序","关闭",MB_YESNO))
{
//Post WM_DESTROY 消息
DestroyWindow(hwnd);
}
break;
case WM_DESTROY:
PostQuitMessage(0); //发送一个WM_QUIT消息,到消息队列中
break;
default:
return DefWindowProc(hwnd,uMsg,wParam,lParam);
}

return 0;
}
1。设计一个窗口类 WNDCLASS
2。注册窗口类 RegisterClass
3。创建一个窗口CreateWindow
4。显示窗口 ShowWindow
5。更新窗口 UpdateWindow
6。消息循环,从消息队列中取消息
要创建一个回掉函数,用来处理相应的消息
下面是一个示例:




































































































