各位兄台:
路过此地,小弟这相有礼了。哪一位知道怎么在工具栏里加两个组合框,我用
《Programming Windows with Mfc》上的方法试过,可前一个组合框显示不出来,
想用CDialogBar却不知怎么用,难受死了,谁能具体说说CDialogBar的用法,感激不尽
路过此地,小弟这相有礼了。哪一位知道怎么在工具栏里加两个组合框,我用
《Programming Windows with Mfc》上的方法试过,可前一个组合框显示不出来,
想用CDialogBar却不知怎么用,难受死了,谁能具体说说CDialogBar的用法,感激不尽
解决方案 »
- Windows8出来了MFC还有前途吗?
- MessageBox()使用疑问?
- 头不愿意之前弄的说放大锯齿厉害,让我搞矢量图然后画
- 如何在对话框中实现类似于设置断点调试程序时的演示效果?
- 有关屏幕监控的问题,小弟毕业设计急用,求达人指教
- 急!请问在vc.net中为什么找不到iostream.h这个头文件了?
- 关于在Windows环境下的多线程创建问题
- 我想问问CTreeCtrl中GetSelectedItem的问题.
- 新手求大神~WaitForMultipleObjects实验
- CFile中字符串的问题
- 如何在进程间共享数据?
- 谁有C++的读写XML的类呀,能不能给一个好用的![email protected]
以前使用CDialogBar是这样的:
1、在CMainFrame中定义CDialogBar m_wndDlgBar;
2、在CMainFrame::Create中执行:m_wndDlgBar.Create(this,IDD_MY_DLG,BRS_TOP,ID_MYDLGBAR );其中,IDD_MY_DLG就是我的对话框模板。
这样就可以使用了。但是我现在有一个CEdit的扩展类CMyEdit想在此对话框中使用。一般的如果不用CDialogBar而使用CDialog派生类或CFormView,都可以如下做:
1、用ClassWizard定义变量CEdit与IDC_MYEDIT关联;即定义CEdit m_Edit;
2、将CEdit m_Edit 改为 CMyEdit m_Edit;
这样的话m_Edit就可以任意使用了。但是使用CDialogBar却没有机会让我定义这样的变量!所以对话框中只能使用VC内部的控件!哪位高手能给于指点一二,不胜感激! goldfishking
金鱼王 第1楼 回复于2003-8-3 8:58:32
--------------------------------------------------------------------------------能将源码放上来吗?我帮你修改!
------------------------签----名----
**********************
*你的快乐所以我的快乐*
*我的爱是为了你而存在*
**********************
hurtmanzc
hurtmanzc 第2楼 回复于2003-8-3 17:13:24
--------------------------------------------------------------------------------
本回复被接受作为正确答案
你好!金鱼王,又见面了!
看一下我的解决方案:
1.新建一个单文档工程DialogBarDemo;
2.加入对话框摸板IDD_DIALOG_BAR,并加入编辑框IDC_EDIT;
3.利用ClassWizard加入类CMyEdit,基类为CEdit,加入你需要的功能;
4.编辑CMainFrame::OnCreate()如下:
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD |
WS_VISIBLE | CBRS_TOP| CBRS_GRIPPER | CBRS_TOOLTIPS |
CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
{
TRACE0("Failed to create toolbar\n");
return -1; // fail to create
} if (!m_wndStatusBar.Create(this) ||
!m_wndStatusBar.SetIndicators(indicators,
sizeof(indicators)/sizeof(UINT)))
{
TRACE0("Failed to create status bar\n");
return -1; // fail to create
}// TODO: Delete these three lines if you don't want the
//toolbar to be dockable m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndToolBar);
//创建对话框条
if (!m_wndDialogbar.Create(this, IDD_DIALOG_BAR,
CBRS_LEFT | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_HIDE_INPLACE,
ID_VIEW_DIALOG_BAR))//ID_VIEW_DIALOG_BAR是菜单命令
//ID,用于显示或隐藏对话框条
{
TRACE0("Failed to create dialog bar
m_wndDialogbar\n");
return -1; // fail to create
} m_wndDialogbar.EnableDocking(CBRS_ALIGN_LEFT |
CBRS_ALIGN_RIGHT);
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndDialogbar);
//下面这句最关键!
m_MyEdit.SubclassDlgItem(IDC_EDIT, &m_wndDialogbar);
return 0;
}
5.在菜单资源“View”下加入“对话框条”命令,id为ID_VIEW_DIALOG_BAR。
6.在CMainFrame类的消息映射部分手工加入以下两行,以处理菜单命令
ID_VIEW_DIALOG_BAR。
ON_COMMAND_EX(ID_VIEW_DIALOG_BAR, OnBarCheck)
ON_UPDATE_COMMAND_UI(ID_VIEW_DIALOG_BAR,
OnUpdateControlBarMenu)
注意要加在
//{{AFX_MSG_MAP(CMainFrame)
ON_WM_CREATE()
//}}AFX_MSG_MAP
外边。
7.编译!
试一试,满意不?
------------------------签----名----
ZC
hurtmanzc
hurtmanzc 第3楼 回复于2003-8-3 17:18:26
--------------------------------------------------------------------------------补充一句:
第三步之后,还需为CMainFrame加入两个成员变量:
protected:
CDialogBar m_wndDialogbar;
CMyEdit m_MyEdit;