vs2017 在引用管理器 添加 system.drawing

vs2017 在引用管理器 添加 system.drawing,第1张

工具/原料

电脑

VS2017

方法/步骤

点击打开VS2017

依次点击菜单栏的 文件--新建--项目团巧肢

依次选择选择【Visual C++】-【Win32】-【Win32控制台应用程序】,点击右宽举下角的【确认】

点击右下角的【下一步】

勾选【控制台应用程序】和【空项目】,再点击【完成】

在右边【塌世解决方案资源管理器】中右击【源文件】,选择【添加】-【新建项】

点击【c++文件(.cpp)】,再选择右下角的【添加】

在中间的代码区输入代码,如

#include<iostream>

using namespace std

int main()

{

cout <<"hello world" <<endl

system("pause")

return 0

}

在菜单栏点击【调试】-【开始调试】,点击【是】

图中是我的代码输出结果,有出现小黑框就是成功编写出一个C++程序了

CMenu类的主要成员函数

MFC为菜单的 *** 作提供了CMenu类,下面鸡啄米就常用的几个成员函数进行简单的介绍。

BOOL LoadMenu(UINT nIDResource)

加载菜单资源,并将其附加到CMenu对象上。参数nIDResource指定了要加载的菜单资源的ID。如果菜单加载成功则返回TRUE,否则返回FALSE。

BOOL DeleteMenu(UINT nPosition,UINT nFlags)

在菜单中删除一个菜单项。参数nPosition指定要删除的菜单项。参数nFlags就用来解释nPosition的意义,为MF_BYCOMMAND时说明nPosition表示菜单项的ID,为MF_BYPOSITION时说明nPosition表示菜单项的位置,第一个菜单项的位置为0。如果删除菜单项成功则返回TRUE,否则返回FALSE。

BOOL TrackPopupMenu(UINT nFlags,int x,int y,CWnd* pWnd,LPCRECT lpRect = 0)

用来在指定位置显示一个浮动的d出式菜单。参数nFlags指定屏幕坐标和鼠标位置的标志,可以是以下取值:

TPM_CENTERALIGN:菜单在水平方向上相对于参燃枣数x指定的坐标值居中显示

TPM_LEFTALIGN:菜单的左侧与参数x指定的坐标值对齐

TPM_RIGHTALIGN:菜单的右侧与参数x指定的坐标值对齐

TPM_BOTTOMALIGN:菜单的底部与参数y指定的坐标值对齐

TPM_TOPALIGN:菜单项的顶部与参数y指定的坐标值对齐

TPM_VCENTERALIGN:菜单在垂直方向上相对于参数y指定的坐标值居中显示

这里先介绍这几个比较常用的,其他可参见MSDN。参数x指定d出式菜单的水平方向的屏幕坐标,参数y指定菜单顶部垂直方向上的屏幕坐标,参数pWnd指明哪个窗口拥有此d出式菜单,不能为NULL,参数lpRect忽略。

UINT CheckMenuItem(UINT nIDCheckItem,UINT nCheck)

在d出菜单中为菜单项增加选中标记或移除选中标记。参数nIDCheckItem指定要选中或取消选中的菜单项。参数nCheck指定菜单项的选中状态和如何根据nIDCheckItem确定菜单项的位置,可以是MF_CHECKED或MF_UNCHECKED与MF_BYPOSITION或MF_BYCOMMAND的组合,这几个标志的含义如下:

MF_BYCOMMAND:为默认值。说明参数nIDCheckItem表示菜单项的ID

MF_BYPOSITION:说明参数nIDCheckItem表示菜单项的位置,第一个菜单项的位置是0

MF_CHECKED:为菜单项添加选中标记

MF_UNCHECKED:为菜单项移除选中标记

该函数返回菜单项之前的状皮袭拆态:MF_CHECKED或MF_UNCHECKED, 如果菜单项不存在则返回0xFFFFFFFF。

UINT EnableMenuItem(UINT nIDEnableItem,UINT nEnable)

激活、禁用菜单项或使其变灰。参数nIDEnableItem指定要激活、禁用或变灰的菜单项。参数nEnable指定 *** 作的类型,可以是MF_DISABLED、MF_ENABLED或MF_GRAYED与MF_BYCOMMAND或MF_BYPOSITION的组合,这些值的含义如下:

