首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MFC:在CView::OnInitalUpdate()被调用后,会调用哪个CFrameWnd函数?

相关·内容

窗口分割

大家好,又见面了,我是全栈君 我们使用OutLook或者NetAnt等工具的时候,一般都会被其复杂的界面所吸引,在这些界面中窗口分割为若干的区域,真正做到了窗口的任意分割。...要解决这个问题,Visual C++6.0编程中就需要使用到MFC提供的CSplitterWnd类。CSplitterWnd看上去像是一种特殊的框架窗口,每个窗口都被相同的或者不同的视图所填充。...)));   然后我们重载 CDocument::OnOpenDocument()函数函数中定义如下变量:CCuteFTPView* pCuteFTPView、CView2* pView2、POSITION...要隐藏分割器窗口中的某个视图,只需调用GetPane函数得到视图指针,然后调用ShowWindow函数隐藏窗口。...但是这样做只隐藏了视图窗口,没有隐藏分割条;当程序框架尺寸变化后,程序自动调用RecalcLayout函数,从而使得显示效果不正常。

72720

图像处理程序框架—MFC相关知识点

dc(this); //draw code here } 这里的CPaintDC的构造函数自动调用BeginPaint,获得一个屏幕DC,并附加在dc对象上。...而OnDrawBeginPaint与EndPaint间调用。  1) mfc结构里OnPaint是CWnd的成员函数....所以不是因为重绘消息所引发的OnPaint导致OnDraw调用时,比如在OnLButtonDown等消息处理函数中绘图时,要先自己调用OnPrepareDC。 ...2、联系:我们一般视类中作图的时候,往往不直接响应WM_PANIT消息,而是重载OnDraw纯虚函数,这是因为CVIEW类中的WM_PANIT消息响应函数调用了OnDraw函数,如果在CMYVIEW...所以OnDraw()里你可以区别对待打印和屏幕绘制。  其实,MFC进行打印前后还做了很多工作,调用了很多虚函数,比如OnPreparePrint()等。

1.4K20

MFC原理第六讲.消息传递

要学习的知识     1.窗口创建的流程.以及默认的回函数     2.消息处理流程 二丶窗口创建的流程.以及默认的回函数   我们要看窗口创建.那么就需要跟进 MFC源码去看.....设置窗口回函数....& AfxWndProc; } 总结: 通过上面代码我们得知了.窗口创建的时候以及窗口回调进行的一些列设置   1.调用Create创建窗口   2.设置窗口类.   3.注册窗口类.   4....wParam, lParam); return AfxCallWndProc(pWnd, hWnd, nMsg, wParam, lParam); } 我们如果自己去看.可以看到.WindProc函数外部调用的...如果自己不处理.那么默认就调用 CWnd里面的消息处理函数了 而里面的 OnMsg函数同样也是一个虚函数. 如果不该写一样调用父类的 调试可以看一下. ? 只是部分代码截图.如果有兴趣可以深究.

93710

VC6.0基础知识使用小结

这段时间使用MFC做媒体播放器项目,查询了不少资料,用到的技术主要有ADO、多线程、DirectShow、MFC相关控件包括ActiveX控件(Windows Media Player、Active...方法2:直接通过代码加载菜单 的对话框类的OnInitDialog()函数中加这么几行代码就搞定了。  ...首先一般获得本类(视,文档,对话框都支持)实例指针this,用this的目的,主要可以通过类中的函数向其他类或者函数中发指针,以便于非本类中操作和使用本类中的 功能。  ...获得菜单指针    CMenu   *pMenu=m_pMainWnd->GetMenu(); 9) 在任何类中获得应用程序类        用MFC全局函数AfxGetApp()获得。...   GetFirstViewPosition()   const;         virtual   CView*   GetNextView(POSITION&   rPosition)

1.2K20

深入浅出MFC-读书笔记

Win32 中CALLBACK 定义为__stdcall,是一种函数调用习惯,关系到参数挤压到堆栈的次序,以及处理堆栈的责任归属。其它的函数调用习惯还有_pascal 和_cdecl。...既然抽象类别中的虚拟函数不打算调用,我们就不应该定义它,应该把它设为纯虚拟函数函数声明之后加上”=0″ 即可)。 5....衍生类别继承基础类别的虚拟函数表(以及所有其它可以继承的成员),当我们衍生类别中改写虚拟函数时,虚拟函数表就受了影响:表中元素所指的函数地址将不再是基础类别的函数地址,而是衍生类别的函数地址。...有关文件读写的动作CDocument 的Serialize 函数进行,有关画面显示的动作CView 的OnDraw 或OnPaint 函数进行。...当你开发自己的程序,应该从CView 衍生出一个属于自己的View 类别,并且类别中(至少)改写专门负责显示资料的OnDraw 函数(针对屏幕)或OnPrint 函数(针对打印机)。

