#include<windows.h>
//窗口过程函数
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
//入口函数
int WINAPI WinMain(HINSTANCE hInstance,//当前实例句柄
HINSTANCE hPreInstance,//前一实例句柄
LPSTR lpCmdLine,//指向命令行参数的指针
int nCmdShow)//窗口的现实显示状态
{
//读取一个系统预设的光标
HCURSOR hCur=LoadCursorFromFile("C://WINDOWS//Cursors//dinosaur.ani");
//定义一个窗口类
WNDCLASS wndclass;
wndclass.style=CS_HREDRAW | CS_VREDRAW;
wndclass.lpfnWndProc=WndProc;
wndclass.cbClsExtra=0;
wndclass.cbWndExtra=0;
wndclass.hInstance=hInstance;
wndclass.hIcon=NULL;
wndclass.hCursor=hCur;
wndclass.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);
wndclass.lpszMenuName=NULL;
wndclass.lpszClassName="winDemo"; //类名
//注册窗口类
if(!RegisterClass(&wndclass)){
MessageBox(NULL,"fail to create winDemo","error",0);
return 0;
}
//创建这个窗口类的实例
HWND hwnd=CreateWindow("winDemo",
"winDemo",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL);
//显示和更新窗口
ShowWindow(hwnd,nCmdShow);
UpdateWindow(hwnd);
MSG msg;
//消息循环
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg); //转换某些键盘消息
DispatchMessage(&msg); //发送消息给窗口过程函数
}
return msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
//处理消息
switch(message)
{
case WM_CREATE:
MessageBox(NULL,"程序运行","消息",0);
return 0;
case WM_LBUTTONDOWN:
MessageBox(NULL,"左键单击","消息",0);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hwnd,message,wParam,lParam);
}
这个段程序是比较简单清晰的了,这也仅仅是一个基本的框架。在学习MFC的过程中,我们不能忽视了这些基本的东西,只有真正理解了消息驱动,才能写出优秀的程序。