mfc调用对话框其他对话框类的变量,是控件变量

随笔 - 146&
评论 - 23&
&&&&&&&&&&&
1.先建立一个对话框MFC应用程序,然后在工具箱里面把Tab Control控件放到对话框中的合适位置上。
再在对话框类中,将该控件绑定一个变量
用两种方法:
自己定义成员变量 CTabCtrl* m_editLineT
在OnInitDialog函数中:关联Tab的ID
m_editLineTab=(CTabCtrl*)GetDlgItem(IDC_EDITLINETAB);
然后就可以设置选项卡
2)用向导绑定一个变量,
在.h文件生成
// Dialog Data&//{{AFX_DATA(DlgSymbolEdit)&enum { IDD = IDD_DIALOG_SYMEDIT };&CTabCtrl&m_editLineT&。。。。&//}}AFX_DATA
.cpp文件中
DoDataExchange函数里也自动生成了DDX_Control(pDX, IDC_EDITLINETAB, m_editLineTab);
然后再OnInitDialog()中首先需要
m_editLineTab.SubclassDlgItem(IDC_EDITLINETAB,this);原因不知道
然后再做其他操作。
2.建立两个对话框程序,用来当做Tab Control控件的两个页。别忘了把Style改为Child,Border改为None。然后就可以在上面加其他控件了。
接着分别为这两个对话框建立两个类,比如CPage1和CPage2。
然后在对话框类头文件中,加入这两个对话框对象。同时增加一个变量int m_CurSelTab,用了表明是哪个Page即将被切换。
int m_CurSelT CPage1 m_page1; CPage2 m_page2; CDialog* pDialog[2];& //用来保存对话框对象指针
在对话框类的初始化函数中OnInitDialog()需要把CPage1、CPage2和Tab Control关联起来,并保存页面地址,设置初始页面。
//为Tab Control增加两个页面
TCITEM tabI
tabItem.mask = TCIF_TEXT;
tabItem.pszText = "GDI";
m_editLineTab-&InsertItem(0, &tabItem);
tabItem.pszText = "AGG";
m_editLineTab-&InsertItem(1, &tabItem);
m_tab.InsertItem(0, _T("Farm"));
m_tab.InsertItem(1, _T("Note"));
////创建两个对话框
m_tabPage1.Create(IDD_TABPAGE1, &m_editLineTab);
m_tabPage2.Create(IDD_TABPAGE2, &m_editLineTab);
////设定在Tab内显示的范围
m_editLineTab.GetClientRect(rc);
rc.top += 3;
rc.bottom -= 0;
rc.left += 0;
rc.right -= 0;
m_tabPage1.MoveWindow(&rc);
m_tabPage2.MoveWindow(&rc);
//把对话框对象指针保存起来
pDialog[0] = &m_tabPage1;
pDialog[1] = &m_tabPage2;
//显示初始页面
pDialog[0]-&ShowWindow(SW_SHOW);
pDialog[1]-&ShowWindow(SW_HIDE);
//保存当前选择
m_CurSelTab = 0;
这里我们用了一个CDialog指针数组来进行保存Tab Control的每个页,数组的大小是Tab Control页面的个数,数组下标对应着每个页面的索引(这样方便快速存取)。
接下来,为Tab Control添加消息处理程序:
ON_NOTIFY(TCN_SELCHANGE, IDC_TAB1, &CTabDlg::OnTcnSelchangeTab1)
void CTabDlg::OnTcnSelchangeTab1(NMHDR *pNMHDR, LRESULT *pResult)
//把当前的页面隐藏起来
pDialog[m_CurSelTab]-&ShowWindow(SW_HIDE);
//得到新的页面索引
m_CurSelTab = m_tab.GetCurSel();
//把新的页面显示出来
pDialog[m_CurSelTab]-&ShowWindow(SW_SHOW);
*pResult = 0;
3.如果要在Tab Control控件外面获取其内部对话框中控件的数据,就需要使用DDX/DDV机制,还要调用相应的UpdateData函数。
&&& m_page1.UpdateData(); &&&
&& m_page2.UpdateData();
常见问题:我把Tab Control控件放在Group Box里面,它就不能显示.
之前的那个Group&Box就像是覆盖了Tab&Control.又尝试了很多次,发现Tab&Control这个控件有点特殊,它一般会被其它控件遮住,这个也是Group&Box的特点.系统应该是采用相似的方式处理它们的显示问题,即将它们设置为最底层,所以当它们重叠时,后建的就要被先建的遮住.
可以通过ctrl+d,然后鼠标点击调整Z序,只要TabCtrl的Z序在GroupBox前就没问题
控件Z序的问题
阅读(...) 评论() 上传我的文档
 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
VS2010 MFC编程入门之八(对话框:创建对话框类和添加控件变量)
下载积分:2000
内容提示:道客巴巴文档,VS2010 MFC编程入门之八(对话框:创建对话框类和添加控件变量),值得下载、分享、收藏。
文档格式:DOCX|
浏览次数:108|
上传日期: 07:49:16|
文档星级:
该用户还上传了这些文档
VS2010 MFC编程入门之八(对话框:创建对话框类和添加控件
官方公共微信关于怎么调用父窗口成员变量 - VC/MFC当前位置:& &&&关于怎么调用父窗口成员变量关于怎么调用父窗口成员变量&&网友分享于:&&浏览:289次关于如何调用父窗口成员变量?我有一个窗口,有一个子窗口,而且该子窗口又有3个子窗口,我想这3个子窗口能够使用最上级窗口的成员变量,该怎么做?
在最高级窗口类中,有个名字为Show的函数,就显示一个对话框,可以正常调用,但是如果是调用最高级窗口类中的成员(有个CProgressCtrl & m_prog的控件),一调用就出现非法访问的错误?该怎么解决?------解决方案--------------------GetParent()-& GetParent()-& m_a
注意GetParent 前面用类名强制转换下。
------解决方案--------------------能不能在父类中增加一些对该控件操作的函数,
然后在GetParent时使用函数对控件进行操作,而不要直接操作变量。
变量最好私有。
------解决方案--------------------http://community.csdn.net/Expert/topic/.xml?temp=.1991846
------解决方案--------------------同louifox(兰陵笑笑生)
GetParent()-& GetParent()-& m_a
注意GetParent 前面用类名强制转换下。
------解决方案--------------------难道成员是 protected?
那就在父窗口设置相应的成员函数来操作成员变量
子窗口的线程调用父窗口成员函数间接操作父窗口成员变量
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 12345678910 Copyright & &&版权所有VS2010_MFC编程入门入门,初学,帮助,mfc,MFC
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
VS2010_MFC编程入门
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口}

我要回帖

更多关于 mfc对话框控件 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信