📄 subject_48727.htm
字号:
<p>
序号:48727 发表者:WoodLee 发表日期:2003-08-03 00:55:55
<br>主题:赐教:关于CDialogBar的使用(特急!夜不能寐!!!)
<br>内容:以前使用CDialogBar是这样的:<BR>1、在CMainFrame中定义CDialogBar m_wndDlgBar;<BR>2、在CMainFrame::Create中执行:m_wndDlgBar.Create(this,IDD_MY_DLG,BRS_TOP,ID_MYDLGBAR );其中,IDD_MY_DLG就是我的对话框模板。<BR>这样就可以使用了。<BR><BR>但是我现在有一个CEdit的扩展类CMyEdit想在此对话框中使用。一般的如果不用CDialogBar而使用CDialog派生类或CFormView,都可以如下做:<BR>1、用ClassWizard定义变量CEdit与IDC_MYEDIT关联;即定义CEdit m_Edit;<BR>2、将CEdit m_Edit 改为 CMyEdit m_Edit;<BR>这样的话m_Edit就可以任意使用了。<BR><BR>但是使用CDialogBar却没有机会让我定义这样的变量!所以对话框中只能使用VC内部的控件!<BR><BR>哪位高手能给于指点一二,不胜感激!<BR><BR>
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:金鱼王 回复日期:2003-08-03 08:58:32
<br>内容:能将源码放上来吗?我帮你修改!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:hurtmanzc 回复日期:2003-08-03 17:13:24
<br>内容:你好!金鱼王,又见面了!<BR> 看一下我的解决方案:<BR>1.新建一个单文档工程DialogBarDemo;<BR>2.加入对话框摸板IDD_DIALOG_BAR,并加入编辑框IDC_EDIT;<BR>3.利用ClassWizard加入类CMyEdit,基类为CEdit,加入你需要的功能;<BR>4.编辑CMainFrame::OnCreate()如下:<BR>int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)<BR>{<BR> if (CFrameWnd::OnCreate(lpCreateStruct) == -1)<BR> return -1;<BR> <BR> if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD |<BR> WS_VISIBLE | CBRS_TOP| CBRS_GRIPPER | CBRS_TOOLTIPS | <BR> CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||<BR> !m_wndToolBar.LoadToolBar(IDR_MAINFRAME))<BR> {<BR> TRACE0("Failed to create toolbar\n");<BR> return -1; // fail to create<BR> }<BR><BR> if (!m_wndStatusBar.Create(this) ||<BR> !m_wndStatusBar.SetIndicators(indicators,<BR> sizeof(indicators)/sizeof(UINT)))<BR> {<BR> TRACE0("Failed to create status bar\n");<BR> return -1; // fail to create<BR> }<BR><BR>// TODO: Delete these three lines if you don't want the <BR>//toolbar to be dockable<BR><BR> m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);<BR> EnableDocking(CBRS_ALIGN_ANY);<BR> DockControlBar(&m_wndToolBar);<BR> //创建对话框条<BR> if (!m_wndDialogbar.Create(this, IDD_DIALOG_BAR,<BR> CBRS_LEFT | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_HIDE_INPLACE,<BR> ID_VIEW_DIALOG_BAR))//ID_VIEW_DIALOG_BAR是菜单命令<BR> //ID,用于显示或隐藏对话框条<BR> {<BR> TRACE0("Failed to create dialog bar<BR> m_wndDialogbar\n");<BR> return -1; // fail to create<BR> }<BR><BR> m_wndDialogbar.EnableDocking(CBRS_ALIGN_LEFT |<BR> CBRS_ALIGN_RIGHT);<BR> EnableDocking(CBRS_ALIGN_ANY);<BR> DockControlBar(&m_wndDialogbar);<BR> //下面这句最关键!<BR> m_MyEdit.SubclassDlgItem(IDC_EDIT, &m_wndDialogbar);<BR> <BR> return 0;<BR>}<BR>5.在菜单资源“View”下加入“对话框条”命令,id为ID_VIEW_DIALOG_BAR。<BR>6.在CMainFrame类的消息映射部分手工加入以下两行,以处理菜单命令<BR>ID_VIEW_DIALOG_BAR。<BR> ON_COMMAND_EX(ID_VIEW_DIALOG_BAR, OnBarCheck)<BR> ON_UPDATE_COMMAND_UI(ID_VIEW_DIALOG_BAR, <BR> OnUpdateControlBarMenu)<BR> 注意要加在<BR> //{{AFX_MSG_MAP(CMainFrame)<BR> ON_WM_CREATE()<BR> //}}AFX_MSG_MAP<BR>外边。<BR>7.编译!<BR>试一试,满意不?<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:hurtmanzc 回复日期:2003-08-03 17:18:26
<br>内容:补充一句:<BR>第三步之后,还需为CMainFrame加入两个成员变量:<BR>protected:<BR> CDialogBar m_wndDialogbar;<BR> CMyEdit m_MyEdit;<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -