WTL之手动编写框架窗口
2024-09-03 09:58:19
新版博客已经搭建好了,有问题请访问 htt://www.crazydebug.com
本人是一个实践主义者,不罗嗦上一篇工程搭建好以后,这一篇就开始写代码,写之前再说几句,如果你熟悉MFC分析过MFC框架的话,你写起来就很顺手,其实我觉得WTL手动创建一个窗口比MFC简单多了,基本道理都是相同的,细节差异而已
新建一个WIN32空项目,添加新建项 main.h main.cpp
1.在main.h中引入需要使用的头文件
#include <atlbase.h>
#include <atlapp.h> extern CAppModule _Module; #include <atlwin.h>
#include <atlframe.h>
#include <atlmisc.h>
#include <atlcrack.h>
2.框架窗口类的声明
//基本套路
class CMyWtlWindow : public CFrameWindowImpl < CMyWtlWindow>
{
public:
//创建窗口类
DECLARE_FRAME_WND_CLASS(_T("CrazyWtl"),IDI_ICON1)
//消息机制 ATL3.0必须用BEGIN_MSG_MAP_EX定义路由
//ATL7.0从CWindowImpl和CDialogImpl派生的类可以直接使用BEGIN_MSG_MAP定义消息路由
//其他消息必须以BEGIN_MSG_MAP定义消息路由
BEGIN_MSG_MAP()
//消息链,我的理解就是让父窗口帮助处理消息
CHAIN_MSG_MAP(CFrameWindowImpl<CMyWtlWindow>)
//wm_create消息
MSG_WM_CREATE(OnCreate);
END_MSG_MAP() //create函数 如果不知道我们可以右键MSG_WM_CREATE看一下类型
LRESULT OnCreate(LPCREATESTRUCT lparam)
{
MessageBox(_T("hello wtl"));
return ;
} };
程序的爆破点,类似MFC中的theApp;
CAppModule _Module;
WinMain函数,MFC连WinMain都不用写
int APIENTRY WinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance,
_In_ LPSTR lpCmdLine, _In_ int nShowCmd)
{
_Module.Init(NULL,hInstance);
CMyWtlWindow wndMain;
MSG msg;
if (NULL == wndMain.CreateEx())
return ;
wndMain.ShowWindow(SW_SHOW);
wndMain.UpdateWindow(); //消息循环
while (GetMessage(&msg, NULL, , ))
{
TranslateMessage(&msg);
DispatchMessage(&msg); }
_Module.Term();
return msg.wParam;
}
就这样吧,细节不明白的留言,我比较懒,记录的东西只是用来回头看看复习的
最新文章
- Oracle数据库的创建以及远程连接(PL/SQL Developer远程连接数据库)
- 木耳听歌记---Clip+安装Rockbox
- Linux的一些命令
- Component creation must be done on Event Dispatch Thread错误解决方法
- 【Linux高频命令专题(17)】head
- C++函数中那些不可以被声明为虚函数的函数
- java面板设计
- Knockout Mvc Compoment FrameSet
- PHP中public、protected、private权限修饰符
- SpringBoot集成Redis实现缓存处理(Spring AOP实现)
- 使用Dockerfile构建镜像
- rails中link_to与button_to的一个功能差异
- 关于k8s安装脚本方面的草稿
- Win10系统进行远程桌面连接出现身份验证错误怎么办
- java三大特性--继承
- Elasticsearch + logstash + kibana 配置
- 沧桑巨变中焕发青春活力-记极1s HC5661A 打怪升级之路
- 实现JNI的另一种方法:使用RegisterNatives方法传递和使用Java自定义类 (转)
- iOS-封装UIPickerView
- 【Python】学习笔记之列表生成式
热门文章
- Indexed (materialized) views in SQL Server,different with Oracle (materialized) views
- luogu P2774 方格取数问题
- Python 基础之面向对象类的继承与多态
- mysql学习指令
- ISAP 算法
- 【快学springboot】12.实现拦截器
- 网络协议-dubbo协议
- Kali环境使用Metasploit生成木马入侵安卓手机
- Caused by: java.net.ConnectException: Connection timed out: connect
- 生成MyEclipse6.5&;7.5&;8.5 注册机源码