MF_BYCOMMAND:同CheckMenuItem

MF_BYPOSITION:同CheckMenuItem

MF_DISABLED:禁用菜单项,使其不能被选择但不变灰

MF_ENABLED:激活菜单项,使其能禅斗够被选择并由变灰状态恢复

MF_GRAYED:禁用菜单项,使其不能被选择并变灰

该函数返回菜单项之前的状态:MF_DISABLED、MF_ENABLED或MF_GRAYED

CMenu* GetSubMenu(int nPos) const

获取d出菜单的CMenu对象。参数nPos指定d出菜单在菜单中的位置,不能使用ID。返回值是CMenu对象的指针,该CMenu对象的m_hMenu成员为由nPos指定的d出菜单的句柄,如果不存在这样的CMenu对象则返回NULL,然后创建一个临时d出菜单。

CMenu类的成员函数先讲这些,如果大家需要用其他的函数可以到MSDN中查看,解释的很清楚。

菜单消息

菜单主要能发送两种消息:COMMAND消息和UPDATE_COMMAND_UI消息。下面分别讲解:

COMMAND消息:在菜单项被点击时发送该消息。

UPDATE_COMMAND_UI消息:用来维护菜单项的各项状态,包括激活、禁用、变灰、选中、未选中等。在下拉菜单每次打开的时候,所有菜单项的此消息都会被发送出去。如果所属类中为菜单项的该消息添加了处理函数,则执行相应函数更新菜单状态,如果菜单项没有此消息处理函数,也没有COMMAND消息的处理函数,那么它就会变灰。

菜单的应用实例

鸡啄米先讲一下本实例要实现的功能,此实例是在上一节创建的单文档工程Example34的基础上完成的,上一节中为主菜单栏添加了“Tools”菜单项,并设置它的第一个子菜单项为“Draw”,另外我们还要为主菜单栏添加“Settings”项,然后为其添加一个子菜单项“Draw Enable”,我们通过“Draw Enable”菜单项的选中状态控制菜单项“Draw”的激活状态,如果“Draw Enable”菜单项选中,则“Draw”菜单项激活,点击它d出一个MessageBox,否则“Draw”菜单项禁用。程序中已经在Example34View类中自动生成了OnRButtonUp(UINT /* nFlags */, CPoint point)函数,并在其中实现了d出右键菜单的功能,这里鸡啄米用CMenu类的TrackPopupMenu成员函数重新做一遍。

注意:Example34的CMainFrame类中定义的菜单并没有使用常用的CMenu类,而是用的CMFCMenuBar类(自VS2008起提供),但菜单的消息处理函数的添加是相同的。

下面是具体步骤:

1. 打开Example34工程的IDR_MAINFRAME菜单资源,在“Help”菜单项前通过“Insert New” *** 作插入一个菜单项,Caption设为“Settings”,在新菜单项的子菜单中再添加一个菜单项,Caption设为“Draw Enable”,ID默认为ID_SETTINGS_DRAWENABLE。

2. 因为此菜单为CMainFrame所拥有,所以我们在CMainFrame类中对菜单进行 *** 作。在“MainFrm.h”中为CMainFrame类添加成员变量bool m_bDraw,以标识当前是否可以点击Tools->Draw菜单项,并在CMainFrame类的构造函数中为m_bDraw初始化:m_bDraw = TRUE。

3. 为菜单项Tools->Draw的COMMAND消息和UPDATE_COMMAND_UI消息分别添加处理函数CMainFrame::OnToolsDraw()和OnUpdateToolsDraw(CCmdUI *pCmdUI),这里要注意,添加处理函数时class list中应选择CMainFrame,修改两个函数的实现为:

void CMainFrame::OnToolsDraw()

{

// TODO: Add your command handler code here

// d出提示框

MessageBox(_T("Draw"))

}

void CMainFrame::OnUpdateToolsDraw(CCmdUI *pCmdUI)

{

// TODO: Add your command update UI handler code here

// 根据m_bDraw的值设置是否激活

pCmdUI->Enable(m_bDraw)

}

