从WinMain开始
- 抽象渗漏法则(摘自Joel)
- 针对Windows GUI编程的封装
- 只用API函数创建GUI程序
- WinMain函数
- 登记自己的窗口类
- 创建主窗口
- 消息循环
- 完整的示例代码
而针对Windows的GUI编程,有很多封装,如VCL、MFC、WTL等,凡此种种,都把WinMain、CreateWindow和 RegisterClassEx这些API与程序员隔离开来,对一个一开始就只接触这些类库的初学者来说,根本不知道原来一个Windows程序的入口点 其实是WinMain(事实上,一个Win32 EXE的入口点也并不是WinMain,而是编程语言的Runtime库,不过,这里把它抽象掉似乎更有益于理解)。
1、WinMain()函数
int WINAPI WinMain( HINSTANCE hInstance, //程序当前实例的句柄,以后随时可以用GetModuleHandle(0)来获得 HINSTANCE hPrevInstance, //这个参数在Win32环境下总是0,已经废弃不用了 char * lpCmdLine, //指向以\0结尾的命令行,不包括EXE本身的文件名, //以后随时可以用GetCommandLine()来获取完整的命令行 int nCmdShow //指明应该以什么方式显示主窗口);
- 用RegisterClassEx函数登记一个独一无二的Class
- 用CreateWindowEx函数创建一个主窗口
- 进入一个”消息循环“,直到收到WM_QUIT消息
- 从WinMain函数返回
WINAPI HINSTANCE HINSTANCE cmdShow cmdShow stdostringstream msg msg msg MB_OK MB_ICONSTOP
2、窗口消息回调函数
LRESULT CALLBACK HWND wnd UINT msg WPARAM wParam LPARAM lParam msg WM_DESTROY wnd msg wParam lParam
3、登记窗口类
WNDCLASSEX wce wcecbSize wce wcestyle CS_VREDRAW CS_HREDRAW wcelpfnWndProc onMainWndMessage wcehInstance wcehIcon IDI_WINLOGO wcehCursor IDC_ARROW wcehbrBackground HBRUSHCOLOR_BTNFACE wcelpszClassName CLASS_NAME wcehIconSm wcehIcon wce
4、创建主窗口
5、消息循环
MSG msg msg msgmsg msgwParam
CLASS_NAME LRESULT CALLBACK HWND wnd UINT msg WPARAM wParam LPARAM lParam msg WM_DESTROY wnd msg wParam lParam WNDCLASSEX wce wcecbSize wce wcestyle CS_VREDRAW CS_HREDRAW wcelpfnWndProc onMainWndMessage wcehInstance wcehIcon IDI_WINLOGO wcehCursor IDC_ARROW wcehbrBackground HBRUSHCOLOR_BTNFACE wcelpszClassName CLASS_NAME wcehIconSm wcehIcon wce cmdShow HWND mainWnd CLASS_NAME WS_OVERLAPPEDWINDOW CW_USEDEFAULT CW_USEDEFAULT CW_USEDEFAULT CW_USEDEFAULT mainWnd mainWnd cmdShowmainWnd MSG msg msg msgmsg msgwParam WINAPI HINSTANCE HINSTANCE cmdShow cmdShow stdostringstream msg msg msg MB_OK MB_ICONSTOP
转载来自:[url]http://blog.csdn.net/seawave/archive/2006/10/18/1338879.aspx[/url]
转载于:https://blog.51cto.com/suxiangjuner/148436
从WinMain开始相关推荐
- undefined reference to 'WinMain@16' 的四种情况
undefined reference to 'WinMain@16' 意思为提示找不到 WinMain 函数,WinMain是windows程序的入口函数,有几种可能: int main() 写成了 ...
- 无法解析的外部符号 WinMain,该符号在函数 int __cdecl invoke_main(void) (?invoke_main@@YAHXZ) 中被引用
无法解析的外部符号 WinMain,该符号在函数 "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ) 中被引用 (2)项目- ...
- VS2022 C28251 WinMain批注不一致的解决方法
警告 C28251 "WinMain"的批注不一致: 此实例包含 无批注. #include <windows.h>int WINAPI WinMain(_In_ HI ...
- QT源码解析(一) QT创建窗口程序、消息循环和WinMain函数
版权声明 请尊重原创作品.转载请保持文章完整性,并以超链接形式注明原始作者"tingsking18"和主站点地址,方便其他朋友提问和指正. QT源码解析(一) QT创建窗口程序.消 ...
- c语言Winmain 错误,C语言编译错误 undefined reference to `WinMain@16'
1.把主函数 main() 写成了mian() 2.没写主函数main() 3.建的不是控制台应用程序 console application 4.[code] #include int main() ...
- 1.封装WinMain至动态链接库
1.封装WinMain至动态链接库 DND的前言: DND是定位于Windows平台的2d游戏引擎,使用C++和DirectX 11实现,编译器使用vs2015.保留了一些3d功能,适合做一些pc上的 ...
- [转载]_tmain main wmain WinMain
在visual c++ 2008 中,当选择编辑一个32位Win32控制台应用程序时. 初始状态下系统自带函数: int _tmain(int argc, _TCHAR* argv[]) { ...
- strtok函数取WinMain的参数
WinMain函数与main函数不同,main可以从argc得到函数个数,然后从argv[]数组里取参数. 而WinMain函数取参数是通过lpCmdLine,lpCmdLine里不能得到参数的个数. ...
- WinMain中的Console与main中的Window
1.如何在WinMain中创建一个Console. 调用AllocConsole分配一个Console资源:调用GetStdHandle获得OS的标准设备(输入,输出或错误),此函数返回一个句柄,若要 ...
最新文章
- Maple Warrior 个人简历
- 顶级项目管理工具 Top 10
- java保持运行_保持Java程序无限运行的方法是有效的吗?
- ZZULIOJ 1125: 上三角矩阵的判断
- 小齐是如何提高自己的「编程能力」的?
- 【数据库系统设计】关系数据理论(函数依赖、码、范式、模式分解)
- Go 编码建议——功能篇
- JavaScript常见鼠标事件与用法分析
- L298N电机驱动模块详解
- network secruity studay day3
- 《社会动物——爱、性格和成就的潜在根源》读后感及摘录(3)
- 通过经纬度计算两点间的直线距离
- Excel公式向导,不会函数也可以单条件求平均值
- 淘宝标题可以改吗 淘宝标题优化技巧方法有哪些
- 推荐5款Windows桌面效率工具
- echarts柱状图 双柱状图基本用法
- Flask源码阅读-第四篇(flask\app.py)
- 数字电子技术实验作业(10)
- 计算机网络思科考试答案参考--网络应用通信考试
- CSS Text Style || CSS文本样式