MFC 对话框工程中添加菜单(VC++ 6.0编译器)
2012-12-07 09:30
423 查看
MFC 对话框工程中添加菜单(VC++ 6.0编译器)
第一步:创建对话框资源和菜单资源.
第二步:添加菜单到对话框中
方法一:
在创建的对话框中右键,在Menu选项选择自己的菜单ID如下图
此时就可以了.
方法二:
不用方法一,直接添加代码完成上述功能.
添加代码到DialogDlg ::OnInitDialog中
CMenu *menu = new CMenu;
menu ->LoadMenu(MAKEINTRESOURCE(IDR_MENU)); //IDR_MENU 菜单ID
this ->SetMenu(menu);
或者
Cmenu m_menu;
m_menu.LoadMenu(IDR_MENU);
SetMenu(&m_menu);
此时结果如下图
最后在添加菜单到对话框类中,实现其各种功能.
下面是在上面的基础上实现的通用对话框空间的功能代码,方便以后开发使用.
(1)打开文件对话框
条件: OPENFILENAME结构体初始化
GetOpenFileName函数调用
说明: 结构定义http://baike.baidu.com/view/2175167.htm
GetOpenFileName()通过OPENFILENAME这个结构体的大小来确定windows的版本的,初始化这个结构体的大小是必须的. OPENFILENAME stOF结构体必须清零.
1.1 获取文件路径名: char szFileName[MAX_PATH] = "";//必须初始化
stOF.lpstrFile = szFileName;
stOF.nMaxFile = MAX_PATH;// 必须和上面一起
1.2 标志: OFN_ALLOWMULTISELECT –允许选择多个文件名
OFN_CREATEPROMPT -如果输入不存在的文件名,对话框提问“是否建立文件”
OFN_FILEMUSTEXIST -只能选择一个已经存在的文件名,必须使用OFN_PATHMUSTEXIST
OFN_HIDEREADONLY -对话框中不显示“以只读方式打开”复选框
OFN_OVERWRITEPROMPT-在“保存”文件对话框中使用的时候,当选择一个已存在的文件时,对话框会提问“是否覆盖文件”。
OFN_PATHMUSTEXIST -输入文件名时,路径必须存在
OFN_READONLY -对话框中的“以只读方式打开”复选框初始化的时候处于选中状态
------------------------------------------------------------------------------
源程序:
char szFileName[MAX_PATH] = "";
OPENFILENAME stOF; //必须的
RtlZeroMemory(&stOF,sizeof(stOF));//必须的
stOF.lStructSize = sizeof(stOF); //必须的
stOF.hwndOwner = NULL;
stOF.lpstrFilter = "Text Files(*.txt)\0 *.txt\0 All Files";
stOF.lpstrFile = szFileName;
stOF.nMaxFile = MAX_PATH;
stOF.Flags = OFN_FILEMUSTEXIST|OFN_PATHMUSTEXIST;
if (GetOpenFileName(&stOF) != NULL)
{
MessageBox(szFileName, "执行结果", MB_OK);
}
------------------------------------------------------------------------------
(2)文件另存为
------------------------------------------------------------------------------
源代码:
OPENFILENAME stOF;
char szFileName[MAX_PATH] = "";
memset(&stOF, 0, sizeof(OPENFILENAME));
stOF.lStructSize = sizeof(stOF);
stOF.hwndOwner = NULL;
stOF.lpstrFilter = "Text Files(*.txt)\0 *.txt\0 All Files";
stOF.lpstrFile = szFileName;
stOF.nMaxFile = MAX_PATH;
stOF.Flags = OFN_PATHMUSTEXIST;
stOF.lpstrDefExt = "txt";
stOF.lpstrTitle = "请输入保存的文件名";
if (GetSaveFileName(&stOF) != NULL)
{
MessageBox(szFileName, "执行结果", MB_OK);
}
------------------------------------------------------------------------------
(3)页面设置对话框
------------------------------------------------------------------------------
源代码
PAGESETUPDLG stPS;
char szBuffer[1024] = "";
RtlZeroMemory(&stPS, sizeof(stPS));
stPS.lStructSize = sizeof(PAGESETUPDLG);
stPS.hwndOwner = NULL;
if (PageSetupDlg(&stPS) && stPS.hDevMode)
{
wsprintf(szBuffer, "您选择的打印机:%s", GlobalLock(stPS.hDevMode));
MessageBox(szBuffer,"执行结果", MB_OK);
}
------------------------------------------------------------------------------
(4)字体
------------------------------------------------------------------------------
源代码
CHOOSEFONT stCF;
char szBuffer[1024] = "";
LOGFONT stLogFont = {5};
COLORREF dwFontColor = RGB(0, 0, 0);
RtlZeroMemory(&stCF, sizeof(stCF));
stCF.lStructSize = sizeof(stCF);
stCF.hwndOwner = NULL;
stCF.lpLogFont = &stLogFont;
stCF.rgbColors = dwFontColor;
stCF.Flags = CF_SCREENFONTS|CF_INITTOLOGFONTSTRUCT|CF_EFFECTS;
if (ChooseFont(&stCF) != NULL)
{
dwFontColor = stCF.rgbColors;
wsprintf(szBuffer, "您的选择\n字体名称:%s\n字体颜色值:%08x\n字体大小:%d",
stLogFont.lfFaceName,
dwFontColor,
stCF.iPointSize);
MessageBox(szBuffer, "执行结果", MB_OK);
}
------------------------------------------------------------------------------
(5)颜色
------------------------------------------------------------------------------
源代码
CHOOSECOLOR stCC;
COLORREF dwBackColor = RGB(0, 0, 0);
COLORREF dwCustColors[16];
char szBuffer[1024] = "";
RtlZeroMemory(&stCC, sizeof(stCC));
stCC.lStructSize = sizeof(stCC);
stCC.hwndOwner = NULL;
stCC.rgbResult = dwBackColor;
stCC.Flags = CC_RGBINIT|CC_FULLOPEN;
stCC.lpCustColors = dwCustColors;
if (ChooseColor(&stCC))
{
dwBackColor = stCC.rgbResult;
wsprintf(szBuffer, "您选择的颜色值:%08x", dwBackColor);
MessageBox(szBuffer,"执行结果", MB_OK);
}
------------------------------------------------------------------------------
第一步:创建对话框资源和菜单资源.
第二步:添加菜单到对话框中
方法一:
在创建的对话框中右键,在Menu选项选择自己的菜单ID如下图
此时就可以了.
方法二:
不用方法一,直接添加代码完成上述功能.
添加代码到DialogDlg ::OnInitDialog中
CMenu *menu = new CMenu;
menu ->LoadMenu(MAKEINTRESOURCE(IDR_MENU)); //IDR_MENU 菜单ID
this ->SetMenu(menu);
或者
Cmenu m_menu;
m_menu.LoadMenu(IDR_MENU);
SetMenu(&m_menu);
此时结果如下图
最后在添加菜单到对话框类中,实现其各种功能.
下面是在上面的基础上实现的通用对话框空间的功能代码,方便以后开发使用.
(1)打开文件对话框
条件: OPENFILENAME结构体初始化
GetOpenFileName函数调用
说明: 结构定义http://baike.baidu.com/view/2175167.htm
GetOpenFileName()通过OPENFILENAME这个结构体的大小来确定windows的版本的,初始化这个结构体的大小是必须的. OPENFILENAME stOF结构体必须清零.
1.1 获取文件路径名: char szFileName[MAX_PATH] = "";//必须初始化
stOF.lpstrFile = szFileName;
stOF.nMaxFile = MAX_PATH;// 必须和上面一起
1.2 标志: OFN_ALLOWMULTISELECT –允许选择多个文件名
OFN_CREATEPROMPT -如果输入不存在的文件名,对话框提问“是否建立文件”
OFN_FILEMUSTEXIST -只能选择一个已经存在的文件名,必须使用OFN_PATHMUSTEXIST
OFN_HIDEREADONLY -对话框中不显示“以只读方式打开”复选框
OFN_OVERWRITEPROMPT-在“保存”文件对话框中使用的时候,当选择一个已存在的文件时,对话框会提问“是否覆盖文件”。
OFN_PATHMUSTEXIST -输入文件名时,路径必须存在
OFN_READONLY -对话框中的“以只读方式打开”复选框初始化的时候处于选中状态
------------------------------------------------------------------------------
源程序:
char szFileName[MAX_PATH] = "";
OPENFILENAME stOF; //必须的
RtlZeroMemory(&stOF,sizeof(stOF));//必须的
stOF.lStructSize = sizeof(stOF); //必须的
stOF.hwndOwner = NULL;
stOF.lpstrFilter = "Text Files(*.txt)\0 *.txt\0 All Files";
stOF.lpstrFile = szFileName;
stOF.nMaxFile = MAX_PATH;
stOF.Flags = OFN_FILEMUSTEXIST|OFN_PATHMUSTEXIST;
if (GetOpenFileName(&stOF) != NULL)
{
MessageBox(szFileName, "执行结果", MB_OK);
}
------------------------------------------------------------------------------
(2)文件另存为
------------------------------------------------------------------------------
源代码:
OPENFILENAME stOF;
char szFileName[MAX_PATH] = "";
memset(&stOF, 0, sizeof(OPENFILENAME));
stOF.lStructSize = sizeof(stOF);
stOF.hwndOwner = NULL;
stOF.lpstrFilter = "Text Files(*.txt)\0 *.txt\0 All Files";
stOF.lpstrFile = szFileName;
stOF.nMaxFile = MAX_PATH;
stOF.Flags = OFN_PATHMUSTEXIST;
stOF.lpstrDefExt = "txt";
stOF.lpstrTitle = "请输入保存的文件名";
if (GetSaveFileName(&stOF) != NULL)
{
MessageBox(szFileName, "执行结果", MB_OK);
}
------------------------------------------------------------------------------
(3)页面设置对话框
------------------------------------------------------------------------------
源代码
PAGESETUPDLG stPS;
char szBuffer[1024] = "";
RtlZeroMemory(&stPS, sizeof(stPS));
stPS.lStructSize = sizeof(PAGESETUPDLG);
stPS.hwndOwner = NULL;
if (PageSetupDlg(&stPS) && stPS.hDevMode)
{
wsprintf(szBuffer, "您选择的打印机:%s", GlobalLock(stPS.hDevMode));
MessageBox(szBuffer,"执行结果", MB_OK);
}
------------------------------------------------------------------------------
(4)字体
------------------------------------------------------------------------------
源代码
CHOOSEFONT stCF;
char szBuffer[1024] = "";
LOGFONT stLogFont = {5};
COLORREF dwFontColor = RGB(0, 0, 0);
RtlZeroMemory(&stCF, sizeof(stCF));
stCF.lStructSize = sizeof(stCF);
stCF.hwndOwner = NULL;
stCF.lpLogFont = &stLogFont;
stCF.rgbColors = dwFontColor;
stCF.Flags = CF_SCREENFONTS|CF_INITTOLOGFONTSTRUCT|CF_EFFECTS;
if (ChooseFont(&stCF) != NULL)
{
dwFontColor = stCF.rgbColors;
wsprintf(szBuffer, "您的选择\n字体名称:%s\n字体颜色值:%08x\n字体大小:%d",
stLogFont.lfFaceName,
dwFontColor,
stCF.iPointSize);
MessageBox(szBuffer, "执行结果", MB_OK);
}
------------------------------------------------------------------------------
(5)颜色
------------------------------------------------------------------------------
源代码
CHOOSECOLOR stCC;
COLORREF dwBackColor = RGB(0, 0, 0);
COLORREF dwCustColors[16];
char szBuffer[1024] = "";
RtlZeroMemory(&stCC, sizeof(stCC));
stCC.lStructSize = sizeof(stCC);
stCC.hwndOwner = NULL;
stCC.rgbResult = dwBackColor;
stCC.Flags = CC_RGBINIT|CC_FULLOPEN;
stCC.lpCustColors = dwCustColors;
if (ChooseColor(&stCC))
{
dwBackColor = stCC.rgbResult;
wsprintf(szBuffer, "您选择的颜色值:%08x", dwBackColor);
MessageBox(szBuffer,"执行结果", MB_OK);
}
------------------------------------------------------------------------------
相关文章推荐
- mfc 为对话框工程添加工具条时,实现工具条的按下状态与菜单标记的同步实例
- VC 6.0 中添加简单的基于对话框的工程
- VC++MFC对话框程序中给对话添加背景图片
- MFC对话框添加菜单及鼠标响应事件步骤详解
- VC/MFC 在对话框中添加菜单栏并响应
- MFC为简单对话框程序添加菜单并加上响应事件
- VC 6.0中添加控件变量后对话框无法…
- VC++ MFC 系统菜单添加子菜单 CMENU submenu GetSystemMenu
- 在MFC对话框中添加菜单
- VC 对话框添加菜单条
- “Visual Studio 2008 + IE8下,为MFC工程对话框资源添加类时发生错误”问题的解决办法
- VC++ 对话框工程MFC中父窗口和子窗口传值方法
- 【MFC - 菜单】在对话框程序中添加菜单栏(CMenu)(转)
- MFC 对话框程序 添加菜单
- MFC对话框添加工具栏、菜单、状态栏
- MFC 对话框添加菜单
- MFC在对话框添加右键菜单
- vc6以上版本的mfc为对话框添加启动画面
- MFC基于对话框的程序添加菜单&点击菜单弹出一个新的对话框
- VC 对话框添加菜单条