如何实现Custom Control?如何进行可视化开发?

news/2024/7/7 7:06:37

这里,我们要回答smithfox在winx论坛上提的第一个问题: 在WINX内,怎么写一个Custom Control,也就是说自己实现Paint的Control。

其实,winx不只是可以实现自定义控件,而且允许你将这些控件直接放到对话框中,就如你放置一个Static、Button、Edit等等标准控件一样。winx的tutorials中有专门的demo告诉你如何作到这一点。

虽然目前没有专门针对WINX的可视化开发软件,但是你可以在Visual Studio中使用WINX进行半可视的开发。 winx支持三类自定义控件(Custom Control):

1)完全自定义的控件(通常从winx::Window派生)。代码参考:
tutorials/winx/step004-user-ctrl/1.basic/hello.cpp

2)从现有控件派生(通常从现有控件类winx::Static、winx::Button、winx::Edit等派生),对现有控件进行细节上的行为修改。代码参考:
tutorials/winx/step004-user-ctrl/2.superclass/hello.cpp

3)通过多种现有控件组合出一个复杂的自定义控件。如何做到这一点?
其实,有一个与Delphi之Form类似的概念,就是非模态对话框(Modaless Dialog)。所以,这一类控件我们通常从winx::ModalessDialog派生。这样,你就利用Visual Studio的对话框编辑器,进行这类复杂的自定义控件的可视化开发。代码参考:
tutorials/winx/step004-user-ctrl/3.superdialog/hello.cpp

看了这几个demo,并尝试过运行这些demo的人,多多少少会有magic的感觉。让人感到疑惑的主要是,“这些自定义控件是如何被创建出来的?”

的确,在代码中,你看不到创建自定义自定义控件的代码。这就如你看不到标准控件(如Static、Button等)的创建代码一样。——在点到这一点后,灵光在你心中一闪:是的,你猜得没错,这些自定义控件和标准控件一样,是对话框加载对话框资源后自动创建的。

Visual Studio的对话框编辑器除了标准控件如Static、Button、Edit等外,还有一个特殊的控件,叫Custom Control。插入该控件,并且将Class设为要创建的控件类的类名(也就是你实现窗口类时通过WINX_CLASS指定的)。如下图(我们假设WINX_CLASS为“MyView”):


这样,对话框加载资源后,就明白需要创建一个窗口类类名为“MyView”的窗口。正因为这样,所以“MyView”这个窗口类需要在对话框生成之前注册(RegisterClass)。

——现在,你已经明白,我为什么说,WINX特别强调窗口类以及注册窗口类的概念。因为,WINX区别与传统界面库(WTL/ATL、MFC等等)的另一个显著特征是,WINX中的用户自定义控件(Custom Control)与标准控件一样,是可以直接放到对话框上创建的。这很有趣。你认为呢?





http://www.niftyadmin.cn/n/3654700.html

相关文章

java项目集成J2Cache(基于内存和 Redis 的两级 Java 缓存框架)

一、概述 SpringCache本身是一个缓存体系的抽象实现,并没有具体的缓存能力,要使用SpringCache还需要配合具体的缓存实现来完成。 虽然如此,但是SpringCache是所有Spring支持的缓存结构的基础,而且所有的缓存的使用最后都要归结于…

WINX支持DirectX,OpenCV吗?

偶尔也会听到这样的一些疑问:WINX支持DirectX,OpenCV吗?也会听到SmartWin支持OpenCV这样的说法。下面我们分析一下这个问题。我们知道,库之间共存的障碍,主要有以下几点:其一:编译期的符号(指类…

股票技术指标详解--顺势指标(CCI)

来源:http://wma.cmbchina.com/education/stock/index/cci.htm 顺势指标(CCI) 一、顺势指标 该指标用来测量股价脱离正常价格范围之变异性,正常波动范围在100之间。属于超买超卖类指标中较特殊的一种,是专门对付极端行情的。在一般常态行情…

WINX中使用OpenCV的一个样例

上一篇我们谈到WINX与其他库共存的问题。空口无凭,我们这里就给出一个WINX中使用OpenCV的样例。数字图像的直方图均衡化是常用的图像增强方法。这个样例本身的源代码取之:数字图像的直方图均衡化(C/C源代码)。作者HUNNISH&#xf…

Kryo 高性能序列化和反序列化

一、pom.xml <dependency><groupId>com.esotericsoftware</groupId><artifactId>kryo</artifactId><version>4.0.0</version> </dependency>二、封装工具类 package com.cxs.web.system.kryo;import com.cxs.common.util.Ar…

股票技术指标详解--人气指标(AR)

人气指标(AR) 一、人气指标 股市中买卖双方的气势主要反映在每日股指最高点、最低点及开盘价三者之间的关系上。AR指标是利用一定周期内三者的差异以及比值反映出股市强弱、买卖气势的指标。 二、公式 AR(n)∑&#xff08;当日最高价&#xff0d;当日开盘价&#xff09;∑&…

WINX-1.1.01 Released

修订记录 1.1.01 (2006-10-14)-----------------------------------------*) 示范代码&#xff08;tutorials&#xff09;- Hello, SmartWin! tutorials/winx/step001/hello,smartwin (a)- XSL转换(XSLT) tutorials/winx/step018-xslt (b)- 直方图均衡化(OpenCV样例) tutorials…

如何让 HTML识别 String 里的 ‘\r\n‘ 并成功换行显示

在结果所在的 div 的 css 设置&#xff1a; white-space: pre-line;如&#xff1a; <span style"white-space: pre-line;">文本内容 </span>然后页面就能成功识别 ‘\r\n’ 或 ‘\n’ &#xff0c;并换行显示.