80120

设计模式(1)—— MVC

它的主要功能就是调用并协调需要的资源/对象来执行用户请求。通常控制器会为任务调用合适的模型,以及选择合适的视图。...软件系统中,任何事物都可以抽象成可以对其以某种方式进行处理的数据模型。应用程序中的用户,信息以及图书是什么?...视图可以有多个,而控制器则决定使用哪个视图。一个网络应用通常由许多控制器,模型和视图组成。控制器可以看成是一个主控制器,用于接收用户的所有请求,然后调用特定的控制器来处理不同的情况。...過去MVC模式并不适合小型甚至中等规模的应用程序,这样带来额外的工作量,增加应用的复杂性。但現多數軟體設計框架,能直接快速提供MVC骨架,供中小型應用程序開發,此問題不再存在。...6、 MVC 实现示例 1)MFC MFC(Microsoft Foundation Classes) Document/View架构,是微软早期对于MVC模式的实现,MFC将工程分成CView 和 CDocument

1.4K50

MFC多线程

线程分为两种:用户界面线程和工作线程(又称为后台线程)。...(四)结束线程   终止线程有三种途径,线程可以自身内部调用AfxEndThread()来终止自身的运行;可以在线程的外部调用 BOOL TerminateThread( HANDLE hThread...首先用户要定义一个用 户消息,如下所示:#define WM_USERMSG WMUSER+100;需要的时候,一个线程中调用:: PostMessage((HWND)param,WM_USERMSG...使用它的过程中,需要给 各个线程提供一个共享的临界区对象,无论哪个线程占有临界区对象,都可以访问受到保护的数 据,这时候其它的线程需要等待,直到该线程释放临界区对象为止,临界区释放后,另外的线 程可以强占这个临界区...临界区对应着一个CcriticalSection对象,当线 程需要访问保护数据时,调用临界区对象的Lock()成员函数;当对保护数据的操作完成之后, 用临界区对象的Unlock()成员函数释放对临界区对象的拥有权

2.4K60

C++项目(1):学生信息管理系统(简单教学版)

不仅是更新界面,还有处理用户的输入,调用下面CStuMg类中对应的函数实现对应功能。  3. CStuMg类。处理信息,提供业务功能的类。e.g. 添加一个学生,删除一个学生…。...// ss >> x; 失败!!有逗号!!...main函数里,针对用户不同操作类型的输入,调用业务类CStuMg中的成员函数,执行相应的操作。  main和mainView开发过程中,可能互相交叉着写。这个就看个人了。  ...屏幕上显示内容,提示用户。   2. 接收用户的输入,把用户输入的数据封装。   3. 调用CStuMg(业务层)的函数,以实现某种功能。   e.g....Service层的CStuMg     View层里,程序已经调用Service层CStuMg这个类里的成员函数了。实际上,这些成员函数还没有写出来。现在继续填空。

1.2K10

MFC 键盘钩子「建议收藏」

光想不做可不行,开始行动(您可千万别急着去拿工具箱啊^_^)… 按键能发音,其关键就是让程序能够知道当前键盘上是哪个按下,并播放相应的声音,自己的程序当然不在话下,那么其它程序当前按下哪个键如何得知呢...下载本文的全部源代码 大小:552K 二、挂钩(HOOK)的基本原理 WINDOWS调用挂接的回函数时首先会调用位于函数链首的函数,我们只要将自己的回函数置于链首,该回函数就会首先调用。...那么如何将我们自己的回函数置于函数链的链首呢?函数SetWindowsHookEx()实现的就是该功能。...KeyboardProc,当钩子钩到任何消息后便调用这个函数,即当不管系统的哪个窗口有键盘输入马上会引起KeyboardProc的动作;第三个参数是钩子函数所在模块的句柄;最后一个参数是钩子相关函数的ID...程序中如何调用DLL呢?那就简单了.再用VC++6.0新建一个MFC AppWizard(exe)工程,命名为KeySound,点击”确定”后选择程序类型为对话框,直接点击确定即可.

1.2K20

windows10 记事本进程 键盘消息钩子 dll注入

MFC的使用改为“共享DLL中使用MFC”,原因是dll中会用到CString类型,要加入#include 这个头文件,如果不设置MFC的话,之后编译会报错;将字符集改为“使用多字节字符集...”,及ANSI,原因是ANSI和Unicode下,CSting的存储结构是不同的,前者是char *,后者是wchar_t *,而且字符集不同,有些函数的参数也跟着变,这个后面会说。...,该回函数会在每次有键盘消息 //传递给目标线程时调用,第二个参数在这个类型的钩子中放回的是虚拟键盘的信息,其他两个参数我不太清楚 { MessageBox(NULL, IsNumber(wParam...EnumProcesses函数调用会将当前所有进程id放入数组 DWORD NeededProcessesId = 0; //之后EnumProcesses函数调用后会将实际需要的进程数组的大小赋值给它...,返回进程id DoInject()函数是执行注入的过程,需要知道注入的线程的id EnumWindowsProc()函数是回函数,对于每个已存在的窗口,判断其进程id是否与目标进程id相同,如果是

1.7K10

钩子原理及实例:实现键盘钩子截获密码

得到控制权的钩子函数完成对消息的处理后,如果想要该消息继续传递,那么它必须调用另外一个SDK中的API函数CallNextHookEx()来传递它。...钩子函数也可以通过直接返回TRUE来丢弃该消息,并阻止该消息的传递。 执行SetWindowsHookEx(),返回所安装的钩子句柄。...钩子[回]函数   钩子函数是一种特殊的回函数。钩子监视的特定事件发生后,比如监听键盘的事件,系统会调用钩子函数进行处理。...,但是在运行时却依赖于MFC动态链接类库;这两种DLL既可以MFC程序使用也可以Win32程序使用。...由于全局钩子回函数必须包含在动态链接库中,所以本例由两个程序体来实现。第一个建立一个DDL动态链接库程序,实现重要函数的封装,第二个MFC程序提供界面,按钮安装和卸载钩子。

1.9K20

(以MFC框架讲解)

界面就是DUILIB框架写的.我们要通过逆向找到关键的内容必须熟悉框架.如果不熟悉框架,你就算逆向也不知道从哪里入手. 二丶通过MFC但文档,理解其设计方式. 因为是第一讲,所以从头讲起....API调用困难,我们可以封装成一个类 处理消息回.我们也可以封装成一个类, 既然封装成类,那么就要使用虚函数进行操作了. 1.首先封装WMain函数 2.每个类都要有一个公公的父类,这样可以添加公共接口...添加的时候遇到的问题 1.窗口过程函数没有.这个需要封装,但是因为是第一讲,所以暂时不封装 2.实例句柄没有,这个时候我们需要保存一下实例句柄 定义一个接口即可....注意: 窗口过程回函数一定是要又默认的回.不然不管你怎么注册窗口类,更新窗口类都会出错的....此时就该进行消息循环了. 4.1添加虚函数消息类中.并实现 4,2 自己封装的wmain进行调用. 我们最基础的框架已经搭建完成.

1.6K110

常见注入手法第二讲,APC注入

首先介绍一下APC,会了正想开发就会逆向注入 首先第一个函数 QueueUserApc: 函数作用,添加制定的异步函数调用(回函数)到执行的线程的APC队列中 APCproc:   函数作用: 回函数的写法...我们首先要知道异步函数调用的原理, 异步过程调用是一种能在特定线程环境中异步执行的系统机制。 往线程APC队列添加APC,系统产生一个软中断。...注入方法的原理: 1.当对面程序执行到某一个上面的等待函数的时候,系统产生一个中断 2.当线程唤醒的时候,这个线程优先去Apc队列中调用函数 3.我们利用QueueUserApc,往这个队列中插入一个回...编写一个MFC程序,这个程序的作用就是调用上面的SleepEx. ?...DLL附加的时候,调用一个MessageBox ③丶编写注入程序  我们要注入的是MFC,也就是写的测试程序,那么现在我们直接打开进程,打开线程,然后插入APC即可 ?

1.4K80

WINDOWS核心编程--Windows程序内部运行机制

窗口通过句柄识别:HWND 创建各种资源的时候也返回他们的句柄:图标句柄HICON,光标句柄HCURSOR 消息与队列 系统反过来调用用户进程---------这个调用通过–消息—实现 事件驱动设计程序...4 个参数,这些参数都是系统调用 WinMain 函数时,传递给应用程序的。...) 特定事件发生产生有另一方调用,用于相应事件 窗口过程函数-----地址赋给lpfnWndProc成员变量 WNDPROC定义为窗口过程函数的指针类型,窗口过程函数的格式必须与WNDPROC...相同 __stdcall与__cedcl—这是两个不同的函数调用约定,定义了弹出栈的不同的约定,到底是谁弹出,让调用函数还是调用函数弹出 printf用的是__cdecl调用约定,VS开发环境也是...Unicode AFXAPI MFC提供的函数 CALLBACK 通过指针回函数 库标识符命名法: 标识符&值和含义 u ANSI(N)或Unicode(U) d 调试或发行:D = 调试;

