问题标签 [cwnd]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mfc - 最大化窗口恢复到全屏
按预期使用CWnd::ShowWindow(SW_SHOWMAXIMIZED)
最大化我的应用程序窗口。
但是,当点击应用程序上的恢复按钮(或双击标题栏)时,恢复的大小与最大化窗口的大小相同,这让用户感到困惑。
使用这个替代代码有同样的问题:
恢复时如何保持默认的未最大化大小。
visual-c++ - 将 GetFocus 限制为特定对话框和/或应用程序
我有一个 MS Visual C++ 项目,其中有一个基于 CDialog 的对话框,其中包含多个编辑控件。我想为用户突出显示当前焦点的控件。我通过使用 GetFocus() 获取指向具有当前焦点的窗口的指针,然后使用 GetDlgCtrlID() 获取焦点控件的 ID 来实现这一点:
CWnd *pWnd=GetFocus();
idfocus=(pWnd->GetDlgCtrlID());
然后,我将其与在成员函数 OnCtlColor 中为其设置 HBRUSH 的当前控件进行比较。
这工作正常,直到我单击在我的 PC 上运行的另一个应用程序的窗口。比如火狐。此时我的应用程序崩溃了。
查找特定对话框中的哪个控件(如果有)具有焦点的最佳方法是什么,并且只有该特定对话框具有焦点?或者可能仅限于相同的应用程序。
c++ - C++ 错误:未定义标识符“CWnd”
我是一个 C++ 新手,所以请多多包涵。
这行代码位于函数中:
CWnd
即将出现“未定义”。我知道我需要在全局范围内定义它,但是如何定义呢?我需要包含什么标题才能使用这个类?项目是MFC。
使用 VS 2010。
dynamic - CWnd 作为 C++ 中没有 .dll 或 .ocx 文件的 ActiveX 控件?
亲爱的 MFC/ActiveX/COM 破解,我已经“继承”了一个旧的 MFC 应用程序(最初使用 Visual Studio 6 创建)的源代码,它在 VS 2010 中构建和运行,但嵌入了一些 ActiveX 控件作为源代码,显然是生成的通过 Visual Studio 向导(.h 和 .cpp 文件,见下文);但是不在自己的子项目中,以便生成 .dll 或 .ocx 文件。以下是此类控件的头文件的相关部分:
请注意,此类继承自 CWnd 而不是某些 OCX 类。但由于所有 MFC 窗口都是 COM 组件(正如我在某处读到的那样),而且这是生成的代码,它应该在一段时间前就可以工作了。我还读到这可能是 2005 年之前发生的迁移差距。还要注意 DECLARE_DYNCREATE,所以我认为这是后期绑定,使用 IDispatch 接口。所以 MFC 会为我们调用一个 Create() 函数。
上述控件通过包含 CDialog 的聚合使用(也使用 VS 向导创建):
反过来,对话框嵌入在应用程序的视图类中(同样,通过成员变量),并通过在菜单项事件处理程序中调用 DoModal() 来创建。
因此,当我单击相应的菜单项时,我会得到一个 m_hWnd NULL 断言,并且在弹出的对话框中点击“重试”时,会出现以下堆栈(摘录):
在 VS 调试输出中有以下几行:
因此,显然对 CoCreateInstance 的调用已经完成,并且在没有断言的情况下默默地失败了,这本来是很好的。有人知道这是哪里吗?
我的核心问题是,在这种情况下,即使控件不在 .dll 或 .ocx 项目中,MFC 通常会注意注册控件是否正确,并且它过去一定是这样工作的。我在某处读到,带有 DialogTemplate 的 CreateDlgIndirect 是一种无需 .dll 或 .ocx 文件即可创建 ActiveX 控件的方法。在上面的堆栈中,它也被调用,但不是为 ActiveX 控件,而是为对话。
有谁知道更多关于这个问题以及如何解决它?如果我必须手动注册控件,例如使用 regsvr32.exe 或通过源代码,有没有没有 .dll 或 .ocx 文件的方法?或者我是否必须在他们自己的项目中重新打包 ActiveX 组件(无论如何,还有什么是基于组件/模块化的)?
我希望我的问题描述足够准确,我会非常感谢任何答案。亲切的问候。
c++ - 了解 CStatic 和 CWnd 以及消息路由
我试图了解消息路由在 MFC 中是如何工作的,对此我有一些疑问。想象一个扩展 CWnd 的控件。我的第一个问题是:该控件中的所有消息是否都传递给父控件?
我知道 CStatic 不会发生这种情况,它仅在您设置 SS_NOTIFY 样式时传递特定消息。我试图了解这是特定于 CStatic 还是发生在所有控件中。具体来说,我正在尝试制作一个具有多个子控件的控件,其唯一目的是定义它们的布局。我希望子控件的所有消息都由这个中间控件的父级处理。例如,如果此布局控件有一个子按钮,则当单击该按钮时,消息将发送给父级以进行处理。
但是我不打算手动处理所有消息。那么,如果我从 CWnd 而不是 CStatic 扩展我的控制,消息会被传递吗?FORWARD_NOTIFICATIONS() 在 MFC 中可用吗?如果不是,我宁愿扩展我的中间类以根据需要处理消息。你知道的任何其他解决方案?
c++ - MFC 向 CWnd 成员添加滚动条
我有一个 CWnd 类名称 mywindow 的成员,
我想向它添加一个滚动条。
我该怎么做?
我已经尝试做:
它同时显示水平和垂直滚动条,
但我无法按下按钮或移动滚动条。
我也在第一个命令之后尝试:
它什么也没有改变。
有人可以告诉我一个简单的例子如何向这个成员添加滚动条吗?
非常感谢,
塔尔
delphi - 如何在 Delphi 中获取 CWnd 对象的窗口句柄?
我有 Epic Editor,它返回窗口的句柄(请参阅下面 plugin_1 中的 Java 代码):
其实这个句柄就是CWnd *
指针。它直接转移到本机 plugin_2 不起作用。相反,我们必须使用带有 MFC 支持的 dll 来调用
如何在没有 MFC 的情况下在 Delphi 中重写此代码?我的意思是从指向CWnd
对象的指针中提取窗口句柄。
visual-c++ - IAccessible 接口的覆盖函数在 cwnd 驱动的类中不起作用
我有一个CWnd
名为 button 的派生类,并且想要使用CWnd
辅助功能,我在我的类中重写了这个函数:
当我运行程序并在执行任何这些函数时设置中断点时,程序不会进入这些函数,而是使用父函数,有什么可以帮助我的吗?
get_accName 的实现:
我调用EnableActiveAccessibility()
了这个类的构造函数,但还没有工作。
c# - 如何创建 C# 事件以处理来自 PostMessage() 的 MFC Windows 消息
我有一个使用 WINSOCK 的托管 C++ DLL。在接收时,它通过 PostMessage() 将自定义消息发送到 CWnd *。当从非托管 C++ 调用时,这可以正常工作。使用以下代码构造后,目标 CWnd * 在 C++ 类中注册:
这是将消息发布到 CWnd 的代码 *
我现在使用 C# Windows 窗体应用程序中的这个 CUdpRetrySocket 类。问题:
从 C# Forms 类我如何获得一个 CWnd * 来注册我的 C++ CUdpRetrySocket 类
如何在我的 C# 窗口中创建事件以捕获此自定义 MFC 样式消息?
即使窗口最小化,我也需要 C# 应用程序来处理数据包。如果 C# Forms 窗口最小化,它还会收到这些消息吗?
有一个更好的方法吗?
mfc - 我可以将 CBitmapButton 附加到父 CWnd,而不是父 CDialog 吗?
我继承了一个项目(最初是为 Win95 编写的!),它有许多按钮附加到从 CWnd 派生的父窗口。按钮本身位于从 CWnd 派生的用户定义类中,因此它们不是“真正的”按钮,而是由数以百万计的代码行定义的小窗口,并且有大量的显示问题,我一直在努力解决几个星期,看不到任何解决方案。
前几天我们得出结论,CBitmapButton 看起来是个不错的选择。看起来很简单,为不同的按钮状态定义 4 个位图。我需要的只是 BN_CLICKED 来启动一个处理程序,我会很高兴。
在搞砸了一段时间后,设置了一个按钮和一些位图,我能够显示 CBitmapButton;看起来不太好,但我可以解决这个问题......现在的问题是我试图设置一个消息映射来捕获 BN_CLICKED 消息,但是由于父窗口是从 CWnd 而不是 CDialog 派生的,我得到语法错误设置消息映射。多次阅读有关该主题的 MSDN,看来您只能将 CBitmapButton 连接到 CDialog 派生类。这对我来说似乎很奇怪 - 我只想要一个按钮,它应该能够将一个简单的“我被点击”传输到它所连接的任何父级,但显然不会发生。
那么,有没有人成功地将 CBitmapButton 附加到 CWnd 派生的父级?如果是这样,如何设置一个可以处理这些东西的消息映射?或者,您将使用什么方法来设置一个可以与 CWnd 父级一起使用的按钮类,因为 CBitmapButton 和 CButton 似乎需要 CDialog 作为父级?