构建Win32 GUI代码
发布时间:2020-12-14 01:51:33 所属栏目:Windows 来源:网络整理
导读:我希望在更大的Win32项目中使用大量的窗口和控件来改进我的代码和文件结构.目前,我倾向于有一个标题和一个源文件用于窗口或对话框的整个实现.这适用于小型项目,但现在它已经到了这些实现开始达到1000-2000行的程度,这对于浏览来说很繁琐. 我的典型源文件如下
我希望在更大的Win32项目中使用大量的窗口和控件来改进我的代码和文件结构.目前,我倾向于有一个标题和一个源文件用于窗口或对话框的整个实现.这适用于小型项目,但现在它已经到了这些实现开始达到1000-2000行的程度,这对于浏览来说很繁琐.
我的典型源文件如下所示: static LRESULT CALLBACK on_create(const HWND hwnd,WPARAM wp,LPARAM lp) { setup_menu(hwnd); setup_list(hwnd); setup_context_menu(hwnd); /* clip */ return 0; } static LRESULT CALLBACK on_notify(HWND hwnd,UINT msg,LPARAM lp) { const NMHDR* header = (const NMHDR*)lp; /* At this point I feel that the control's event handlers doesn't * necessarily belong in the same source file. Perhaps I could move * each control's creation code and event handlers into a separate * source file? Good practice or cause of confusion? */ switch (header->idFrom) { case IDC_WINDOW_LIST: switch (header->code) { case NM_RCLICK: return on_window_list_right_click(hwnd,wp,lp); /* clip */ } } } static LRESULT CALLBACK wndmain_proc(HWND hwnd,LPARAM lp) { switch (msg) { case WM_CREATE: return on_create(hwnd,lp); case WM_CLOSE: return on_close(hwnd,lp); case WM_NOTIFY: return on_notify(hwnd,lp); /* It doesn't matter much how the window proc looks as it just forwards * events to the appropriate handler. */ /* clip */ default: return DefWindowProc(hwnd,msg,lp); } } 但是现在窗口有更多的控件,而这些控件又有自己的消息处理程序,然后是菜单点击处理程序,等等……我迷路了,我真的需要建议如何以一种良好而明智的方式把这个搞得一团糟. 我试图找到构建Win32代码的良好开源示例,但由于存在数百个文件,我感到更加困惑,并且在这些看起来与GUI相关的文件中,Win32 GUI代码似乎到目前为止已被封装起来.当我最终找到CreateWindowEx语句时,窗口proc无处可寻. 任何关于如何构建所有代码同时保持理智的建议将不胜感激. 谢谢! 我不希望使用任何库或框架,因为我发现Win32 API对学习很有意义且有价值. 任何有关如何构建自己的GUI代码的见解都可能成为灵感. 解决方法
对于初学者,我将在windowsx.h中查看
message crackers;他们会节省你在窗口程序中编写乏味的案例陈述,并且他们建议在函数名称中使用某种规则.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容