各位老大,小弟初学vc,我新建了一个基于对话框的程序mfc应用程序后,想给程序加上工具条和状态条,我在对话框类中加了CStatusBar,和CToolBar的变量,然后在对话框的初始化处理函数中,加上
if (m_statusBar.Create(this))//AfxGetApp()->m_pMainWnd
{
m_statusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT));
m_statusBar.SetPaneInfo(0, m_statusBar.GetItemID(0),SBPS_STRETCH,NULL);
}
if (m_toolBar.CreateEx(this,TBSTYLE_FLAT,WS_CHILD|WS_VISIBLE|CBRS_TOP))
{
m_toolBar.LoadToolBar(IDR_MAINTOOLBAR);
}
程序编译没有错误,可是状态条和工具条确没有,什么原因?请高手给予指点,有兴趣的朋友留个mail,我把程序给你发过去,帮我看下,谢谢
if (m_statusBar.Create(this))//AfxGetApp()->m_pMainWnd
{
m_statusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT));
m_statusBar.SetPaneInfo(0, m_statusBar.GetItemID(0),SBPS_STRETCH,NULL);
}
if (m_toolBar.CreateEx(this,TBSTYLE_FLAT,WS_CHILD|WS_VISIBLE|CBRS_TOP))
{
m_toolBar.LoadToolBar(IDR_MAINTOOLBAR);
}
程序编译没有错误,可是状态条和工具条确没有,什么原因?请高手给予指点,有兴趣的朋友留个mail,我把程序给你发过去,帮我看下,谢谢
解决方案 »
- CStatic, CButton, CToolTipCtrl大家进来啊~
- 截获编辑框的回车和TAB
- VC程序员越来越值钱了
- directdraw中BltFast的一个问题!
- 在VC中添加宏定义时,遇到的奇怪问题,怎么都解决不了
- CTreeCtrl如何检测保存的HTREEITEM hItem有效
- 问题请教:Anti'RemoConChubo'Trojan是个什么东西啊?下面这条防火墙警告记录怎么解释啊?立即结帐,谢谢!
- 请问怎么才能修改工程名?
- 请问关于断点的问题
- DLL加载出错
- 一个较简单的问题:我在“程序”“运行”中敲入“regedit”出现对话框“注册表编辑器”内容为“注册编辑已被管理员所禁止”,操作系统为W
- 超难:如何监控应用程序对某ActiveX控件的调用情况,比如使用那些接口,参数如何,返回什么值?谢谢!
BOOL CYourDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// Create the toolbar. To understand the meaning of the styles used, you
// can take a look at the MSDN for the Create function of the CToolBar class.
ToolBar.Create(this, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_TOOLTIPS |CBRS_FLYBY | CBRS_BORDER_BOTTOM);
// I have assumed that you have named your toolbar's resource as IDR_TOOLBAR1.
// If you have given it a different name, change the line below to accomodate
// that by changing the parameter for the LoadToolBar function.
ToolBar.LoadToolBar(IDR_TOOLBAR1);
CRect rcClientStart;
CRect rcClientNow;
GetClientRect(rcClientStart);
// To reposition and resize the control bar
RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST,0, reposQuery, rcClientNow);
CPoint ptOffset(rcClientNow.left - rcClientStart.left,rcClientNow.top-rcClientStart.top);
CRect rcChild;
CWnd* pwndChild = GetWindow(GW_CHILD);
while (pwndChild)
{
pwndChild->GetWindowRect(rcChild);
ScreenToClient(rcChild);
rcChild.OffsetRect(ptOffset);
pwndChild->MoveWindow(rcChild, FALSE);
pwndChild = pwndChild->GetNextWindow();
}
CRect rcWindow;
GetWindowRect(rcWindow);
rcWindow.right += rcClientStart.Width() - rcClientNow.Width();
rcWindow.bottom += rcClientStart.Height() - rcClientNow.Height();
MoveWindow(rcWindow, FALSE);
// And position the control bars
RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0);
return TRUE; // return TRUE unless you set the focus to a control
}
定义状态条指定状态: static UINT BASED_CODE indicators[] =
{
ID_INDICATOR_CAPS,
ID_INDICATOR_NUM
};
在 OnInitDialog 中加入下面代码:
m_StatusBar.CreateEx(this,SBT_TOOLTIPS,WS_CHILD|WS_VISIBLE|CBRS_BOTTOM,AFX_IDW_STATUS_BAR);
// Set the indicators namely caps and nums lock status
m_StatusBar.SetIndicators(indicators,sizeof(indicators)/sizeof(UINT));
CRect rect;
GetClientRect(&rect);
m_StatusBar.SetPaneInfo(0,ID_INDICATOR_CAPS,SBPS_NORMAL,rect.Width()/2);
m_StatusBar.SetPaneInfo(1,ID_INDICATOR_NUM,SBPS_STRETCH ,rect.Width()/2);
RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,ID_INDICATOR_NUM);
m_StatusBar.GetStatusBarCtrl().SetBkColor(RGB(180,180,180));