windows编程之自己动手写WinMain函数
2013-12-03 17:57
357 查看
这是我参考msdn和书本自己写的窗口程序,
WinMain函数式所有windows应用程序的入口,类似C语言里的main函数,其功能是:完成一系列的定义及初始化工作,并产生消息循环。消息循环是整个程序运行的核心 。
WinMain函数主要实现以下功能:
1.注册窗口类,建立窗口,执行其他必要的初始化的操作;
2.进入消息循环,根据从应用程序消息队列接受的消息,调用相应的处理过程;
3.当消息循环检索到WM_QUIT消息时,终止程序运行。
代码如下:
总结:
感觉自己动手写窗口是有点难度的,因为写的不多,很多东西没记住,都要自己去查资料。
WinMain函数式所有windows应用程序的入口,类似C语言里的main函数,其功能是:完成一系列的定义及初始化工作,并产生消息循环。消息循环是整个程序运行的核心 。
WinMain函数主要实现以下功能:
1.注册窗口类,建立窗口,执行其他必要的初始化的操作;
2.进入消息循环,根据从应用程序消息队列接受的消息,调用相应的处理过程;
3.当消息循环检索到WM_QUIT消息时,终止程序运行。
代码如下:
#include<windows.h> #include<stdio.h> LRESULT CALLBACK WndProc( HWND hwnd, // handle to window UINT uMsg, // message identifier WPARAM wParam, // first message parameter LPARAM lParam // second message parameter ); int WINAPI WinMain( HINSTANCE hInstance, // handle to current instance HINSTANCE hPrevInstance, // handle to previous instance LPSTR lpCmdLine, // command line int nCmdShow // show state ) { WNDCLASS wndclass; wndclass.cbClsExtra = 0; wndclass.cbWndExtra = 0; wndclass.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH); wndclass.hCursor = LoadCursor(NULL, IDC_ARROW); wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION); wndclass.hInstance = hInstance; wndclass.lpfnWndProc = WndProc; wndclass.lpszClassName = "我的窗口"; wndclass.lpszMenuName = NULL; wndclass.style = CS_HREDRAW | CS_VREDRAW; RegisterClass(&wndclass); //注册窗口类 HWND hwnd; hwnd = CreateWindow("我的窗口", "窗口", WS_OVERLAPPEDWINDOW, 0, 0, 640, 480, NULL, NULL, hInstance, NULL); ShowWindow(hwnd, SW_SHOWNORMAL); UpdateWindow(hwnd); MSG Msg; while(GetMessage(&Msg, NULL, 0, 0)) { TranslateMessage(&Msg); DispatchMessage(&Msg); } return 0; } LRESULT CALLBACK WndProc( HWND hwnd, // handle to window UINT uMsg, // message identifier WPARAM wParam, // first message parameter LPARAM lParam // second message parameter ) { switch(uMsg) { case WM_CHAR: char strChar[20]; sprintf(strChar, "char is %d", wParam); MessageBox(hwnd, strChar, "window", MB_OK); break; case WM_LBUTTONDOWN: MessageBox(hwnd, "mouse left-click", "window", MB_OK); HDC hdc; hdc = GetDC(hwnd); TextOut(hdc, 0, 50, "hello mouse left-click", strlen("hello mouse left-click")); ReleaseDC(hwnd, hdc); break; case WM_RBUTTONUP: MessageBox(hwnd, "release mouse", "window", MB_OK); hdc = GetDC(hwnd); TextOut(hdc, 0, 80, "hello release mouse", strlen("hello release mouse")); ReleaseDC(hwnd, hdc); break; case WM_CLOSE: PostQuitMessage(0); break; case WM_DESTROY: DestroyWindow(hwnd); break; default: return DefWindowProc(hwnd, uMsg, wParam, lParam); } return 0; }
总结:
感觉自己动手写窗口是有点难度的,因为写的不多,很多东西没记住,都要自己去查资料。
相关文章推荐
- 从零开始,学习windows编程(8)--自己动手,编译CRT
- 从零开始,学习windows编程(8)--自己动手,编译CRT
- Windows编程原理及自己动手写计算器
- 从零开始,学习windows编程(8)--自己动手,编译CRT
- 自己动手“数据恢复编程、数据恢复软件开发”- NTFS扫描恢复通用库
- 自己动手编译Windows版的OpenJDK 7
- linux系统编程:自己动手写一个who命令
- linux系统编程:自己动手写一个cp命令
- 基于visual c++之windows核心编程代码分析(64)现有的exe文件中添加自己的代码
- 自己动手搭建Nginx+memcache+xdebug+php运行环境绿色版 For windows版
- 基于visual c++之windows核心编程代码分析(64)现有的exe文件中添加自己的代码
- 自己动手,丰衣足食。普通键盘实现键盘宏(Windows和Mac版)
- 6.3.2自己动手写windows调试器(加强版)
- [置顶] 自己动手编程 :双向气泡排序
- 自己动手打造WEB服务器 Windows + Apache + PHP + MySQL
- 关于Windows编程(MFC、API等 自己明白就可)向窗口写内容不能立即显示的问题
- 自己动手搭建Nginx+memcache+xdebug+php运行环境绿色版 For windows版
- 自己动手写一个简单的Windows shell扩展程序
- dll文件32位64位检测工具以及Windows文件夹SysWow64的坑(很详细,还有自动动手编程探测dll)
- 自己动手写一个简单的Windows shell扩展程序