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

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

相关·内容

窗口分割

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

77420

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

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

1.5K20
  • VC++6.0入门——第九讲 定制应用功能程序外观

    在MFC程序中,如果想在窗口创建之后改变其外观,可以在框架类(CMainFrame)的OnCreate函数中添加具体的实现代码。...读者可以查看该函数的代码,将会发现它首先调用了基类的OnCreate函数,以完成窗口的创建,这样,我们就可以在该函数的最后,但要在return语句之前添加改变窗口外观的代码。...但在这里,程序代码是通过AppWizard自动生成的, WinMain函数被隐藏了。那么我们如何才能获取到当前应用程序的句柄呢?...但是,在一个源文件中要想调用另一个源文件中定义的全局变量,必须在调用这个变量之前声明这个变量是在外部定义的,声明代码如下所示,读者可以把它放到CMainFrame类的OnCreate函数定义之前:接着,...MFC提供了一个全局函数:AfxGetApp,可以获得当前应用程序对象的指针。因为这个函数是全局函数,所以在应用程序的任意地方都可以调用它。

    9110

    MFC原理第六讲.消息传递

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

    1K10

    深入浅出MFC-读书笔记

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

    87720

    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.3K20

    VC++6.0入门——第六讲 菜单编程

    然而,在一句话中直接利用有限的信息会遗漏一些关键的属性描述,而这些属性描述是准确描述图像的关键因素。为了缓解上述问题,我们提出了一种有效的带有属性信息补充的文本表示方法。...我们可以使用全局的MessageBox函数,或者使用应用程序框架的函数:AfxMessageBox,这里,我们使用后者。...在MFC中,通过菜单项的标识(D)来区分不同的命令消息:在SDK中,通过消息的 wParam参数识别。从CCmdTarget派生的类,都可以接收到这类消息。...仍把这个菜单对象定义为局部对象,但在调用SetMenu函数把此对象设置为窗口的菜单之后,立即调用CMenu类的另一个成员函数Detach,以便把菜单句柄与这个菜单对象分离。...因此,我们在上述例6-12所示代码的最后,再添加对菜单对象的Detach函数的调用。

    10630

    设计模式(1)—— MVC

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

    1.5K50

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

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

    1.3K10

    MFC 键盘钩子「建议收藏」

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

    1.3K20

    MFC多线程

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

    2.4K71

    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.8K10

    VC++6.0入门——案例 电话本的案例

    然而,在一句话中直接利用有限的信息会遗漏一些关键的属性描述,而这些属性描述是准确描述图像的关键因素。为了缓解上述问题,我们提出了一种有效的带有属性信息补充的文本表示方法。...这段代码中有一个问题需要注意:之前,我们都是在 CMainFrame类中调用GetMenu函数来获取程序的菜单栏指针,而视类窗口是没有菜单的,因此在视类中直接调用GetMenu函数是无法获得程序的菜单栏对象的...如果要在视类中获得属于框架类的菜单栏对象的话,首先需要利用GetParent函数获得视类的父窗口,即框架类窗口对象,然后再调用框架类窗口对象的GetMenu函数就可以获得程序的菜单栏对象的指针了。...开始没出现,鼠标滑动后才出来因为CMainFrame类的OnCreate函数的作用是实现窗口的创建,也就是说,在调用这个函数时,程序的窗口还未创建和显示,所以在这个函数中对窗口上菜单所作的修改会立即在程序界面上呈现出来...CString类提供了一个Find成员函数,这个函数在字符串中可以查找一个字符,或者一个字符串,返回匹配结果的第一个字符在该字符串中的位置索引。

    6100

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

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

    2K21

    (以MFC框架讲解)

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

    1.7K110

    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

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

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

    1.5K80

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

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

    2K70
    领券