CDialogBar的创建和使用

CDialogBar的创建和使用

ID:43323883

大小:49.50 KB

页数:3页

时间:2019-09-30

CDialogBar的创建和使用_第1页
CDialogBar的创建和使用_第2页
CDialogBar的创建和使用_第3页
资源描述:

《CDialogBar的创建和使用》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、CDialogBar的创建和使用—个朋友让我看一个关于DialogBar的程序,问题是在一个DialogBar中添加一个TreeContro1控件,在初始化函数OnlnitDialog中使用Insertltem添加一项,结果运行后,始终在DialogBar中显示不出来,后來我又加入了一个Button测试,结果Button是灰色的,根本不能点击。在OnlnitDialog屮加入断点,程序根本执行不到这个函数。按理说,界面已经显示出来了,早应该调用OnlnitDialog函数了。当时百思不得其解。后来在网上查了一下,才知道CDialogBar根本没有重载0nl

2、nitDialog这个函数(你查-下MSDN,就知道CDialog是重载了这个函数的),所以导致我虽然有这个函数,但是始终不调用。这就需要我手动添加这个消息映射。我通过ON_MESSAGE宏,映射了这个消息响应函数,运行结果没问题,TreeControl中有我添加的项了。剩下的就是Button不能用的问题了。通过网上和自己试验,知道在DialogBar中,Button发111的消息根本就不通过DialogBar,而是直接发到MainFrame中,所以只要在MainFrame屮进行响应或者把消息再转发到DialogBar屮就可以了。我在CMainFrame类

3、屮重载了OnCmdMsg这个函数,在这个函数中,先用DialogBar去拦截消息,这样,只需要在DialogBar中取相应Button的消息就可以了。下面是我做试验的大致过程:1、创建一个单文档的MFC工稈,名为MyDialogBaro2、要使用DialogBar,当然首先要在ResourceView屮添加一个DialogBar(。添加好TDialogBar,ID采用默认的IDD.DIALOGBAR,至于它的properties,就采用默认的好了。3、添加一个TreeControl,ID为IDC_TREE,在它的properties对话框Styles选项卡

4、中选择Hasbuttons>HaslinesLinesatroot三个选项,看起来就比较正常了。4、然后为这个DialogBar添加一个类,类名为CDlgBar,继承自CDialog,因为在向导中没有CDialogBar这个基类。然后把它的WM.INITDIALOG消息响应函数加上,记住这时我们的DialogBar还是一个CDialog的子类呢。然后给TreeControl映射变量m_treeo5、下面就轮到对我们自己的DialogBar动手脚了。(1)首先中把CDlgBar的基类改成CDialogBar,然后在.cpp文件中,把CDialogBar的构造

5、函数的对CDialog的构造函数去掉,即:将CDlgBar::CDlgBar(CWnd*pParent/*=NULL*/):CDialog(CDlgBar::IDD,pParent)修改为CDIgBarzzCDlgBarCCWnd*pParent/*=NULL*/)(2)然后把DoDataExchange函数屮的CDialog::DoDataExchange(pDX);一句改成CDialogBar::DoDataExchange(pDX);«(3)把BEGIN_MESSAGE_MAP(CDlgBar,CDialog)屮的CDialog改成CDialogBa

6、ro(4)把OnlnitDialog函数中的CDialog::OnInitDialog();一句去掉。6、在OnlnitDialog屮添加向TreeControl屮插入数据的语句:BOOLCDlgBar::OnInitDialog(){HTREEITEMhParent=m_tree.lnsertltem(nparentn);m_tree.lnsertltem(*1boy**,hParent);m_treeJnsertItem(**girl*1,hParent);returnTRUE;//returnTRUEunlessyousetthefocustoaco

7、ntrol//EXCEPTION:OCXPropertyPagesshouldreturnFALSE}7^在CMainFrame*-p添加一个变暈:CDlgBarm_wndDlgBar;,当然不能忘了include进头文件DlgBar.ho然后在它的OnCreate函数川创建DialogBaro添加如下语句:if(!m_wndDlgBar.Create(this,IDD_DIALOGBAR,WS_CHILD

8、WS.VISIBLE

9、CBRS_LEFT

10、CBRS.GRIPPER

11、CBRS.TOOLTIPS

12、CBRS.FLYBY

13、CBRS_SIZE_DYNAMI

14、C,IDD_DIALOGBAR)){TRACEO(HFailedt

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。