博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
win32 DirectUI控件开发与调用指南
阅读量:4921 次
发布时间:2019-06-11

本文共 1918 字,大约阅读时间需要 6 分钟。

  相较于win32/mfc,directui(win32)更加轻量化,在开发方式上更加现代化,使得其在c++应用方面成为主流,官方中提到了可以开发控件(插件),也就是说新的库可以不写在dui里,而独立出来。研究了许久终于知道如何玩,故此总结一下:

一、创建Dui DLL控件库

  使用vc或vs创建一个win32 dll类型的项目,头文件PriceTableUI.h如下:

#pragma onceclass DuiLib_API PriceTableUI : public CContainerUI//注意要导出类 {public:	PriceTableUI();	~PriceTableUI();	LPCTSTR GetClass() const;	LPVOID GetInterface(LPCTSTR pstrName);	void DoEvent(TEventUI& event);	void PaintText(HDC hDC);};

  对应的代码PriceTableUI.cpp如下:

#include "StdAfx.h"#include "PriceTableUI.h"PriceTableUI::PriceTableUI(){}PriceTableUI::~PriceTableUI(){}LPCTSTR PriceTableUI::GetClass() const{	return _T("PriceTableUI");}LPVOID PriceTableUI::GetInterface( LPCTSTR pstrName ){	if( _tcscmp(pstrName, _T("PriceTable")) == 0 )		return static_cast
(this); return CControlUI::GetInterface(pstrName);}void PriceTableUI::DoEvent( TEventUI& event ){ if( event.Type == UIEVENT_SETFOCUS ) { m_bFocused = true; return; } if( event.Type == UIEVENT_KILLFOCUS ) { m_bFocused = false; return; } if( event.Type == UIEVENT_MOUSEENTER )//鼠标进入控件 { return; } if( event.Type == UIEVENT_MOUSELEAVE )//鼠标离开控件 { return; } //其它事件(消息)go to 到dui里自己看了 CControlUI::DoEvent(event);}void PriceTableUI::PaintText( HDC hDC ){ RECT rect = m_rcPaint; HBRUSH redHBrush = CreateSolidBrush(RGB(255,0,0)); FillRect(hDC,&rect,redHBrush); TextOut(hDC,rect.left,rect.top,"china mobile",strlen("china mobile"));}

  为了简化,这个示例没有对基类函数进一步实现,有需求自行去dui库里复制过来或者自己扩展即可。

二、在主程序中定向自定义控件

  ControlEx.h如下:

#pragma once#include "stdafx.h"class CDialogBuilderCallbackEx : public IDialogBuilderCallback{public:	CControlUI* CreateControl(LPCTSTR pstrClass) 	{		if( _tcscmp(pstrClass, "PriceTable") == 0 )			return new PriceTableUI;		return NULL;	}};

三、调用控件

  如此,即可在dui的xml界面文件里使用<PriceTable />或在程序中调用,比如:

  PriceTableUI* table=static_cast<PriceTableUI*>(m_pm.FindControl("table1"));

 

转载于:https://www.cnblogs.com/chuncn/archive/2012/03/23/2413082.html

你可能感兴趣的文章
调用第三方物流公司API即时查询物流信息
查看>>
classifier in maven
查看>>
Jetson TX2介绍
查看>>
意见汇总
查看>>
【Golang 接口自动化07】struct转map的三种方式
查看>>
FPGA学习之串口组合
查看>>
Code Complete-13/7/23
查看>>
jmeter脚本中请求参数获取的几种方式
查看>>
java中的抽象类
查看>>
no.13如何通俗易懂理解区块链读后感
查看>>
C#基础拾遗系列之一:先看懂IL代码
查看>>
图上的文章(割点和桥)
查看>>
luogu1092虫食算(未AC,待续中~~~)
查看>>
Ghostscript 中 ps2pdf 命令在 windows msys 下的运行错误问题。
查看>>
cf 613E - Puzzle Lover
查看>>
SQL Server--导入和导出向导
查看>>
python 数据类型
查看>>
05-linux文件属性-硬链接-时间戳
查看>>
2015-2016 ACM-ICPC, Central Europe Regional Contest (CERC 15)
查看>>
malloc 实现二维数组
查看>>