导航:首页 > 使用方法 > mfc控件的使用方法

mfc控件的使用方法

发布时间:2023-01-15 07:29:20

‘壹’ MFC之使用 Windows 标准控件

2)选择要增加变量的,单击添加变量按钮,打开添加变量的对话框:

3)在添加变量对话框中的填上成员变量名以及必要的注释信息。

4)若要删除控件变量,则在类向导对话框的成员变量选项卡中选定要删除变量的控件,然后单击删除变量按钮。

1)在工具箱中选择 “Group Box” 添加分组框。

2)在工具箱中选择 “Radio Button” 向分组框中添加单选按钮。

3)将组合框里的第一个单选按钮的 Group 属性、Tab stop 属性和 Auto 属性都设置为 True;其余的单选按钮将 Tab stop 属性和 Auto 属性设置为 True 就可以了。

1)在工具箱中选择 “Group Box” 添加分组框。

2)在工具箱中选择 “Chick Box” 向分组框添加复选框。

‘贰’ MFC的picture控件的使用

你是想设置背景色吧
直接使用picture控件添加bmp图片,不容易实现你描述的功能。
可以通过以下方法解决:
1.添加一个picture控件ID假定为IDC_S_PIC,调整的你需要的大小,类型原则Frame。
2.在OnPaint函数中添加以下代码在IDC_S_PIC制定的范围内添加背景图片。

voidCBDlg::OnPaint()
{
CPaintDCdc(this);//devicecontextforpainting
CRectrect;
GetDlgItem(IDC_S_PIC)->GetClientRect(&rect);
CDCdcMem;
dcMem.CreateCompatibleDC(&dc);
CBitmapbmpBackground;
if(bmpBackground.LoadBitmap(IDB_BITMAP1))
{//保证加载图片成功后再执行以下操作
BITMAPbitmap;
bmpBackground.GetBitmap(&bitmap);
CBitmap*pbmpOld=dcMem.SelectObject(&bmpBackground);
dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,
bitmap.bmWidth,bitmap.bmHeight,SRCCOPY);
}
}

‘叁’ MFC 控件的使用

网上有很多这方面的参考,推荐上这个网站上看看:

http://www.vczx.com/tutorial/mfc/mfc.php

东西挺全的。。

下面是 其中的一小部分:

MFC教程_ 应用程序的退出应用程序的退出
一个Windows应用程序启动之后,一般是进入消息循环,等待或者处理用户的输入,直到用户关闭应用程序窗口,退出应用程序为止。
例如,用户按主窗口的关闭按钮,或者选择执行系统菜单“关闭”,或者从“文件”菜单选择执行“退出”,都会导致主窗口被关闭。
当用户从“文件”菜单选择执行“退出”时,将发送MFC标准命令消息ID_APP_EXIT。MFC实现了函数CWinApp::OnAppExit()来完成对该命令消息的缺省处理。
void CWinApp::OnAppExit()
{
// same as double-clicking on main window close box
ASSERT(m_pMainWnd != NULL);
m_pMainWnd->SendMessage(WM_CLOSE);
}
可以看出,其实现是向主窗口发送WM_CLOSE消息。主窗口处理完WM_CLOSE消息之后,关闭窗口,发送WM_QUIT消息,退出消息循环(见图5-3),进而退出整个应用程序。
边框窗口对WM_CLOSE的处理
MFC提供了函数CFrameWnd::OnClose来处理各类边框窗口的关闭:不仅包括SDI的边框窗口(从CFrameWnd派生),而且包括MDI的主边框窗口(从CMDIFrameWnd派生)或者文档边框窗口(从CMDIChildWnd派生)的关闭。
该函数的原型如下,流程如图6-1所示:
void CFrameWnd::OnClose()
从图6-1中可以看出,它首先判断是否可以关闭窗口(m_lpfnCloseProc是函数指针类型的成员变量,用于打印预览等情况下),然后,根据具体情况进行处理:
如果是主窗口被关闭,则关闭程序的所有文档,销毁所有窗口,退出程序;
如果不是主窗口被关闭,则是文档边框窗口被关闭,又分两种情况:若该窗口所显示的文档被且仅被该窗口显示,则关闭文档和文档窗口并销毁窗口;若该窗口显示的文档还被其他文档边框窗口所显示,则仅仅关闭和销毁文档窗口。

