zoukankan      html  css  js  c++  java
  • 基于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。

  • 相关阅读:
    IOS开发——01_第一个OC程序
    01_iOS开发需要准备什么?
    正则表达式随笔
    .net4.6版本前设置window子窗口位置主窗口闪烁
    [CF1486D] Max Median
    [CF1487D] Pythagorean Triples
    [CF1487E] Cheap Dinner
    [CF1490E] Accidental Victory
    [CF1490F] Equalize the Array
    [CF1490G] Old Floppy Drive
  • 原文地址:https://www.cnblogs.com/junchu25/p/2633468.html
Copyright © 2011-2022 走看看