1.5K50

多线程编程10个例子--2

消息后中断,消息循环过程中,Run()函数检测到线程空闲时(没有消 息),也将调用OnIdle()函数,最后Run()函数返回,MFC调用ExitInstance()函数清理资源。   ...MFC中,CEvent 类对象有两种类型:人工事件和自动事件。...如果该函数执行成功,则返回非零值,否则返回零。 3、BOOL CEvent::ResetEvent();   该函数将事件的状态设置为无信号状态,并保持该状态直至SetEvent()调用时为止。...由于自动事件是由系统自动重置,故自动事件不需 要调用函数。如果该函数执行成功,返回非零值,否则返回零。我们一般通过调用WaitForSingleObject函数来监视事件状态。...这个CSemaphore 类对象所控制的资源可以同时接受访问的最大线程数该对象的构建函数中指定。

2K70

【CC++】回函数详解&注册窗口类&LRESULT & CALLBACK详解以及游戏中的应用

函数这个名字起的很好,可以明显感受到它有点 “返过来调用的意思”,它还有一个大众熟悉的称号:“好莱坞法则”。** don’t call us, we’ll call you....其实回函数以及不是单纯的手段了,它已经上升到了一种架构的层次,这个回手法其实多种设计模式所使用,特别在异步编程中,函数本身是一阶公民的语言更是如此。...发送一消息的含义是跳过消息队列,操作系统直接将其传递到窗口过程函数。 前者对应 API 中的 PostMessage 函数,该函数调用后会立即返回。...后者对应 API 中的 SendMessage,该函数调用后并不会插入队列而是直接传递到窗口过程函数进行处理执行,直到消息处理结束返回,可以将其看做同步。...绘制结束后,需要调用 EndPaint 函数。该函数清除更新区域,并向 Windows 发送信号,通知它程序已经完成了窗口的绘制,在下次发送变换之前无需再次发送 WM_PAINT 消息。