下面是处理 WM_CLOSE消息中涉及的一些函数。

BOOL CDocument::SaveModified()
该虚拟函数的缺省实现:首先调用IsModifed判断文档是否被修改,没有修改就返回,否则继续。
当询问用户是否保存被修改的文档时,若用户表示“cancel”,返回FALSE;若用户表示“no”,则返回TRUE;若用户表示“yes”,则存盘失败返回FALSE,存盘成功返回TRUE。存盘处理首先要得到被保存文件的名称,然后调用虚拟函数OnSaveDocument完成存盘工作,并使用SetModifidFlag(FALSE)设置文档为没有修改。
BOOL CDocument::OnSaveDocument(LPCTSTR lpszPathName)
该函数是虚拟函数,用来保存文件。其实现的功能和OpOpenDocument相反,但处理流程类似,描述如下:
根据lpszPathName打开文件pFile;
使用pFile构造一个用于写入数据的CArchive对象,此对象用来保存数据到文件;
设置鼠标为时间瓶形状;
使用Serialize函数完成序列化写;
完毕,恢复鼠标的形状。
CWinApp::SaveAllModified()
CWinApp::CloseAllDocuments(BOOL bEndSession)
这两个函数都遍历模板管理器列表,并分别对列表中的模板管理器对象逐个调用CDocManager的同名成员函数:
CDocManager::SaveAllModified()
CDocManager::CloseAllDocuments(BOOL bEndSession)
这两个函数都遍历其文档模板列表,并分别对列表中的模板对象逐个调用CDocTemplate的同名成员函数:
CDocTemplate::SaveAllModified()
CDocTemplate::CloseAllDocuments(BOOL bEndSession)
这两个函数都遍历其文档列表,并分别对列表中的文档对象逐个调用CDocuemnt的成员函数:
CDocument::SaveModified()
CDocument::OnCloseDocument()
CDocument::SaveModified()
CDocument::OnCloseDocument()
CDocument::SaveModified前面已作了解释。OnCloseDocument是一个虚拟函数,其流程如图6-2所示。
通过文档对象所对应的视,得到所有显示该文档的边框窗口的指针:在SDI程序关闭窗口时,获取的是主边框窗口;在MDI程序关闭窗口时,获取的是MDI子窗口。
然后,关闭并销毁对应的边框窗口。
如果文档对象的 m_bAutoDelete为真,则销毁文档对象自身。

