3.3.1 WTL的使用第一个Frame程序

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;
}



效果

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天晨。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值