我在哪里可以放我的 MFC 控件初始化代码

     2023-02-16     171

关键词:

【中文标题】我在哪里可以放我的 MFC 控件初始化代码【英文标题】:Where can I put my MFC Control initialization code 【发布时间】:2012-07-13 15:09:49 【问题描述】:

我正在编写一个 MFC CEdit 派生控件,一旦控件的 m_hwnd 被填充,我需要添加初始化代码。

我可以覆盖哪个函数或处理哪个消息来实现这一点?

我尝试使用 OnCreate,但它似乎只适用于对话框

编辑: 我正在初始化的是编辑提示横幅

谢谢

【问题讨论】:

【参考方案1】:

按照 Mark Ransom 的提示,我终于找到了一个更好的函数来实现我的初始化。虽然重载 CWnd::SubclassWindow 是个好主意,但这个函数不是虚拟的,它需要从子类指针调用。从 CWnd* 调用 SubclassWindow 将不起作用。

我找到了函数CWnd::PreSubclassWindow。它是虚拟的,在 SubclassWindow 之前被调用。由于 m_hwnd 在那里有效,因此这是编写我需要的代码的好地方。 另外,这个函数是虚函数,由框架自动调用,所以不用担心指针类型好不好

【讨论】:

【参考方案2】:

如果控件位于对话框上,则 OnCreate 不起作用,因为控件是在将其子类化为窗口类之前创建的 - 这发生在对话框的 DoDataExchange 中。

您可以覆盖 CWnd::SubclassWindow 并在您自己的代码之前调用基本方法。

【讨论】:

SubclassWindow 不是虚拟的,你是说 PreSubclassWindow 吗? @Goldorak84,如果您直接调用对象上的方法而不是从基类指针调用方法,则它不必是虚拟的,就像 MFC 的情况一样。试试看。 我的对象是用 CWnd* 指针动态子类化的,它不起作用【参考方案3】:

根据您正在初始化的具体内容,您可以覆盖OnPaint(),或者您可以将您的初始化代码添加到包含该控件的Dialog类中的OnInitDialog()中。

【讨论】:

我需要初始化控件的提示横幅。 OnPaint 对我不利,因为初始化只需要调用一次。我的控件是自定义控件,会在200多个对话框中使用,我不会在每个对话框的OnInitDialog中放200倍的初始化代码

我在哪里实现我的 MFC DLL 函数?

】我在哪里实现我的MFCDLL函数?【英文标题】:WheredoIimplementmyMFCDLLfunctions?【发布时间】:2013-02-2814:43:32【问题描述】:我整个早上都在搜索谷歌,但我找不到我要找的东西。我正在为MFC修改的VisualStudio中创建一个常规DLL。也就... 查看详情

无法在 MFC Visual .NET 2008 中初始化滑块控件变量

】无法在MFCVisual.NET2008中初始化滑块控件变量【英文标题】:UnabletoInitializeSliderControlVariableinMFCVisual.NET2008【发布时间】:2014-10-2419:10:17【问题描述】:我在MFCVisual.NET2008中创建了一个普通的VerticalSlider变量。当我尝试通过以下代... 查看详情

我在哪里可以看到 mfc 应用程序中的 printf 输出?

】我在哪里可以看到mfc应用程序中的printf输出?【英文标题】:WherecanIseeprintfoutputinanmfcapplcation?【发布时间】:2010-06-2919:54:30【问题描述】:在调试期间,我可以在调试器中查看“控制台”窗口吗?(VisualStudioC++6.0)谢谢。【问... 查看详情

更改 MFC 应用程序的输入控件

...的手势程序的输出而不是箭头键来控制MFC应用程序。但是我在MFC应用程序中找不到任何主要功能,以及如何进行的任何想法。【问题讨论】:为什么需要main函 查看详情

我在哪里可以找到免费的 WPF 控件

】我在哪里可以找到免费的WPF控件【英文标题】:WherecanifindFreeWPFcontrols【发布时间】:2011-09-0110:58:55【问题描述】:是否有任何网站可以找到像Griview这样的免费WPF控件?我目前正在处理一个复杂的项目,我需要一个可自定义的W... 查看详情

怎么初始化mfc主对话框界面

运行的界面如图1,但界面理应如图2,请问如何初始化?重写OnInitDialog函数,这个是对话框的初始化函数,需要初始化的代码写在这个函数就可以了。如果没有OnInitDialog函数,按如下步骤添加:1.vc6.0版本类视图--->右键对话框--... 查看详情

