WinX之ModalDialog背景篇

好多天不写博了,因为这两天正crack一个小程序头都大了。今天算一个段落了,再学一点WinX吧!

今天是手册的第二部分,BKGND篇。程序写上来先:

/********************************************************************
*
* 文件名称:test_bkgnd.cpp
* 摘 要:简要描述本文件的内容
*
* 当前版本:vv0.1
* 作 者:福柯
* 完成日期:2007年01月13日
*
* Copyright (c) 2007,Programming Lab.
* All rights reserved.
*********************************************************************/
#include <winx.h>
#include "resource.h"

class CHelloDlg1 : public WinX::ModalDialog<CHelloDlg1,IDD_DIALOG1>
{
           WINX_BKGND_BRUSH(BLACK_BRUSH);    //设置对话框背景的颜色
           WINX_CTLBKGND_BRUSH(CtlStatic,GRAY_BRUSH);  //设置对话框上控件的颜色

};

class CHelloDlg2 : public WinX::ModalDialog<CHelloDlg2,IDD_DIALOG1>
{
          WINX_CTLBKGND_NULL(CtlStatic);    //空刷
         WINX_BKGND_PATTERN(IDB_BITMAP1);//背景图片
};

int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
                CHelloDlg1 dlg;
                dlg.DoModal();
 
               CHelloDlg2 dlg2;
              dlg2.DoModal();

             return 0;

附加品是,要在工程里加入资源,一个Dialog ,一个bitmap。

在画图片时,设置成空刷,是起一个透明的效果,不然,自己去试试成什么样子吧!

WinX说,没有一个大的继承结构,没有大的虚表,一直不明白是怎么实现的。今天终于有了初步的理解了。

那个WINX_BKGND_BRUCH()会生成一个OnEeaseBkgnd()的成员函数。这就是说,用宏来向类里加函数。当然如果没有用这个宏,就不会有这个函数,也就不会有相应的代码了。这样做,好处是很明显的,代码量受到的控制,但会牺牲一定的灵活性。比如你不能这样写:

class CHelloDlg1 : public WinX::ModalDialog<CHelloDlg1,IDD_DIALOG1>
{
           WINX_BKGND_BRUSH(BLACK_BRUSH);    //设置对话框背景的颜色
           WINX_CTLBKGND_BRUSH(CtlStatic,GRAY_BRUSH);  //设置对话框上控件的颜色
          WINX_CTLBKGND_BRUSH(CtlButton,WHITE_BRUSH);  //让按键的背景是白色
};

这样,同样的函数会被重复定义。不过,现实中,也不一定会有这样的代码。如果要实现这个功能,以后再说吧!
不过,你可以给不同的控件指定相同的实景色,只要把控件类型用|连接就OK了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值