4. 为菜单项Settings->Draw Enable的COMMAND消息和UPDATE_COMMAND_UI消息分别添加处理函数CMainFrame::OnSettingsDrawenable()和OnUpdateSettingsDrawenable(CCmdUI *pCmdUI),并将它们的实现修改为:

void CMainFrame::OnSettingsDrawenable()

{

// TODO: Add your command handler code here

// 绘图使能标识取反

m_bDraw = !m_bDraw

}

void CMainFrame::OnUpdateSettingsDrawenable(CCmdUI *pCmdUI)

{

// TODO: Add your command update UI handler code here

// 根据m_bDraw的值设置是否选中

pCmdUI->SetCheck(m_bDraw)

}

MFC基于对话框——右键d出菜单,并响应函数。

1、新建一个菜单资源,比如把菜单的ID号为IDR_MENU1。

2、在ClassWizard中

void CArcSoft_EffectDlg::OnRButtonDown(UINT nFlags, CPoint point)

{// TODO: Add your message handler code here and/or call default

CMenu menu//定义下面要用到的cmenu对象

menu.LoadMenu(IDR_MENU1)//装载自定义的右键菜单;

CMenu *pContextMenu=menu.GetSubMenu(0)//获取第一个d出菜单,所以第一个菜单必须有子菜单;

CPoint point1//定义一个用于确定光标位置的位置;

GetCursorPos(&point1)//获取当前光标的位置,以便使得菜单可以跟随光标

pContextMenu->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,point1.x,point1.y,AfxGetMainWnd())//在指定位置显示d出菜单;

CDialog::OnRButtonDown(nFlags, point1)};

这时,当右键点击对话框,就可以将菜单调出来了,如何响应菜单项有如下 *** 作:

3、在资源视图中右键单击菜单项,建立类向导(ClassWizard),此时会d出一个对话框,点击第二个,加入到已存在的类,按确定。

4、在资源视图中为菜单中的每一项建立类向导,并添加Command响应函数,然后在这个函数中加入语句就可以啦。州枣

ON_COMMAND(ID_COPY, OnCopy)//加Command响应函数,自动出现的灰色语句

void CArcSoft_EffectDlg::OnCopy()

{// TODO: Add your command handler code here

MessageBox("复制成功!")

MFC文档的菜单栏中添加一个command响应函数

基于CFormView的应用程序,经常会在菜单栏中添加一个按钮,点击该按钮时,会d出一个对话框~~

具体实现方式如下

1.新建一个对话框资源,同时新建一个对话框类和该资源对应,舍对话框类名为CTestDialog

2.在资源视图中找到Menu 这个文件夹,双击里面的文件IDR_MAINFRAME,在这里可以添加自己想要的菜单,也渣迹族可把原来的【文件】、【编辑】等菜单给删掉~~

添加菜单的方法:右击右侧空白区域,选择properties,d出的对话框中,把pop_up勾选掉,添加一个ID和CAPTION,设ID为ID_MYTEST,caption|为【测试】

(要注意的是,最好选择View类,而不是Frame类或其他类)

3.Ctrl+Wd出类向导,message maps中的class name 选择为View类,

从Object IDs中找到我们上一步设置的ID_MYTEST,右侧的message选择Command命令,添加一个命令响应函数;

4.在该函数中添加

CTestDialog dlg

dlg.DoModal()

5.对应的菜单项添加WM_COMMAND消息,在命令响应函数中DoModal/Create/ShowWindow()你的对话框即可。

6.消息映射:

ON_COMMAND(菜单编号,处理函数)

.h

public:

处理函数

.cpp

处理函数

{

CDialog dc

dc.domodal()

}

d出非模态对话框的方法:

(1)用类向导给菜单栏中菜单添加一个响应函数

 如弊 (2) 在头文件中加入

#include "Dlg.h"

public:

CDlg *Dlg

(3)在代码中加入

Dlg=new CDlg(this)

Dlg->Create(IDD_DIALOG1)// IDD_DIALOG1为对应的菜单栏中那个按钮的ID

Dlg->ShowWindow(SW_RESTORE)

弦的弦心距中有一组量相等那么它们所对应


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/bake/11991543.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存