窗口的销毁过程
DestroyWindow
从图6-1、图6-2可以看出,销毁窗口是通过调用DestroyWindow来完成的。DestroyWindow是CWnd类的一个虚拟函数。CWnd实现了该函数,而CMDIChildWnd覆盖了该函数。
(1)CWnd::DestroyWindow()
主要就是调用::DestroyWindow销毁m_hWnd(必须非空),同时销毁其菜单、定时器,以及完成其他清理工作。
::DestroyWindow使将被销毁的窗口失去激活、失去输入焦点,并发送WM_DESTROY、WM_NCDESTROY消息到该窗口及其各级子窗口。如果被销毁的窗口是子窗口且没有设置WM_NOPARENTNOTFIY风格,则给其父窗口发送WM_PARENTNOFITY消息。
(2)CMDIChildWnd::DestroyWindow()
因为MDI子窗口不能使用::DestroyWindows来销毁,所以CMdiChildWnd覆盖了该函数,CMDIChildWnd主要是调用成员函数MDIDestroy给客户窗口(父窗口)发送消息WM_MDIDESTROY,让客户窗口来销毁自己。
处理WM_DESTROY消息
消息处理函数OnDestroy处理WM_DESTROY消息,CFrameWnd、CMDIChildWnd、CWnd、CView及其派生类(如CEditView等等)、CControlBar等都提供了对该消息的处理函数。这里,主要解释边框、文档边框、视类的消息处理函数OnDestroy。
CWnd::OnDestroy()
调用缺省处理函数Default()。
CFrameWnd::OnDestroy()
首先,销毁工具栏的窗口;然后,设置菜单为缺省菜单;接着,如果要销毁的是主边框窗口,则通知HELP程序本应用程序将退出,没有其他程序使用WINHELP则关闭WINHELP;最后调用CWnd::OnDestroy。
CMDIFrameWnd::OnDestroy()
首先,调整客户窗口的边界类型;然后,调用基类CframeWnd的OnDestroy。这时,MDI子窗口的工具栏窗口列表为空,故没有工具栏窗口可以销毁。
CView::OnDestroy()
首先,判断自身是否是边框窗口的活动视,如果是则调用边框窗口的SetActivateView使自己失去激活;然后,调用基类CWnd的OnDestroy。
处理WM_NCDESTROY消息
窗口的非客户区被销毁时,窗口接收WM_NCDESTROY消息,由OnNcDestroy处理WM_NCDESTROY消息。在MFC中,OnNcDestroy是Windows窗口被销毁时调用的最后一个成员函数。
CWnd、CView的某些派生类提供了对该消息的处理函数,这里只讨论CWnd的实现。
CWnd::OnNcDestroy()
首先判断当前线程的主窗口是否是该窗口,如果是且模块非DLL,则发送WM_QUIT消息,使得程序结束;
然后,判断当前线程的活动窗口是否是该窗口,如果是则设置活动窗口为NULL;
接着,清理Tooltip窗口,调用Default由Windows缺省处理WM_NCDESTROY消息,UNSUBCLASS,把窗口句柄和MFC窗口对象分离(Detach);
最后,调用虚拟函数PostNcDestoy。
PostNcDestoy
CWnd、CFrameWnd、CView、CControlBar等都覆盖了该函数。文档边框窗口和边框窗口都使用CFrameWnd::PostNcDestroy。
CWnd::PostNcDestroy()
MFC缺省实现空
void CFrameWnd::PostNcDestroy()
调用delete this销毁自身这个MFC对象。
void CView::PostNcDestroy()
调用delete this销毁自身这个MFC对象。
析构函数
delete this导致析构函数的调用。需要提到的是CFrameWnd和CView的析构函数。
CFrameWnd::~CFrameWnd()
边框窗口在创建时,把自身加入到模块-线程状态的边框窗口列表m_frameList中。现在,从列表中移走该窗口对象。
必要的话,删除m_phWndDisable数组。
CView::~CView()
在视创建时,把自身加入到文档对象的视列表中。现在,从列表中移走该视对象。
应用程序调用CloseAllDocument关闭文档时。参数为FALSE,它实际上并没有把视从列表中清除,而最后的清除是由析构函数来完成的。
至此,边框窗口关闭的过程讨论完毕。下面,结合具体情况——SDI窗口的关闭、MDI主窗口的关闭、MDI子窗口的关闭——描述对WM_CLOSE消息的处理。
SDI窗口、MDI主、子窗口的关闭
参考图6-1分析SDI窗口、MDI主、子窗口的关闭流程。
SDI窗口的关闭
在这种情况下,主窗口将被关闭。首先,关闭应用程序的文档对象。文档对象的虚拟函数OnCloseDocument调用时销毁了主窗口(Windows窗口和MFC窗口对象),同时也导致视、工具条窗口的销毁。主窗口销毁后,应用程序的主窗口对象为空,故发送WM_QUIT消息结束程序。
MDI主窗口的关闭
首先,关闭应用程序的所有文档对象。文档对象的OnCloseDocument函数关闭文档时,将销毁文档对象对应的文档边框窗口和它的视窗口。这样,所有的MDI子窗口(包括其子窗口视)被销毁,但应用程序的主窗口还在。接着,调用DestroyWindow成员函数销毁主窗口自身,DestroyWindow发现被销毁的是应用程序的主窗口,于是发送WM_QUIT消息结束程序。
MDI子窗口(文档边框窗口)的关闭
在这种情况下,被关闭的不是主窗口。判断与该文档边框窗口对应的文档对象是否还被其他一个或者多个文档边框窗口使用,如果是,则仅仅销毁该文档边框窗口(包括其子窗口视);否则,关闭文档,文档对象的OnCloseDocument将销毁该文档边框窗口(包括其子窗口视)。

