基于DirectUI搭建Windows窗体程序

使用DirectUI需要directuiCom.dll,包含IDirectUI.h和DirectuiDef.h。在你的应用程序中初始化CLSID_DirectUI,并获取IDirectUI(IID_IDirectUI)接口。具体初始化方式可以参考官网示例。DirectUI的界面定义分为xml + script。xml定义界面的布局、样式、资源。script文件定义相关消息的映射处理,并通过Window.OnSkinCmd转发相应的消息到指定的函数。假设这里你使用的技术是ATL,DirectUI定义了WM_SKIN_COMMAND消息,你可以添加对应的MESSAGE_HANDLER:

MESSAGE_HANDLER(WM_SKIN_COMMAND, OnSkinCommand)

在OnSkinCommand的时候转发由script中通过OnSkinCmd发送的消息:

1 LRESULT OnSkinCommand(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) {
2   SendMessage(WM_COMMAND, wParam, lParam);
3 
4   return 0;
5 }

假设在你对应的xml中有一个button按钮,在script中添加了对应的处理函数:

1 function btnClick::onClick(cx, cy) {
2   Window.OnSkinCmd(100, 0);
3 }

在你的任意头文件中定义btnClick的标识,比如:

#define IDC_BTNCLICK 100

在消息映射中添加一个COMMAND_ID_HANDLER:

COMMAND_ID_HANDLER(IDC_BTNCLICK, OnBtnClickClick)

这样你原来基于ATL编写的消息处理器依然可以被继续使用,而UI的技术就可以尝试使用DirectUI。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值