利用 CStatic 开发自绘控件

        棋牌休闲大厅客户端因采用MFC而不是用DX来做UI。因为MFC中对于自绘控件弄得比较麻烦,在研究了一段图片按钮和一些自绘控件后,我打算用CStatic做基类进行派生写一些自已用的界面控件。因为以前自已写过DX下的UI系统。所以思路还是清楚的。毕竟这些类比DX那一套还是要简单许多。

        我用CStatic开发的分状态(鼠标移过,按下,抬起)的CButton和CTabCtrl.

选项按钮横向排列

点击第一个选项按钮后显示第一个自绘窗体(蓝色CStatic)

点击第二个选项按钮后显示第二个自绘窗体(红色CStatic)

选项按钮纵向排列

        1。CEXUserCtrl: public CStatic 

              此类中有一个成员对象CBitmap m_BKBmp;

             我们为其增加相应的函数设置导入的图片。并提供参数切分的数量。代表状态数量。

          

          比如此图. 201*24.其实就是每个状态要截取图中矩形大小67*24;

          在MouseMove,LButtonDown,LButtonUp等消息中处理状态值。

         在WM_PAINT中跟据状态值不同将BMP的DC上的相应矩形Blt到窗体DC上即可。

         其实仔细想想,普通按钮。RadioButton,CheckButton都可以做到。

         2。TabCtrl:

由CStatic派生一个CMyTabCtrl

首先建立一个子项结构,来将选项按钮与对应显示页联系起来:

struct SMyTabItem
{
 int    mIndex;  //索引
 int    mLeft;  //左
 int    mTop;  //上
 int    mWidth;  //宽
 int    mHeight; //高
 CWnd*   pChildWnd; //要显示的子页
 CEXUserCtrl* pItemLabel; //子项Label  
}
;

在类中加入

//Tab的Item信息
 vector<SMyTabItem> m_TabItemInfo;

 //排列类型,横向排还是竖向排
 int m_TabType;
 //当前选择项
 int m_Selected;

//初始化
 void SetupTab(int vType);
 //加入一个选项
 void AddANewItem(char *szBmpFile,COLORREF vColorKey,DWORD vItemID,CWnd* vpShowWin,CWnd* vParentWnd);

大体思路就是通过对子项数据的管理来ShowWindow或HideWindow.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

火云洞红孩儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值