CTabCtrl标题栏颜色改变以及tab换成自己按钮及内嵌对话框用法
来源:互联网 发布:淘宝网店忘记了怎么办 编辑:程序博客网 时间:2024/06/05 05:53
CTabCtrl本次用途:CTabCtrl用来实现同一个DLG加载多个DLG功能,即在A对话框中可以通过标签将BCDE。。。对话框嵌入进来。
问题1:原对话框有底色,如何使得整个对话框颜色统一?
解决办法,继承CTabCtrl,重载OnEraseBkgnd函数。当然VC6通过ctrl+W加入。内容如下:
CBrush br(RGB(245,255,255));
CRect rc;
GetClientRect(rc);
pDC->FillRect(rc, &br);
return true;
在主对话框中使用继承的类来进行对象实例化。Then.Perfect!
问题2:Tab标签丑陋,希望加入自己绘制的按钮?
解决办法:在对话框中加入tabCtrl,实例化对象,改为上面描述的类。在OnInitDialog方法内。需要几个标签创建几个按钮,下面代码为m_BTN1-4,内嵌对话框,首先将style改为child,然后下文中m_tab_1-3为3个不同对话框在该类中的成员变量。最后将按钮移入该放入的位置.
CRect rs;
m_tab.GetClientRect(&rs);
rs.top+=32;
rs.bottom-=0;
rs.left+=0;
rs.right-=0;
m_tab.InsertItem(0,"");
m_tab.InsertItem(1,"");
m_tab.InsertItem(2,"");
m_tab.InsertItem(3,"");
m_tab_1.Create(IDD_Login,&m_tab);//或者Create(IDD_DIALOG1,GetDlgItem(IDC_TAB1));
m_tab_2.Create(IDD_Search,&m_tab);
m_tab_3.Create(IDD_BBS,&m_tab);
m_tab_1.MoveWindow(&rs);
m_tab_2.MoveWindow(&rs);
m_tab_3.MoveWindow(&rs);
m_tab_1.ShowWindow(true);
m_tab_2.ShowWindow(false);
m_tab_3.ShowWindow(false);
m_BTN1.LoadBitmaps(IDB_TOPLOGIN,IDB_TOPLOGIND,NULL,IDB_TOPLOGIND);
m_BTN2.LoadBitmaps(IDB_TOPSer,IDB_TOPSerD,IDB_TOPSerF,IDB_TOPSerD);
m_BTN3.LoadBitmaps(IDB_TOPBBS,IDB_TOPBBSD,IDB_TOPBBSF,IDB_TOPBBSD);
m_BTN4.LoadBitmaps(IDB_TOPBUY,IDB_TOPBUYD,NULL,IDB_TOPBUYD);
CRect rectItem;
for(int j=0; j< m_tab.GetItemCount();j++)
{
m_tab.GetItemRect(j, rectItem);
rectItem.top=75;
rectItem.bottom=105;
switch(j){
case 0:
m_BTN1.MoveWindow(rectItem);
break;
case 1:
m_BTN2.MoveWindow(rectItem);
break;
case 2:
m_BTN3.MoveWindow(rectItem);
break;
case 3:
m_BTN4.MoveWindow(rectItem);
break;
}
添加按钮响应函数:如下发送消息来切换内嵌对话框
m_tab.SetCurSel(2);
NMHDR nm;
nm.hwndFrom = m_tab.m_hWnd;
nm.code = TCN_SELCHANGE;
SendMessage(WM_NOTIFY,IDC_TAB1,(LPARAM)&nm);
添加OnSelchangeTab1:
switch(m_tab.GetCurSel())
{
case 0:
if(IsLogin){
break;
}
m_tab_1.ShowWindow(true);
m_tab_2.ShowWindow(false);
m_tab_3.ShowWindow(false);
break;
case 1:
if(!IsLogin){
break;
}
m_tab_1.ShowWindow(false);
m_tab_2.ShowWindow(true);
m_tab_3.ShowWindow(false);
break;
case 2:
if(!IsLogin){
break;
}
m_tab_1.ShowWindow(false);
m_tab_2.ShowWindow(false);
m_tab_3.ShowWindow(true);
break;
}
*pResult = 0;
- CTabCtrl标题栏颜色改变以及tab换成自己按钮及内嵌对话框用法
- UINavigationcontrollerBar,UIbarButtonItem按钮以及backButton背景及背景颜色改变
- 标签控件Tab Control以及CTabCtrl类
- 改变导航栏上面系统自己带的返回按钮及颜色
- MFC对话框标题栏颜色自绘,标题栏由过渡色组成,自绘关闭按钮
- VC++6.0改变按钮颜色及文字颜色(1)
- VC6.0 改变按钮颜色及文字颜色(2)
- VC6.0改变按钮颜色及文字颜色(3)
- 动态改变CTabCtrl上的对话框(恢复初始状态)
- MFC改变标题栏的颜色
- Android改变标题栏背景颜色
- 滑动改变标题栏的颜色
- vc中改变对话框以及视类窗口的颜色
- 改变对话框背景颜色
- 改变对话框颜色
- 改变对话框颜色
- 按钮改变文字大小颜色
- 改变.aspx,换成自己的扩展名
- C语言中可变参数函数的设计
- 排序学习笔记
- C#结构体
- AJAX之路
- 定制Lotus(Inotes)地址对话框
- CTabCtrl标题栏颜色改变以及tab换成自己按钮及内嵌对话框用法
- Linux 安装Oracle10g
- Delphi 7.0常用函数速查手册
- 转帖:3d网址大全
- 海量数据的处理方法
- 用dojo构架管理系统web前端
- tlib的使用方法
- delphi 枚举进程,结束进程
- 破解mysql root密码的几种方法