我在哪里注册swift中的valuetransformer?(代码片段)

...接近ObjectiveC的+initialize的东西,你可以使用类变量的延迟初始化。例如:classAppDelegate:NSObject,NSApplicationDelegatestaticletdoInitialize:Void=//registertransformershere()overrideinit()super.init()AppDelegate.doInitialize如 查看详情

我在哪里可以找到 Delphi 的地图控件? [关闭]

】我在哪里可以找到Delphi的地图控件?[关闭]【英文标题】:WherecanIfindamapcontrolforDelphi?[closed]【发布时间】:2009-02-1100:50:14【问题描述】:我正在尝试在应用程序中构建一个选项,让用户查看地图。此地图必须是可编辑的,并且... 查看详情

在哪里初始化另一个对话框上的富编辑控件?

】在哪里初始化另一个对话框上的富编辑控件?【英文标题】:Wheretoinitializearicheditcontrolonanotherdialog?【发布时间】:2018-11-1121:45:16【问题描述】:我有一个基于MFC对话框的应用程序,它有2个对话框:主对话框CMyDlg和第二个对话... 查看详情

MFC - 更改 CDialogEx 控件中使用的 CMFCToolTipCtrl 中的字体

...经做了什么:向我的CDialogEx成员添加了CMFCToolTipCtrl项。在初始化对话框成员中,我指 查看详情

mfc手动添加自会listcontrl(代码片段)

....在工程的消息函数添加:DDX_Control(pDX,控件ID,变量名);4.在初始化或者需要listcontrl控件的代码处添加控件的初始化代码段,为了安全建议list第一行第一列不要放任何元素。以下使本人代码,仅供参考。变量名.SetExtendedStyle(LVS_EX_FUL... 查看详情

更改 SysLink 控件的背景颜色 - MFC

...LinkControl-MFC【发布时间】:2014-11-2013:27:36【问题描述】:我在设置SysLink控件的背景颜色时遇到问题。我有一个组框和几个SysLink控件。当我更改组框和syslink控件的背景颜色时,这就是它的样子...最后会出现一条白色的小线。调整... 查看详情

我在哪里放置一个数组,以便 Windows 窗体控件可以访问它?

】我在哪里放置一个数组,以便Windows窗体控件可以访问它?【英文标题】:WheredoIputanarraysothatItisaccessibletowindowsformcontrols?【发布时间】:2022-01-1007:24:19【问题描述】:我正在开发一个C#windows窗体应用程序交易卡游戏集合管理器... 查看详情

mfc控件编程之鼠标消息(代码片段)

...为客户区消息.跟非客户区消息. 一丶客户区消息我们可以处理消息.来进行我们相应的函数即可.MFC添加消息的话.可以自己在消息映射表中添加.可以自己使用工具直接添加.消息映射表添加学习过MFC原理的应该知道.这里可以添... 查看详情

一个 MFC/Win32 控件似乎让我的整个桌面重绘

...问题描述】:我有一个自定义控件,它拥有一个编辑框并可以移动它等等。编辑框通常使用如下代码进行修改:edit.MoveWindow(&rc);edit.SetWindowText(text);edit 查看详情

mfc_简易文件管理器(代码片段)

练习_简易文件管理器Edit1编辑框绑定变量,初始化内容m_EditCtrl=L"D:\\";  添加List控件,属性设置report,OnInitDialog()函数里添加信息//初始化函数BOOLCFileManagerDlg::OnInitDialog()CDialog::OnInitDialog();?//初始化列表控件的风格m_ListCtrl.Se... 查看详情

在哪里放置 bash 完成脚本

】在哪里放置bash完成脚本【英文标题】:Wheretoputbashcompletionscripts【发布时间】:2017-12-2006:43:54【问题描述】:我已经实现了一些perl脚本,在某些情况下,我必须将一些命令行参数传递到我的程序中。从可用性角度来看,我决定... 查看详情

在 NSPanel 中初始化控件

】在NSPanel中初始化控件【英文标题】:InitializingControlsinNSPanel【发布时间】:2011-05-2320:26:59【问题描述】:我的应用中有一个NSPanel,用作数据导出功能。当面板最初显示时,如何初始化面板中的控件?(即使用NSDefaults)。当窗... 查看详情