1.4K21

MFC中注释含义

这是因为 MFC 基于成员变量和函数的使用而非允许的访问类型来分隔它们。MFC 对 private 的使用很保守;即使是视为实现详细信息的项通常都受保护,但很多时候它们是公共的。...无论基类中的虚函数是在哪一节中定义的,该基类函数的重写都包括本节中,因为函数重写基类实现这一事实视为实现详细信息。这些成员通常是受保护的,但并非总是如此。...// Operations 注释 MFC 类声明中的 // Operations 节包含成员函数;可以在对象上调用这些函数,以使该对象执行任务或执行操作。...例如,CWnd::Create 位于构造函数节中,因为使用 CWnd 对象之前,必须首先调用 C++ 构造函数,然后调用 Create 函数来“完整构造”它。这些成员通常是公共的。...虚函数的名称通常以“On”开头,但 On 不是绝对需要的。此处的函数旨在被重写,并且常实现或提供某种类型的“回”或“挂钩”。这些成员通常是受保护的。  MFC 本身中,纯虚函数总是放在此节中。

1.1K70

牛人整理分享的面试知识:操作系统、计算机网络、设计模式、Linux编程,数据结构总结

Windows 内存使用的几种方式及相应的函数(虚拟内存、堆内存、栈内存)。 32. Malloc内部调用A函数,A函数调用B函数。A和B分别是什么? 33. 内存映射文件的作用。主要函数。...二:MFC 1. MFC包含哪几类程序? 其中MFC应用程序又包含哪几类? 2. MFC的中的大多数类都继承自哪个类? 3. MFC主要要用到哪几个类?及其各个类的作用。 4....MFC中有哪6类核心机制?Cobject中封装了哪些机制? 5. 在哪个类的什么函数中进行MFC程序初始化? 相当于main功能的函数。 6. MFC应用程序的启动机制的实现。...Fcntl函数主要的几个作用。 11. 创建进程的几个函数,及各自区别。 12. 父进程先结束,子进程变为? 子进程先结束,子进程变为? 13. 怎么使父进程回收子进程?...相关的几个函数。 14. 子进程创建时与父进程的内存资源的复制问题。 15. 中断信号、终止信号、定时器信号的宏是什么? 16. 程序中注册信号和发送信号用什么函数? 17.

2.4K41

visual C++ 项目和解决方案的区别

.exe文件:可执行文件 .ilk文件:重新构建项目时链接器使用,它使链接器能够根据修改的源代码生成的目标文件增量的链接到现有的.exe文件,从而避免每次修改程序时都重新链接所有文件。....vcxproj文件是MFC生成的工程文件,它包含当前工程的设置和工程所包含的文件等信息。.vcxproj.filters文件存放工程的虚拟目录信息,也就是解决方案浏览器中的目录结构信息。...3.应用程序头文件和源文件 应用程序向导根据应用程序的类型(单文档、多文档或基于对话框的程序)自动生成一些头文件和源文件,这些文件是工程的主体部分,用于实现主框架、文档、视图等。...HelloWorldView.h和HelloWorldView.cpp:它们从CView类派生出名为CHelloWorldView的视图类,用来显示和打印文档数据,包含了一些绘图和用于调试的成员函数。...其中包含了很多专有名词,以后大家慢慢熟悉的 学习C++学的是什么?

1.3K30
领券