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

这里,我们要回答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)与标准控件一样,是可以直接放到对话框上创建的。这很有趣。你认为呢?

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值