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

MFC SDI OpenDocument()正在重置我的主窗口大小。我怎么才能阻止它呢?

MFC(Microsoft Foundation Class)是微软基于Windows操作系统的C++类库,用于开发Windows桌面应用程序。SDI(Single Document Interface)是一种应用程序界面风格,它只允许打开一个文档窗口,并且不支持在一个应用程序中同时打开多个文档。

在MFC中,OpenDocument()函数用于打开文档,并且会自动调整主窗口的大小以适应文档内容。如果你希望阻止主窗口大小的调整,你可以尝试以下方法:

  1. 重写CFrameWnd派生类的PreCreateWindow函数,禁用主窗口的调整大小功能:
代码语言:txt
复制
BOOL YourMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
    if (!CFrameWnd::PreCreateWindow(cs))
        return FALSE;

    cs.style &= ~(WS_THICKFRAME | WS_MAXIMIZEBOX);
    return TRUE;
}
  1. 在主窗口类中重写OnSize函数,取消调整窗口大小的操作:
代码语言:txt
复制
void YourMainFrame::OnSize(UINT nType, int cx, int cy)
{
    // 不调用基类的OnSize函数即可取消调整窗口大小的操作
    // CFrameWnd::OnSize(nType, cx, cy);
}

这些方法可以通过阻止MFC自动调整主窗口大小来实现你的需求。

针对MFC SDI OpenDocument()正在重置主窗口大小的问题,腾讯云的产品与此问题无关,因此无法提供相关产品或链接。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

深入浅出MFC-读书笔记

