经典Win32–创建窗口.docVIP

  • 6
  • 0
  • 约 9页
  • 2017-08-20 发布于北京
  • 举报
windows核心编程----窗口创建 1 一、创建窗口 1 二、窗口类附加数据缓冲区 2 三、窗口附加数据缓冲区 3 四、显示窗口 6 五、消息循环 6 六、Windows常用消息 7 windows核心编程----窗口创建 一、创建窗口 windows经典机制:回调、钩子; 回调(理解):自己定义的函数,自己不掉用,交给别人调用。 钩子:优先勾取消息的权限,木马程序等。 window经典窗口程序------创建窗口并加入消息循环 // WinCreate.cpp : Defines the entry point for the application. // #include stdafx.h HINSTANCE g_hinstance = 0;//接收winMain的参数 //消息处理函数 //windows 经典机制 LRESULT CALLBACK WndProc(HWND hWnd,UINT nMsg,WPARAM wParam,LPARAM lParam) { switch(nMsg) { case WM_DESTROY: PostQuitMessage(0);//能够使GetMessage函数返回0 break; } return DefWindowProc(hWnd,nMsg,wParam,lParam); } //注册窗口类 BOOL Register (LPSTR lpClassName,WNDPROC wndProc) { WNDCLASSEX wce = {0}; wce.cbSize = sizeof(wce); wce.cbClsExtra = 0; wce.cbWndExtra = 0; wce.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); wce.hCursor = NULL; wce.hIcon = NULL; wce.hIconSm = NULL; wce.hInstance = g_hinstance; wce.lpfnWndProc = wndProc; wce.lpszClassName = lpClassName; wce.lpszMenuName = NULL; wce.style = CS_HREDRAW | CS_VREDRAW; ATOM nAtom = RegisterClassEx(wce); //返回0代表注册失败 if (nAtom == 0) { return false; } return true; } //创建主窗口 HWND CreateMain(LPSTR lpClassName,LPSTR lpWndName) { HWND hWnd = CreateWindowEx(0,/*扩展风格*/ lpClassName,lpWndName,WS_OVERLAPPEDWINDOW,CW_USEDEFAULT, CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,g_hinstance,NULL); return hWnd; } //显示窗口 void Display(HWND hWnd) { ShowWindow(hWnd,SW_SHOW); UpdateWindow(hWnd); } //消息循环 void Message() { MSG nMsg = {0}; while(GetMessage(nMsg,NULL,0,0)) { TranslateMessage(nMsg); DispatchMessage(nMsg); } } int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { // TODO: Place code here. hInstance = g_hinstance; if( !Register(Main,WndProc) ) { MessageBox(NULL,注册失败,Infor,MB_OK); return 0; } HWND hWnd = CreateMain(Main,window); Display(hWnd); Message(); return 0; } 二、窗口类附加数据缓冲区 缓冲区 int a;//这句话开了一个4字节的缓冲

文档评论(0)

1亿VIP精品文档

相关文档