1 安装WTL
在 工具 ->NuGet包管理器->管理解决方案的NuGet程序包 然后搜索WTL安装
如图所示
或者自己进行下载源码 然后添加到包含目录
2 进行编写
资源
添加类似加速器的图标,
并且改ID为IDR_MAINFRAME
代码
#include <iostream>
#include <atlbase.h>
#include <atlapp.h>//基本WTL类
#include <atlwin.h>
#include <atlframe.h>//WTL的主框架类
#include <atlmisc.h>//WTL的工具类
#include <atlcrack.h>//WTL的增强消息宏
#include "resource.h"
using namespace std;
//在WinUser.h里面 或者 查询微软文档 F1
//代表窗口风格
CComModule gModule;
//WTL 一种轻量级的MFC
class CTianCWin :public CFrameWindowImpl<CTianCWin>//自带销毁 放大 等消息
{
public:
DECLARE_FRAME_WND_CLASS(_T("TianChen WTL Window"), IDR_MAINFRAME)
//有些有EX的宏对消息进一步解释
BEGIN_MSG_MAP_EX(CTianCWin)
MSG_WM_CREATE(OnCreate)
CHAIN_MSG_MAP(CFrameWindowImpl<CTianCWin>)//父类的也加到消息循环列表里面
END_MSG_MAP()
LRESULT OnCreate(LPCREATESTRUCT lpcs)
{
//TODO :其他处理
SetMsgHandled(false);
CenterWindow();
return TRUE;
}
};
int WINAPI _tWinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPTSTR lpCmdLine,int nCmdSHow)
{
HRESULT hRes = gModule.Init(NULL, GetModuleHandle(NULL));//因为是命令行没有句柄
if (hRes != 0)
{
cout << hRes << endl;
}
CTianCWin win;
HWND hwnd = win.CreateEx();//Create(NULL, TianchenWin::rcDefault, _T("Tian Chen Window"))
if (hwnd == NULL)
{
cout << "create window failed\r\n";
}
win.ShowWindow(nCmdSHow);
win.UpdateWindow();
MSG msg;
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
gModule.Term();
return 0;
}