`
javababy1
  • 浏览: 1171994 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

给对话框添加菜单 工具栏 状态栏简易方法

 
阅读更多

先建立一个基于Dialog的程序,我他起了个名字叫:DlgMenuToolbar。

一、如何往基于Dialog的程序添加菜单

[1.1]先添加菜单(IDR_MENU1)资源,并加上需要的菜单项。

[1.2]编辑对话框资源IDD_DLGMENUTOOLBAR_DIALOG的属性,在属性对话框中选择IDR_MENU1即可。

[1.3]假如您不希望在对话框属性中直接设置菜单,而通过代码在程序中动态生成可以采用如下方法:

[1.3.1]在CDlgMenuToolbarDlg类声名中添加成员变量CMenum_menu

再在CDlgMenuToolbarDlg::OnInitDialog()中添加如下代码://加载菜单

m_menu.LoadMenu(IDR_MENU1);

//设置当前菜单

SetMenu(&m_menu);

//当你不需要菜单时可以用SetMenu(NULL);来取消当前菜单

二、如何往基于Dialog的程序添加工具栏

[2.1]先添加工具栏(IDR_TOOLBAR1)资源,并画好各个按钮。

[2.2]在CDlgMenuToolbarDlg类声名中添加成员变量CToolBarm_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("failedtocreatetoolbar/n");

returnFALSE;

}

m_wndtoolbar.ShowWindow(SW_SHOW);

RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);

三、为工具栏添加工具提示

[3.1]在CDlgMenuToolbarDlg类定义中手工添加消息映射函数的定义,如下黑体部分//{{AFX_MSG(CDlgMenuToolbarDlg)

virtualBOOLOnInitDialog();

afx_msgvoidOnPaint();

afx_msgBOOLOnToolTipText(UINT,NMHDR*pNMHDR,LRESULT*pResult);

//}}AFX_MSG

DECLARE_MESSAGE_MAP()

[3.2]在CDlgMenuToolbarDlg.cpp添加函数的实现代码//工具栏提示

BOOLCDlgMenuToolbarDlg::OnToolTipText(UINT,NMHDR*pNMHDR,LRESULT*pResult)

{

ASSERT(pNMHDR->code==TTN_NEEDTEXTA||pNMHDR->code==TTN_NEEDTEXTW);

//UNICODE消息

TOOLTIPTEXTA*pTTTA=(TOOLTIPTEXTA*)pNMHDR;

TOOLTIPTEXTW*pTTTW=(TOOLTIPTEXTW*)pNMHDR;

//TCHARszFullText[512];

CStringstrTipText;

UINTnID=pNMHDR->idFrom;

if(pNMHDR->code==TTN_NEEDTEXTA&&(pTTTA->uFlags&TTF_IDISHWND)||

pNMHDR->code==TTN_NEEDTEXTW&&(pTTTW->uFlags&TTF_IDISHWND))

{

//idFrom为工具条的HWND

nID=::GetDlgCtrlID((HWND)nID);

}

if(nID!=0)//不为分隔符

{

strTipText.LoadString(nID);

strTipText=strTipText.Mid(strTipText.Find(''/n'',0)+1);

#ifndef_UNICODE

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

*pResult=0;

//使工具条提示窗口在最上面

::SetWindowPos(pNMHDR->hwndFrom,HWND_TOP,0,0,0,0,SWP_NOACTIVATE|

SWP_NOSIZE|SWP_NOMOVE|SWP_NOOWNERZORDER);

returnTRUE;

}

returnTRUE;

}

[3.3]在CDlgMenuToolbarDlg.cpp中添加消息映射,请看如下代码中的黑体部分BEGIN_MESSAGE_MAP(CDlgMenuToolbarDlg,CDialog)

//{{AFX_MSG_MAP(CDlgMenuToolbarDlg)

ON_WM_PAINT()

ON_NOTIFY_EX(TTN_NEEDTEXT,0,OnToolTipText)

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

四、其它

为了使你的程序看起来更酷,还可以在CDlgMenuToolbarDlg::OnPaint()中修改代码实现Dialog填充颜色。

CPaintDCdc(this);

CRectrect;

GetClientRect(rect);

dc.FillSolidRect(rect,RGB(60,110,170));

五、添加状态栏

static UINT indicators[] =

{

//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()

{

if (!m_wndStatusBar.Create(this) ||

!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);

}

void CThreadDemoDlg::OnButton1()

{

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");

}

}

源文档 <http://blog.csdn.net/qj840828/archive/2008/10/17/3092318.aspx>

分享到:
评论

相关推荐

    为对话框程序添加工具条和状态栏

    虽然在对话框程序上可以通过修改其属性来添加系统菜单,但对比SDI和MDI程序的工具条和状态栏未免使界面显得简单、单调。虽然在Visual Basic 中提供有独立的工具条和状态栏标准控件可以直接在对话框上使用,但Visual ...

    Visual C++编程技巧精选集 光盘

    139.如何为对话框工具栏按钮添加提示 140.如何隐藏工具栏按钮的提示信息 141.如何在工具栏上增加删除按钮 142.如何动态隐藏或显示工具栏按钮 143.如何动态启用或禁用工具栏按钮 144.如何动态改变工具栏按钮的位置 ...

    Visual C++编程技巧精选500例.pdf

    第5章 工具栏与状态栏 073 如何给工具栏分组? 074 如何关闭默认工具栏? 075 如何设置工具栏标题? 076 如何设置工具栏按钮提示? 077 如何关闭工具栏按钮提示? 078 如何启用和禁用工具栏按钮? 079 如何设置下压式工具...

    MFC教程入门知识全集.rar

    3.1.4 菜单栏、工具栏、状态栏 3.2 系统菜单功能介绍 3.2.1 File 菜单 3.2.2 Edit 菜单 3.2.3 View 菜单 3.2.4 Insert 菜单 3.2.5 Project 菜单 3.2.6 Build 菜单 3.2.6 Tools 菜单 3.2.7 Window 菜单 ...

    044_《Delphi程序设计基础教程》(1/2)

    本书内容丰富,包括Delphi基础知识、Object Pascal语言、编程基础(包含程序控制结构、枚举、子界与集合、数组与记录以及过程与函数)、界面设计(包含窗体与基本组件、对话框、菜单、工具栏、状态栏以及图形图像与...

    044_《Delphi程序设计基础教程》(2/2)

    本书内容丰富,包括Delphi基础知识、Object Pascal语言、编程基础(包含程序控制结构、枚举、子界与集合、数组与记录以及过程与函数)、界面设计(包含窗体与基本组件、对话框、菜单、工具栏、状态栏以及图形图像与...

    VB 6.0教程

    VB 6.0中文版是最新产品,适合于Windows95/98和Windows NT平台,它...本书深入浅出地介绍VB 6.0的语法,集成环境的使用,窗体和控件的使用,菜单和对话框的生成,工具栏和状态栏的创建以及多媒本,数据库,图形,文件操作等技术.

    Microsoft visual c++ 6.0 programmer's Guide 程序员指南

    工具栏和菜单 环境窗口 在线帮助 MSDN库 在开发环境之外工作 第1章 环境 工具栏和菜单 环境窗口 在线帮助 MSDN库 在开发环境之外工作 第2章 AppWizard(应用程序向导) AppWizard(应用程序向导)的优点 运行...

    Visual C++ 程序开发范例宝典光盘源码 (第二版)1/7

     实例010 带下拉菜单的工具栏   实例011 可调整按钮位置的工具栏   实例012 XP风格工具栏   实例013 动态设置是否显示工具栏按钮文本   实例014 具有提示功能的工具栏   1.4 状态栏应用实例   ...

    Visual C++ 程序开发范例宝典光盘源码 (第二版) 3/7

     实例010 带下拉菜单的工具栏   实例011 可调整按钮位置的工具栏   实例012 XP风格工具栏   实例013 动态设置是否显示工具栏按钮文本   实例014 具有提示功能的工具栏   1.4 状态栏应用实例   ...

    Visual C++ 程序开发范例宝典光盘源码 (第二版) 6/7

     实例010 带下拉菜单的工具栏   实例011 可调整按钮位置的工具栏   实例012 XP风格工具栏   实例013 动态设置是否显示工具栏按钮文本   实例014 具有提示功能的工具栏   1.4 状态栏应用实例   ...

    Visual C++ 程序开发范例宝典光盘源码 (第二版) 5/7

     实例010 带下拉菜单的工具栏   实例011 可调整按钮位置的工具栏   实例012 XP风格工具栏   实例013 动态设置是否显示工具栏按钮文本   实例014 具有提示功能的工具栏   1.4 状态栏应用实例   ...

    Visual C++ 程序开发范例宝典光盘源码 (第二版) 2/7

     实例010 带下拉菜单的工具栏   实例011 可调整按钮位置的工具栏   实例012 XP风格工具栏   实例013 动态设置是否显示工具栏按钮文本   实例014 具有提示功能的工具栏   1.4 状态栏应用实例   ...

    Visual C++ 程序开发范例宝典光盘源码 (第二版) 7/7

     实例010 带下拉菜单的工具栏   实例011 可调整按钮位置的工具栏   实例012 XP风格工具栏   实例013 动态设置是否显示工具栏按钮文本   实例014 具有提示功能的工具栏   1.4 状态栏应用实例   ...

    Visual C++ 2005入门经典.part08.rar (整理并添加所有书签)

    16.7.1 添加Scale菜单项和工具栏按钮 16.7.2 创建微调按钮 16.7.3 生成比例对话框类 16.7.4 显示微调按钮 16.8 使用比例系数 16.8.1 可缩放的映射模式 16.8.2 设置文档的大小 16.8.3 设置映射模式 16.8.4 同时实现...

    Visual C++ 2005入门经典.part04.rar (整理并添加所有书签)

    16.7.1 添加Scale菜单项和工具栏按钮 16.7.2 创建微调按钮 16.7.3 生成比例对话框类 16.7.4 显示微调按钮 16.8 使用比例系数 16.8.1 可缩放的映射模式 16.8.2 设置文档的大小 16.8.3 设置映射模式 16.8.4 同时实现...

    Visual C++ 程序开发范例宝典光盘源码 (第二版) 4/7

     实例010 带下拉菜单的工具栏   实例011 可调整按钮位置的工具栏   实例012 XP风格工具栏   实例013 动态设置是否显示工具栏按钮文本   实例014 具有提示功能的工具栏   1.4 状态栏应用实例   ...

    Visual C++ 2005入门经典.part07.rar (整理并添加所有书签)

    16.7.1 添加Scale菜单项和工具栏按钮 16.7.2 创建微调按钮 16.7.3 生成比例对话框类 16.7.4 显示微调按钮 16.8 使用比例系数 16.8.1 可缩放的映射模式 16.8.2 设置文档的大小 16.8.3 设置映射模式 16.8.4 同时实现...

Global site tag (gtag.js) - Google Analytics