上一章 回目录 下一章

‘肆’ MFC列表控件的使用(MFC点击按钮模拟鼠标点击)

在按钮的OnLbuttonDown函数中,把List中的单击实现拷贝过来就可以了

‘伍’ MFC中怎么使用自定义控件

资源编辑器里你照样拖,在头文件里包含你的CMyButton.h头文件,用你自己的类定义一个成员变量,并在实现文件中将这个变量和资源中的ID对应起来

以CButtonST为例

在.h中包含CButtonST类头文件,并定义一个成员变量
CButtonST m_btnTest;

在.CPP文件中将成员变量和资源中的控件关联

void CXXXDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_BTN_TEST, m_btnTest);
}

‘陆’ MFC怎么调用ActiveX控件

1:使用project-->Add to Project-->Components and Controls, 然后选择要加入的ocx或者dll,系统会自动生成.cpp和.h文件.并自动加入AfxEnableControlContainer(),这样就可以使用了.

2:由于activeX一般都有界面,所以可以在dialog里面插入控件的方式来使用,该方式是最简单的一种。创建一个dialog,然后点击右键选择Insert ActiveX Control,在控件库里面找到刚才注册的控件,这时在Controls(按钮栏)里面会出现一个ocx的按钮,可以直接拖进去使用。这时MFC会自动产生一个类,就是包含该控件的类(CActiveXTest),同时在InitInstance()方法里面添加控件初始化函数AfxEnableControlContainer();这样就可以直接在dialog使用控件的方法了。譬如定义ocx按钮的名字为actx,则直接调用

‘柒’ C++中MFC的控件怎么使用

创建MFC工程后,侧边栏的"工具箱"中就会有各种工具了,拖到这个工程对话框中,执行程序,控件就可以显示了,至于控件的事件,需要自己添加

‘捌’ VC6.0中基于对话框的MFC EXE中的Tab Control控件如何使用

这是标签控件:控件添加标签
为标签控件添加标签需要使用InsertItem方法,该方法用于向标签控件中添加标签。语法如下:
BOOL
InsertItem(
int
nItem,
TCITEM*
pTabCtrlItem
);
BOOL
InsertItem(
int
nItem,
LPCTSTR
lpszItem
);
BOOL
InsertItem(
int
nItem,
LPCTSTR
lpszItem,
int
nImage
);
BOOL
InsertItem(
UINT
nMask,
int
nItem,
LPCTSTR
lpszItem,
int
nImage,
LPARAM
lParam
);
参数说明如下。
l
nMask:确定哪一项标签信息可用。
l
nItem:标识新的标签索引。
l
pTabCtrlItem:是TCITEM结构指针,TCITEM结构中包含了标签的详细信息。
l
lpszItem:标识被插入项的指针。
l
nImage:标识图像索引。
l
lParam:用于设置关联标签的附加信息。
我这可能讲得不够详细,你可以到网络里搜索一下标签控件,会得到很多资料

阅读全文

与mfc控件的使用方法相关的资料

热点内容
红茶泡法正确方法图片 浏览:758
绿吕洗发水使用方法 浏览:645
贵州炉子制作方法视频 浏览:304
舞蹈潜质训练方法 浏览:454
性格优缺点分析方法 浏览:125
有什么方法降低鼠标声音吗 浏览:320
红包跳包排序解决方法 浏览:444
情志焦虑病的中医治疗方法 浏览:78
铁锅首次使用方法 浏览:270
湖北松花粉食用方法 浏览:554
早上美声快速开声的方法 浏览:801
万能表使用方法说明书 浏览:750
聚类分析相对于主成分分析方法 浏览:817
电子表格怎么选择求和方法 浏览:826
小米手机亮屏时间在哪里设置方法 浏览:538
马桶堵了的解决方法视频 浏览:408
嘴疱疹怎么治疗方法 浏览:963
培智教育教学方法书籍推荐 浏览:335
痛经解决方法用了还是痛 浏览:41
怎么做大蛋糕简单的方法 浏览:193