既符合了新环境的要求,又兼顾到了旧源代码的兼容。 InitApplication 和InitInstance 只不过是两个自定函数,为什么我要对此振振有词呢?...只要是拥有纯虚拟函数的类别,就是一种抽象类别,它是不能够被具象化( instantiate)的,也就是说,你不能根据它产生一个对象(你怎能说一种形状为’Shape’ 的物体呢)。...Dynamic Creation (动态生成) 如果我能够把类别的大小记录在类别型录中,把构造函数(注意,这里并非指C++ 构造式,而是指即将出现的CRuntimeClass::CreateObject...这样的切割其实是为了让View 可以非常独立地放置于「 MDI Document Frame 窗口」或「 SDI Document Frame 窗口」或「 OLE Document Frame 窗口」等各种应用之中...当使用者打开一份文件文件,程序应该把主窗口上的菜单换掉,这个动作在SDK 程序中由程序员负责,在MFC 程序中则由Framework 代劳了。

87520

一个高中生的编程自学经历

寒假快要结束的时候,我又接触了汇编语言。 高二下学期开学前一天晚上,偶尔翻开了王爽老师的汇编语言教程(为什么是偶尔呢?...眼看还有半月就开学了,怎么感觉什么东西也没学到。所以我决定得做点什么。那就写一个远控吧,用c语言,纯sdk编程。 这个东西,我也没怎么好好的架构一下,蒙着头就开始了。...目前,我正在写一个拦截窗口创建的程序。...内核层hook ShadowSSDT里的NtCreateWindowEx函数,应用层用mfc设计一个基于对话框的界面,能够自定义拦截规则(根据窗口名,类名,以及窗口大小)。...写这个程序的初衷是阻止迅雷酷狗等软件的广告窗口,目的还是为了实践一下学到的东西。我觉得只有做出实用的程序来才算掌握了那些知识。

53420
  • MFC 键盘钩子「建议收藏」

    大家好,又见面了,我是你们的朋友全栈君。 一、前言 一日,看见我妈正在用电脑练习打字,频频低头看键盘,我想:要是键盘能发音的话,不就可以方便她养成”盲打”的好习惯吗?...下载本文的全部源代码 大小:552K 二、挂钩(HOOK)的基本原理 WINDOWS调用挂接的回调函数时首先会调用位于函数链首的函数,我们只要将自己的回调函数置于链首,该回调函数就会首先被调用。...三、具体实现 理论的话就不多说了,运行VC++6.0,新建一个MFC AppWizard(dll)工程,命名为Hook,使用默认的创建DLL类型的选项,也就是使用共享MFC DLL,点击完成后开始编写代码...在程序中如何调用DLL呢?那就简单了.再用VC++6.0新建一个MFC AppWizard(exe)工程,命名为KeySound,点击”确定”后选择程序类型为对话框,直接点击确定即可....,怎么样才能灵活的读取声音文件呢?

    1.3K20

    CC++ HOOK 全局 API

    region 我的代码 #define UM_WNDTITLE WM_USER+100 // 自定义消息(私有窗口类的消息标识符) // 全局共享变量(多进程之间共享数据) #pragma data_seg...(".Share") HWND g_hWnd = NULL; // 主窗口句柄 HHOOK hhk = NULL; // 鼠标钩子句柄 HINSTANCE hInst = NULL;...这意味着 // 它必须作为函数中的第一个语句 // 出现,甚至先于所有对象变量声明, // 这是因为它们的构造函数可能生成 MFC // DLL 调用。...,此处为鼠标钩子 nCode, wParam, lParam ); } // 安装钩子 BOOL WINAPI StartHook(HWND hWnd) { // 获取鼠标所在的主窗口句柄...m_hWnd) 由于我认为大部分的全局 HOOK 需要在隐藏自己然后默默执行,这与 MFC 的窗口交互模式风格相冲突,所以我在这里隐藏了 MFC 的窗口, 具体方法可以参考:https://blog.csdn.net

    1K10

    WPF初体验

    那么问题就来了: 怎么用WPF做一个DX的编辑工具? 最早看到过的方式是WPF提供的D3DImage类. 这个类的作用就是把BackBuffer拷贝过来, 然后再用WPF那一套东西来显示....WinForms本质上也是HWND机制, 所以就不细说了, 有兴趣的可以看我之前写的文章. 这里主要说说HwndHost. HwndHost是一个抽象类, 我们需要实现它. 使用起来很简单....在BuildWindowCore里创建一个Win32子窗口, 并把这个窗口的HWND做为DX初始化的参数. 如果需要改变大小, 还需要实现OnRenderSizeChanged....这个问题呢, 我也没找到一个完美的方式. 一种思路是在WndProc里, 这样的话, 只有在有WM消息触发时才会渲染, 就像UE3那个查看器一样, 鼠标不动, 它就不更新....最完美的方式就是找到WPF的主循环, 问题是WPF有这东西么? 有待研究. WPF的优势是什么? 控件多样性不如WinForms, 与C++的交互便利性不如MFC, 为什么还要使用它呢?

    88130

    以金山界面库(openkui)为例思考和分析界面库的设计和实现——问题

    假如我们打开电视机,看到了一个电视台正在播一部我们之前没看过的,正在一招一式进行打斗的武侠片;另一个电视台正在播一部之前也没看过的,正在重复太极推手的教学片。我想大部分人会选择那部武侠片。为什么?...顾名思义,它就是直接在父窗口中绘制各个部分,而不是通过子窗口的形式将各种窗口组成成一个可以协同工作的窗口。最最常见的一个例子便是IE的最最里层那个窗口,它通过其渲染引擎将网页内容绘制在窗口上。...我这儿就不再赘述。         现在我们确认了使用窗口控件的方式。那我们再抛出第二个问题:使用什么框架?         使用WTL还是MFC?        ...我相信做windows开发的同学,对MFC很熟悉。我刚毕业的时候,也是看了遍侯捷的《深入浅出MFC》才开始踏上windows开发之路的。...怎么解决这样的问题呢?我们将分析KUI库,看看它是如何解决这个问题的。 界面描述文件的放置位置         如果以上问题解决了,我们之后将不会出现构架上的问题。

    68220

    锁定屏幕相关知识「建议收藏」

    大家好,又见面了,我是你们的朋友全栈君。.../mouse/debug 目录中; (10) 先运行几个可执行程序,然后运行 Mouse.exe 程序,把鼠标在不同窗口中移动,在 Mouse.exe 程序窗口中的编辑框内将显示出鼠标所在的应用程序主窗口的标题...[ 附:我有个疑问,希望高手们帮忙解决下,在编写线程钩子时,我用的是这个函数来安装钩子 hHook=SetWindowsHookEx(WH_MOUSE,MouseProc,0,GetCurrentThreadId...()); 第 4 个参数是 GetCurrentThreadId() 是指此钩子函数监测的是自己的那个程序,那么如果我想监测其他一个特定程序的话,此参数该如何定义出来呢?...比如想只监测 mir3 程序,该如何定义第 4 个参数呢?谢谢!

    1.2K11

    【答疑解惑第十二讲】windows编程学习框架图

    另外,很多朋友学了C语言,发现编写的都是黑洞洞的命令行程序,现在的电脑里,窗口程序已经成为“高大上”的一个标准之一了,只有一些系统服务,系统命令工具还保持控制台风格,那要编写下的窗口程序在怎么学习呢?...从广义上说只要运行在下的窗口程序都可以作为目标,但是微软还是搞了好几种编程语言都可以编写窗口程序,比如C/C++、C#、VB;甚至还是非微软系列的,比如C++ 等等,但是不管这些表面怎么不同,始终是长在这个平台上...编写程序一般有两种,一种是MFC;一种是Win32编程,一般这种就是通常所说的编程,它跟下编程不是一个概念。...MFC全称是微软基础类库( ),它是微软公司将的那些常用的API函数封装成了相关的类,比如典型的窗口类就封装了窗口的管理的各种方法和熟悉,各种控件都有窗口类派生出来。...五,窗口交互界面对于不太熟悉窗口编程的菜鸟,也许目前还不了解要学哪些东西呢?鼠标操作?玩游戏?开玩笑了,肯定不是。

    48820

    基础窗口控件QWidget简介

    本来这一篇是想写一下怎么使用Qt Designer去设计一个界面的,但是我现在通常都是用代码去直接写界面很少用设计器。...很多初学者可能都比较喜欢使用Qt Designer,因为所见即所得,我以前做MFC开发的时候也是一直用界面设计器,主要是VS的功能非常强大,而且界面设计和代码编写都是使用这个IDE,契合非常完美。...同时在使用的地方也会加上一些注释,这样大家代码看得多了以后就会对布局管理器有一些了解。所以这一篇呢,我们就从控件开始吧,后期如果有时间的话,我再把Qt Designer简单使用写一篇文章。...对于独立的顶层窗口,它的X、Y坐标是针对整个屏幕的,也就是说widget控件设置的300,300是在屏幕上的偏移位置。...常用的几何结构 QWidget有两种几何结构。 不包含外边框。 包含外边框。 对于主窗口控件,不包含边框的部分就是客户区,我们可以在其中添加子控件。 不包含外边框 客户区的大小是一个QRect类。

    5.4K40

    C和C加加的学习过程总结,内有实用学习路线

    因此,想要学习好C++,我的建议,先学习C,先学解决问题的能力,再讨论解决大问题的能力。就是先学习怎么走路,再学习怎么跑步。 2、学习C的过程中,一定要理解结构化编程思维。...什么叫应用开发呢,我会一门语言,但是,客户不懂,客户说的很直接,在Windows下给我写个程序,我要什么什么功能。为啥Windows呢?因为我习惯。...OK,很多时候,应用开发要尊重客户习惯,一般说来,语言这个东东,还是要结合具体平台的开发,才能开发出有意义的应用程序卖钱。...当我们把Win32API,以及基本的窗口化程序设计理解了,就可以回到MFC继续学习了。是不是有点递归返回的意思?呵呵。 8、回到MFC 原来学MFC很难的,因为其封装了太多细节,很难理解透彻。...,还有工作中想提升自己能力的C/C 党,如果你是正在学习C/C 游戏编程的小伙伴可以加入学习。

    1.3K61

    【答疑解惑第十二讲】windows编程学习框架图

    另外,很多朋友学了C语言,发现编写的都是黑洞洞的命令行程序,现在的电脑里,窗口程序已经成为“高大上”的一个标准之一了,只有一些系统服务,系统命令工具还保持控制台风格,那要编写Windows下的窗口程序在怎么学习呢...一,安装窗口编译环境 要开始Windows编程,我们需要安装一个开发环境,我推荐你在VS下编写窗口程序,版本不是最重要的,不管是VS2013、VS2010、VS2008、哪怕是VS2005,甚至是VC都不是关键...比如我现在用的是VS2008,这个版本虽然不新,但是他的大小差不多,包括MSDN一起安装下来4G左右,关键的是这个版本还可以开发很多市面上支持的WinCE开发板嵌入式程序。...编写Windows程序一般有两种,一种是MFC;一种是Win32编程,一般这种就是通常所说的Windows编程,它跟Windows下编程不是一个概念。...五,窗口交互界面 对于不太熟悉Windows窗口编程的菜鸟,也许目前还不了解要学Windows哪些东西呢?鼠标操作?玩游戏?开玩笑了,肯定不是。

    1.6K71

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

    在日常生活中,建筑商在盖楼时,通常都是在楼房建成之前先设计好它的外观和大小。当楼房建成之后,还可以对其外观进行翻新或改造。...同样,对于MF℃应用程序来说,为了改变MFC AppWizard自动生成的应用程序外观和大小,我们既可以在应用程序窗口创建之前进行,也可以在该窗口创建之后进行。...读者可以查看该函数的代码,将会发现它首先调用了基类的OnCreate函数,以完成窗口的创建,这样,我们就可以在该函数的最后,但要在return语句之前添加改变窗口外观的代码。...但在这里,程序代码是通过AppWizard自动生成的, WinMain函数被隐藏了。那么我们如何才能获取到当前应用程序的句柄呢?...我们已经知道,在MFC SDI应用程序中,有一个表示应用程序本身的类,本例中就是 CStyleApp,它派生于CWinApp类。

    9110

    2022.6.9日报:正确处理webbrowser控件的键盘消息

    ,例如Javascript在线解压缩 - 在线工具​​​​​​ 按向下键,光标会下移动两行… 于是我用SetWindowLongPtr,hook了ie的窗口消息响应函数,然后把WM_KEYDOWN给禁用了...这块把我卡住很久,甚至还翻了IE源码看了看。最后,我发现mfc里的chtmlview,居然是能正确处理这个问题的。...微软这群屌毛,他们自己的东西当然知道怎么处理,但mfc源码那么多,怎么才能找到问题的关键呢?...最后,无意中,我发现MFC里这句话:  没错,这里也是把先把消息派发给TranslateAccelerator。但原来这里是要判断返回值的。...也就是说,我刚才没判断返回值,所以TranslateAccelerator处理完后又给IE窗口消息函数了。导致光标被移动了两次。

    42120

    以金山界面库(openkui)为例思考和分析界面库的设计和实现——代码结构(完)

    strings.xml 它描述了文字和ID的映射关系。这个非常类似于MFC中的string table。 images.xml 它描述了图片文件和ID的映射关系。...但是有些属性,我们在之后参与计算或者逻辑的时候就是希望它是整形的,那么我们需要怎么处理?...CKuiWindow内部实现了很多细节功能,本文不作分析,只要知道它主要做了绘制和计算大小和位置的功能即可,而且要记住它是(伪)窗口类的父类。        ...在MFC的多窗口模式下,消息通过消息泵进行传递。而Kui除了容器类是窗口类,其他组件类则不是窗口,那么它们之间的消息是怎么传递的?...我们知道只有窗口才能收到消息,那么可以想到第一步处理消息的地方应该是容器类。以窗口尺寸改变为例,当窗口尺寸改变时,其内部组件也要被调整。

    1K20

    我常用的几个第三方 Python 库

    结合我目前的工作(网游开发),我常用的几个第三方库如下: wxPython 如果你之前是 windows 程序员,用 MFC 或者 WIN32API 开发界面程序,那进入 Python 国度最好的 GUI...它是 wxWidgets 的 Python Bind,与 wxWidgets 的开发完美同步,最为重要的一点是它的消息机制与 MFC 颇为相似,以前在 MFC 的经验完全可以稍作变化就套用在 wxPython...在 WIN32 开发中,最讨厌的一环肯定有 WM_SIZE 消息的处,在主窗口大小变化的时候,保持控件布局在 WIN32 是一件麻烦事。...这件事情 wx 解决得非常完美,它的sizer 概念可以让我轻松地在不同窗口尺寸的情况下保持完美的控件布局。...如果你用 Python 开发服务器应用,特别是网络游戏这样的应用,pyprocessing 怎么可以不去关注一下!

    1K20
    领券