MFC
文章平均质量分 64
luckyone906
这个作者很懒,什么都没留下…
展开
-
MFC中在子线程中创建UI控件及对话框的方法
c++原创 2022-10-14 21:14:25 · 1484 阅读 · 0 评论 -
MFC中子线程中调用主线程的窗口指针
MFC原创 2022-10-14 20:19:13 · 1415 阅读 · 0 评论 -
c++中MFC消息机制,UI线程和工作线程,模式对话框原理
c++原创 2022-10-13 19:48:09 · 1746 阅读 · 0 评论 -
MFC-动态创建控件并使用的方法
CListBox* newLisBox = new CListBox();// newLisBox->SetParent(&m_tab); CRect rc; m_tab.GetClientRect(rc); rc.top += 20 + GroupItemCount*(50+10); rc.bottom = rc.top+50; rc.left += 0; rc.right -= 0; newLisBox->Create(W...原创 2022-01-16 17:50:57 · 727 阅读 · 0 评论 -
MFC-创建模态对话框和非模态对话框的方法
在MFC中对话框有两种形式,一个是模态对话框(modeldialog box),一个是非模态对话框(modeless dialog box)。本文对此分别简述其创建方法。一、模态对话框(model dialog box)在程序运行的过程中,若出现了模态对话框,那么主窗口将无法发送消息,直到模态对话框退出才可以发送。点击模态对话框中的OK按钮,模态对话框会被销毁。创建一个模态对话框的代码如下所示: //创建一个模态对话框 CTestDialog td; td.D.原创 2022-01-15 18:48:58 · 4814 阅读 · 0 评论 -
MFC中添加的ID资源号提示找不到声名问题
1.查看resource.h资源文件,基本上都是因为某些界面上的修改等原因造成了里面部分定义ID号值重复了才报的错,所以要在resource.h文件中手动修改成不一样的id值。原创 2022-01-15 18:40:32 · 340 阅读 · 0 评论 -
MFC-使用自定义控件的方法
1.在资源编辑中设计好界面。2.右键界面在类向导里创建类型后自动生成界面的.h和.cpp文件3.在使用该界面类型的类中创建该成员变量。4.Create创建注册窗体UICRect crect; GetClientRect(&crect); FontDiscernDialog* fd = new FontDiscernDialog(); if (fd->m_hWnd == NULL) { fd->Create(IDD_FORMV...原创 2022-01-15 16:57:56 · 2162 阅读 · 0 评论 -
MFC-Tab Control控件使用
在MFC当中使用Tab Control控件切换不同的界面,使用起来会复杂一些,至少是比Qt中的Tab Widget复杂得多。我接下来会以一个MFC对话框应用程序为例子,说明Tab Control控件的简单使用方法。1.1建立一个MFC对话框应用程序,在对话框中拖入Tab Control控件,效果如下:1.2在对话框类中,声明一个CTabCtrl变量:CTabCtrl m_tab;变量m_tab用来与对话框中的Tab Control控件交互,为此要在DoDataExchange函数中加入DDX_转载 2022-01-15 13:59:44 · 2220 阅读 · 0 评论 -
MFC中创建线程实例
static UINT ThreadFunc(LPVOID pParam);//线程函数声明UINT CTestApp::ThreadFunc(LPVOID pParam)//可以传递对话框的等指针变量{//利用pParam指针参数来操作各种ui对象和类型等//线程函数实现}CWinThread *m_pThread; //线程指针m_pThread = AfxBeginThread(ThreadFunc, NULL); //启动线程就可以了...原创 2022-01-14 22:27:56 · 417 阅读 · 0 评论 -
MFC框架机制详细论述
1.1 Windows消息机制要点1.1.1 窗口过程 每个窗口会有一个称为窗口过程的回调函数(WndProc),它带有四个参数,分别为:窗口句柄(Window Handle), 消息ID(Message ID), 和两个消息参数(wParam, lParam), 当窗口收到消息时系统就会调用此窗口过程来处理消息。(所以叫回调函数)1.1.2 消息类型 1. 系统定义消息(System-Defined Messages) 在SDK中事先定义好的消息,非用户定义的,其范围在[0x000原创 2021-12-09 20:30:35 · 973 阅读 · 0 评论 -
MFC框架结构简述
现在直接给出MFC程序执行顺序,但着重分析其运行机制和功能分析,其流程是“theApp全局对象定义->TestApp构造函数->WinMain函数”。在执行theApp对象的构造函数之前先执行CWinApp基类的构造函数,从而把我们自己创建的类和MFC类相关联起来了。文档应用程序中,都有五个类,部分类名和工程名相关联。在MFC程序有且仅有一个从应用程序类(CWinApp)派生的类,而且仅有一个该派生类的实例化对象每个窗口会有一个称为窗口过程的回调函数(WndProc)..原创 2021-12-09 20:24:42 · 933 阅读 · 0 评论 -
MFC的框架程序分析3
本文将剖析基于MFC的框架程序,探讨MFC框架程序的内部组织结构,MFC是微软为了简化程序员的开发工作而设计的一套c++类集合,利用这些类有效地帮助程序员完成windows应用程序开发。代码结构我们利用VS2008 IDE创建一个名为Test的工程,程序类型选择为单文档,其他默认不变,最终会生成一套代码,这套代码可以直接运行。在生成的单文档应用程序中,都有五个类,部分类名和工程名相关联。图1展示了IDE向导生成的代码结构示意图以及对应的类功能。 ...原创 2021-12-09 20:22:25 · 244 阅读 · 0 评论 -
MFC框架简介2
MFC框架简介一、MFC框架MFC库是开发Windows应用程序的C++接口。MFC提供了面向对象的框架,采用面向对象技术,将大部分的Windows API 封装到C++类中,以类成员函数的形式提供给程序开发人员调用。CWnd类是MFC中一个非常重要的类,它封装了与窗口相关的操作。在前面中,曾经有构建一个Windwos程序的几个部分:http://blog.163.com/zhoumhan_0351/blog/static/3995422720103401415721 MFC中的..原创 2021-12-09 20:19:09 · 405 阅读 · 0 评论 -
MFC框架1
第一点:类别型录网的搭建:类别型录网搭建的目的是为了实现所谓的"执行期类型识别",也就是在程序运行的时候识别出某个对象是否是某个类的实例(基类也可以)。这里还不是很明白为什么需要实现"执行期类型识别",这种技巧具体被应用在哪里。例如在MFC中CView继承于CWnd,那么可以进行这样的判断:CView view;bool result = view.IsKindOf(CWnd); // result == true如上,通过调用IsKindOf函数,可以判断出view对象是一个CWnd类原创 2021-12-09 20:16:23 · 802 阅读 · 0 评论 -
MFC中动态创建控件以及添加事件响应
本文实例讲述了MFC中动态创建控件以及事件响应实现方法,分享给大家供大家参考。具体实现方法如下:动态控件是指在需要时由Create()创建的控件,这与预先在对话框中放置的控件是不同的。一、创建动态控件: 为了对照,我们先来看一下静态控件的创建。 放置静态控件时必须先建立一个容器,一般是对话框,这时我们在对话框编辑窗口中,从工具窗口中拖出所需控件放在对话框中即可,再适当修改控件ID,设置控件属性,一个静态控件就创建好了,当对话框被显示时,其上的控件也会显示。 静态控件不需要调用Create原创 2021-12-09 20:13:25 · 3804 阅读 · 2 评论 -
MFC中Windows窗口消息循环及多线程之间关系
Windows中一个进程可以包含多个线程,由多个线程组成。在Windows应用程序中,窗体是由“UI线程(User Interface Thread)”的特殊类型的线程创建的。一个UI线程包含一个消息循环对列。在窗口运行过程中,按下控件或对窗口进行一些操作等同于向消息循环队列插入消息;然后由系统调用相应消息的响应函数,使用户操作得到响应。 当窗口某个消息的响应函数占用大量时间时,必定会影响窗口对下一个消息的响应。因此,对与那些比较耗时的操作的响应,使用多线程应该是个比较好的选择。即在控件的响应...原创 2021-12-05 21:20:30 · 570 阅读 · 0 评论 -
C++中消息机制阻塞实验
VC6标准WIN32程序,Windows消息处理机制:1.在注册窗口类时,指定了消息处理函数WndProc()。2.WinMain()里有消息循环: while (GetMessage(&msg, NULL, 0, 0)) { if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg)) { TranslateMessage(&msg);...原创 2021-10-30 10:34:19 · 1578 阅读 · 0 评论 -
Window捕获消息机制及动态创建button-MFC
PreTranslateMessage()函数捕获键盘按键消息01. PreTranslateMessage函数,常用于屏蔽MFC对话框中默认的Enter和ESC消息函数原型:BOOL PreTranslateMessage(MSG* pMsg)用法举例:BOOL CTestDlg::PreTranslateMessage(MSG* pMsg){ if(pMsg->message == WM_KEYDOWN){ if(pMsg->wParam == VK...原创 2021-04-07 20:13:20 · 226 阅读 · 0 评论 -
MFC中动态创建控件及添加消息响应的方法实例
动态控件是指在需要时由Create()创建的控件,这与预先在对话框中放置的控件是不同的。 一、创建动态控件: 为了对照,我们先来看一下静态控件的创建。 放置静态控件时必须先建立一个容器,一般是对话框,这时我们在对话框编辑窗口中,从工具窗口中拖出所需控件放在对话框中即可,再适当修改控件ID,设置控件属性,一个静态控件就创建好了,当对话框被显示时,其上的控件也会显示。 静态控件不需要调用Create()函数来创建。 而创建动态控件有很大不同,以下以按钮为例,看一下动态控件的创建过程: .原创 2021-04-07 20:12:17 · 1431 阅读 · 0 评论 -
MFC添加自定义消息及重写消息过程
由于MFC中无法通过类向导来自定义消息,所以需要手动添加,主要过程如下:本文基于vs2008下通过线程实现数据实时更新的对话框运用程序1. 定义消息(Resource.h文件中):由于很多新控件也会用到WM_USER消息,所以定义WM_USER+100或更高,避免冲突#define WM_UPDATEDATA (WM_USER + 100)2015-3-18 更新1. 定义消息( stdafx.h文件中):由于很多新控件也会用到WM_USER消息,所以定义WM_.原创 2020-07-14 22:40:38 · 4072 阅读 · 1 评论 -
窗口句柄、窗口类对象的关系
HWND hwnd;//窗口句柄CWnd wnd;//窗口类对象窗口类对象中有一个成员是窗口句柄。窗口句柄,提供了窗口的一个标识,类似于指针的概念,每一个窗口都对应了一个窗口句柄作为其标识,通过句柄可以方便的从内存中索引到资源。窗口类的对象则是对应窗口类的一个实例化,在MFC程序中,通过子类对象访问类的函数时就不需要提供窗口句柄作为资源标识。举例说明:SDK编程中创建一...原创 2019-11-27 10:02:56 · 742 阅读 · 0 评论 -
VC实现自定义控件步骤
一. 控件的最小实现1.1 添加MFC类CMyCtrl添加MFC类CMyCtrl, 继承CWnd.(用向导添加, 自己手动写代码都可以).1.2 添加CMyCtrl::RegisterWindowClass函数添加和实现CMyCtrl::RegisterWindowClass函数(函数名随便), 该函数在构造函数中调用即可.1.3 添加CMyCtrl::Create函数函...转载 2019-05-24 13:19:09 · 876 阅读 · 0 评论 -
[翻译]VC++中创建并使用自定义控件
原文地址介绍您好!这是我在CodeProject上的第四篇文章。迁移到VC++,我第一个关注的是通过VC++帮助能够创建自定义控件,因为这是一个非常用有的特性,当你要修改任意控件的内容或创建新的控件的时候。所以我决定写这篇文章,这样新的开发者或第一次开发控件的人就能够从中得到帮助。这就是所有的介绍,现在转到最初的观点:怎么创建自定义控件,为什么要创建自定义控件。我对在Win32 API下...转载 2019-05-24 13:20:09 · 985 阅读 · 0 评论 -
MFC概念问题
CDlgFloSetup dlgFloSetup; dlgFloSetup.SetCurSample(GetCurSamples()); dlgFloSetup.set_select_infos(floInfos); if (IDOK==dlgFloSetup.DoModal())//MFC中的局部对话框的类对象中只是创建的窗体句柄释放,对话框对象在...原创 2019-05-24 13:21:24 · 258 阅读 · 0 评论 -
MFC中的控件是怎么实现的呢?一个按钮就是一个窗口?还是所有按钮画在一个分层窗口上再叠
请教一下MFC中的控件是怎么实现的呢(通过调用什么样的API,传递什么参数)?一个按钮就是一个窗口?还是所有按钮画在一个分层窗口上再叠在主窗口上?还是直接在主窗口上画图?我想到的是:JavaScript code? 1 2 3 4 5 6 7 8 9 10 11 12 13 ...转载 2019-05-23 11:26:47 · 570 阅读 · 0 评论 -
error LNK2026: 模块对于 SAFESEH 映像是不安全的
在使用VS2015编译工程时,提示错误:"error LNK2026: 模块对于 SAFESEH 映像是不安全的"解决方法:1.打开该项目的“属性页”对话框。2.单击“链接器”文件夹。3.单击“命令行”属性页。4.将/SAFESEH:NO键入“其他选项”框中,然后点击应用。...转载 2019-05-24 15:01:04 · 1035 阅读 · 0 评论 -
Visual Studio 2013 出现错误 error RC2108: expected numerical dialog constant
今晚突然发现“对话框贴上去的图片由于电脑分辨率不同,显示也不一样”的bug。然后快马加鞭使用Picture Control。但是出现了这样的错误:在 CONTROL IDB_BITMAP2,IDC_STATIC,7,7,400,230,NOT WS_GROUP加上一"Static",SS_BITMAP, 即可CONTROL IDB_BITMAP2,IDC_STATIC,"Static"...转载 2019-05-24 15:02:34 · 297 阅读 · 0 评论 -
MFC动态按钮的创建及其消息响应 和 自定义消息
原文链接:http://www.cnblogs.com/gaohongchen01/p/4046525.html动态按钮(多个)的创建:1、在类中声明并定义按钮控件的ID#define IDC_D_BTN 100002、在类的OnInitDialog()函数中动态创建按钮(建立按钮对象时最好建立对象的指针)3、手动释放对象指针下面是动态生成多个按钮的例子:CBut...转载 2019-05-24 16:22:29 · 966 阅读 · 0 评论 -
MFC中动态创建button及添加响应事件
MFC中动态创建button及添加响应的事件,主要步骤如下:1、在头文件(**Dlg.h)中添加一个CButton类型,例如:CButton btn;2、在(**Dlg.cpp)的OnInitDialog中创建并显示button:btn.Create(“按钮”, WS_CHILD | BS_DEFPUSHBUTTON, CRect(10, 10, 100, 100), this, ...转载 2019-05-24 17:05:08 · 3452 阅读 · 0 评论 -
MFC SendMessage()函数传递字符串
CString cstr1 = _T("123");CString cstr2 = _T("hello");::SendMessage(hWnd, WM_XXX, (WPARAM)(LPCTSTR)cstr1, (LPARAM)(LPCTSTR)cstr2);LRESULT CXXXDlg::OnXXX(WPARAM wParam, LPARAM lParam){// 在消息处理函数...转载 2019-05-25 19:30:28 · 1562 阅读 · 0 评论 -
C++MFC编程笔记day01 MFC介绍、创建MFC程序和重写消息处理
一、MFC概念和作用1、全称Microsoft Foundation Class Library,我们称为微软基础类库,封闭了绝大部分的win32 Api函数,C++语法中的数据结构,程序的执行流程MFC就是一个库(动态库,静态库)MFC还是一个程序框架2、为什么使用MFC基于框架编程,提高工作效率,减少开发周期,节约开发成本。二、几个重要的头文件afx.h -绝大部分类的声...转载 2019-05-25 19:31:25 · 1047 阅读 · 0 评论 -
MFC中的消息处理函数
1、在Windows API编程中,直接在消息处理函数中编写WM_PAINT处理代码。2、在MFC中,CFrameWnd的消息处理过程在哪里呢?MFC时如何将消息处理函数和窗口关联起来的。 在CFrameWnd::CreateEx中,调用PreCreateWindows来注册窗口。 AfxDefRegisterClass(AFX_WNDFRAMEORVIEW_REG):注册一个固定...转载 2019-05-25 19:32:38 · 1795 阅读 · 0 评论 -
MFC添加自定义消息及处理函数
添加消息在头文件中添加:#define WM_MYMSG WM_USER+1WM_USER以下的消息都是系统消息,所以自定义消息时,ID要比WM_USE大;添加函数声明(用于响应自定义消息):afx_msg LRESULT OnMyMsgHandler(WPARAM, LPARAM);在源文件的消息映射中添加:ON_MESSAGE(WM_MYMSG,OnMyMsgHan...转载 2019-05-25 20:03:48 · 2555 阅读 · 0 评论 -
MFC自定义消息的实现方法
一、概述:消息机制是windows程序的典型运行机制,在MFC中有很多已经封装好了的消息,如WM_BTN**等。但是在有些特殊情况下我们需要自定义一些消息去完成一些我们所需要的功能,这时候MFC的向导不能帮助我们做到这一点。对此,我们可以通过添加相应的代码去完成这个功能。二、实现方法:添加自定义消息操作如下:1. 建立MFC工程,如基于对话框的应用程序,Test。2. 在资源中添加...转载 2019-05-25 20:05:22 · 615 阅读 · 0 评论 -
MFC窗体对象概念
MFC框架中,所有Cwnd的派生类都是窗口类型,包括了Cview,CframWnd,Cdialog,Cbutton,Clist等控件等,它们都经历了窗口类的注册,窗口句柄的创建,窗口显示,这些过程,只不过是由于封装的缘故,除了win32程序代码可详细的描述api实现这一过程之外,mfc中隐藏封装了其中的很多过程,但是底层代码都是能追踪到上述过程所用到的win32api的,例如一个Cbutton类型...原创 2019-05-25 22:32:40 · 415 阅读 · 0 评论 -
MFC的来龙去脉-----消息处理,找处理函数
一、处理函数的源头 对于对话框程序,(无论是模式还是非模式),在注册窗口的时候,会指定其窗口过程处理函数WinProc;当消息找到了对应的窗口,DispatchMessage便开始让内核user32.dll执行WinProc,它负责调用真正的消息处理函数;if (pState->m_msgCur.message != WM_KICKIDLE && !AfxPreTra...转载 2019-05-25 22:43:28 · 702 阅读 · 0 评论 -
MFC一一添加WM_USER自定义消息
有些时候,我们希望自定义一些消息响应函数来控制何时进行消息触发,或针对两个不同类或线程之间进行消息互动,这个时候自定义消息响应函数就起到很大作用了。那么如何添加自定义消息呢?具体分为以下几步:如下是一个SDI应用程序关于用户测试界面刷新的代码片段,可以参考其实现过程:(1).定义WM_USER宏#define WM_USER_REFURBISH_TEST_RESULT ...转载 2019-05-26 00:34:04 · 1147 阅读 · 0 评论 -
MFC 类库结构 总结
MFC主要类库结构总结MFC类主要分为应用程序结构类、窗口支持类、图书设备类、模版集合类、简单数据类型类以及全局AFX函数等6个类。1.应用程序结构类应用程序结构类代表的是应用程序的基本元素,主要包括了CcmdTarget类、CwinThread类、CwinApp类、Cdocument类以及CdocTemplate类等。应用程序开始运行时,应用程序结构类最先被初始化。应用程...转载 2019-05-26 00:35:09 · 1987 阅读 · 0 评论 -
MFC基本框架结构
本文将剖析基于MFC的框架程序,探讨MFC框架程序的内部组织结构,MFC是微软为了简化程序员的开发工作而设计的一套c++类集合,利用这些类有效地帮助程序员完成windows应用程序开发。代码结构我们利用VS2008 IDE创建一个名为Test的工程,程序类型选择为单文档,其他默认不变,最终会生成一套代码,这套代码可以直接运行。在生成的单文档应用程序中,都有五个类,部分类...转载 2019-05-26 00:36:15 · 1695 阅读 · 0 评论 -
mfc编程消息机制中消息汇总
做VC开发必须熟悉消息机制,笔试面试重点,自己在这方面很欠缺,搜集学习一下 WM_CREATE CreateWindow 初始化工作 GetMessage 遇到WM_QUIT,程序结束 DispatchMessage 向窗口派送消息 重复2,3操作 关闭按钮,发出WM_CLOSE DefWindowProc处理WM_CLOSE消息,...转载 2019-05-26 00:37:34 · 395 阅读 · 0 评论