给对话框添加菜单 工具栏 状态栏简易方法
来源:互联网 发布:boox和kindle对比 知乎 编辑:程序博客网 时间:2024/05/16 12:30
先建立一个基于Dialog 的程序,我给他起了个名字叫:DlgMenuToolbar。 一、如何往基于Dialog的程序添加菜单 [1.1] 先添加菜单(IDR_MENU1)资源,并加上需要的菜单项。 [1.3] 假如您不希望在对话框属性中直接设置菜单,而通过代码在程序中动态生成可以采用如下方法: [1.3.1]在CDlgMenuToolbarDlg类声名中添加成员变量CMenu m_menu [2.1] 先添加工具栏(IDR_TOOLBAR1)资源,并画好各个按钮。 [3.1] 在CDlgMenuToolbarDlg类定义中手工添加消息映射函数的定义,如下黑体部分 //{{AFX_MSG(CDlgMenuToolbarDlg) [3.2] 在CDlgMenuToolbarDlg.cpp添加函数的实现代码 //工具栏提示 // UNICODE消息 if (pNMHDR->code == TTN_NEEDTEXTA && (pTTTA->uFlags & TTF_IDISHWND) || if (nID != 0) //不为分隔符 #ifndef _UNICODE *pResult = 0; // 使工具条提示窗口在最上面 [3.3] 在CDlgMenuToolbarDlg.cpp中添加消息映射,请看如下代码中的黑体部分 BEGIN_MESSAGE_MAP(CDlgMenuToolbarDlg, CDialog) 四、其它 五、添加状态栏 static UINT indicators[] = { if (!m_wndStatusBar.Create(this) || } void CThreadDemoDlg::OnButton1() 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/qj840828/archive/2008/10/17/3092318.aspx
[1.2] 编辑对话框资源IDD_DLGMENUTOOLBAR_DIALOG的属性,在属性对话框中选择IDR_MENU1即可。
再在CDlgMenuToolbarDlg::OnInitDialog() 中添加如下代码: //加载菜单
m_menu.LoadMenu(IDR_MENU1);
//设置当前菜单
SetMenu(&m_menu);
//当你不需要菜单时可以用 SetMenu(NULL);来取消当前菜单
二、如何往基于Dialog的程序添加工具栏
[2.2] 在CDlgMenuToolbarDlg类声名中添加成员变量 CToolBar m_wndtoolbar;
[2.3] 在CDlgMenuToolbarDlg::OnInitDialog() 中添加如下代码 //添加一个平面工具条
if (!m_wndtoolbar.CreateEx( this,TBSTYLE_FLAT , WS_CHILD | WS_VISIBLE | CBRS_ALIGN_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS,
CRect(4,4,0,0)) ||!m_wndtoolbar.LoadToolBar(IDR_TOOLBAR1) )
{
TRACE0("failed to create toolbar/n");
return FALSE;
}
m_wndtoolbar.ShowWindow(SW_SHOW);
RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0);
三、为工具栏添加工具提示
virtual BOOL OnInitDialog();
afx_msg void OnPaint();
afx_msg BOOL OnToolTipText(UINT, NMHDR* pNMHDR, LRESULT* pResult);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
BOOL CDlgMenuToolbarDlg::OnToolTipText(UINT, NMHDR* pNMHDR, LRESULT* pResult)
{
ASSERT(pNMHDR->code == TTN_NEEDTEXTA || pNMHDR->code == TTN_NEEDTEXTW);
TOOLTIPTEXTA* pTTTA = (TOOLTIPTEXTA*)pNMHDR;
TOOLTIPTEXTW* pTTTW = (TOOLTIPTEXTW*)pNMHDR;
//TCHAR szFullText[512];
CString strTipText;
UINT nID = pNMHDR->idFrom;
pNMHDR->code == TTN_NEEDTEXTW && (pTTTW->uFlags & TTF_IDISHWND))
{
// idFrom为工具条的HWND
nID = ::GetDlgCtrlID((HWND)nID);
}
{
strTipText.LoadString(nID);
strTipText = strTipText.Mid(strTipText.Find(''/n'',0)+1);
if (pNMHDR->code == TTN_NEEDTEXTA)
{
lstrcpyn(pTTTA->szText, strTipText, sizeof(pTTTA->szText));
}
else
{
_mbstowcsz(pTTTW->szText, strTipText, sizeof(pTTTW->szText));
}
#else
if (pNMHDR->code == TTN_NEEDTEXTA)
{
_wcstombsz(pTTTA->szText, strTipText,sizeof(pTTTA->szText));
}
else
{
lstrcpyn(pTTTW->szText, strTipText, sizeof(pTTTW->szText));
}
#endif
::SetWindowPos(pNMHDR->hwndFrom, HWND_TOP, 0, 0, 0, 0,SWP_NOACTIVATE|
SWP_NOSIZE|SWP_NOMOVE|SWP_NOOWNERZORDER);
return TRUE;
}
return TRUE;
}
//{{AFX_MSG_MAP(CDlgMenuToolbarDlg)
ON_WM_PAINT()
ON_NOTIFY_EX( TTN_NEEDTEXT, 0, OnToolTipText )
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
为了使你的程序看起来更酷,还可以在CDlgMenuToolbarDlg::OnPaint()中修改代码实现Dialog 填充颜色。
CPaintDC dc(this);
CRect rect;
GetClientRect(rect);
dc.FillSolidRect(rect, RGB(60,110,170));
{
// ID_SEPARATOR, // status line indicator
ID_TEST_ITEM, //自己在STRING TABLE中所定义的ID
ID_USB_STATE,
IDS_POWER_STATE,
ID_DATE,
ID_TIME,
// ID_INDICATOR_CAPS,
// ID_INDICATOR_NUM,
// ID_INDICATOR_SCRL,
};
void CThreadDemoDlg::OnInitDialog()
!m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT)))
{
TRACE0("Failed to create statusbar/n");
return -1; // fail to create
}
RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0);
{
CStatusBar* pStatus=&this->m_wndStatusBar; //对状态栏字符进行修改
if(pStatus)
{
pStatus->SetPaneText(0,"测试0");
pStatus->SetPaneText(1,"测试1");
pStatus->SetPaneText(2,"测试2");
pStatus->SetPaneText(3,"测试3");
pStatus->SetPaneText(4,"测试4");
}
}
- 给对话框添加菜单 工具栏 状态栏简易方法
- 给对话框添加菜单 工具栏 状态栏简易方法
- 给对话框添加菜单 工具栏 状态栏简易方法
- 给对话框添加菜单 工具栏 状态栏简易方法
- 给对话框添加菜单 工具栏 状态栏简易方法
- 给对话框添加菜单 工具栏 状态栏简易方法
- 给对话框添加菜单 工具栏 状态栏简易方法
- 为对话框添加菜单,工具栏,状态栏,视图
- MFC对话框添加工具栏、菜单、状态栏
- MFC对话框添加工具栏、菜单、状态栏
- 模式对话框非模式对话框添加工具栏、菜单、状态栏总结
- 给对话框添加菜单和状态栏
- 给对话框添加状态栏
- 给对话框添加菜单栏和状态栏,在状态栏显示菜单提示。并响应菜单更新命令
- Qt界面添加菜单,工具栏以及状态栏
- Qt界面添加菜单,工具栏以及状态栏
- 为对话框添加菜单与工具栏
- 第12章 对话框、菜单、工具栏及状态栏
- 计算生命
- 头脑风暴
- 制作停靠栏
- ubuntu随身盘制作
- CStatic控件的基本使用
- 给对话框添加菜单 工具栏 状态栏简易方法
- 利用DockPanel实现可停靠、可浮动、多文档窗体
- 在MDI方式下自由生成自定义的子窗口
- 树形控件TreeCtrl的用法
- Radio/combobox控件的用法
- 多态性与虚函数
- VC++中slider控件的使用
- 双击ListCtrl中某一行后,怎么得到当前的内容
- 如何SDI中进行多视图切换