您的位置:首页 > 编程语言 > C语言/C++

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

}

------------------------------------------------------------------------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: