- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在我的程序中继承 RichEdit(这里是 C++ 代码:http://dumpz.org/46182/)。 _native_log 是richedit 的一个hwnd。起初一切正常,LogWindow::wndProc 回调正常调用,但如果我在 RichEdit 中设置一些文本或单击它们,LogWindow::wndProc 停止工作(没有任何进一步的调用)。有什么想法我做错了什么吗?
void LogWindow::replaceNativeLog(HWND native_log_handle) {
_native_log = native_log_handle;
SendMessage(_native_log, EM_GETOLEINTERFACE, 0, (LPARAM) &_rich_edit_ole);
_old_wnd_proc = (WNDPROC) SetWindowLongPtr(_native_log, GWLP_WNDPROC, (LONG) &wndProc);
}
LRESULT LogWindow::wndProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam) {
switch (Msg) {
case EM_STREAMIN:
break;
case WM_SETTEXT:
break;
};
return CallWindowProc(_old_wnd_proc, _native_log, Msg, wParam, lParam);
}
最佳答案
从 Common Controls 版本 6 开始,对窗口子类化的过程进行了修改,以消除以前版本的问题。特别是,如果控件被多次子类化,则不再是问题。
可以在 "Subclassing Controls" 中找到子类化 v6 之前的公共(public)控件与 v6 处理方式之间的比较。 .没有调用 SetWindowLongPtr 来替换窗口过程,而是 SetWindowSubclass除了替换窗口过程外,它还负责所有内部簿记。重新设计的结果是您也不必存储指向先前窗口过程的指针;如果你需要调用原来的窗口过程有DefSubclassProc任您支配。
这当然只有在所有尝试子类化 a 控件的竞争客户都同意使用 v6 样式子类化的情况下才有用。
关于c++ - SetWindowLongPtr 不能正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5571973/
我尝试子类化另一个窗口(在另一个进程中),因此我注入(inject)了一个 dll,它调用 SetWindowLongPtr,但它失败并且 GetLastError 返回 5。 BOOL APIENT
我想在我的程序中继承 RichEdit(这里是 C++ 代码:http://dumpz.org/46182/)。 _native_log 是richedit 的一个hwnd。起初一切正常,LogWin
我一直在努力学习如何使用 SetWindowLongPtr() 并将其理解如下: 您可以使用以下函数获取当前消息并将其发送到自定义协议(protocol):LONG_PTR Some_Ptr = Se
我还在为钩子(Hook)而苦苦挣扎。 我的目标是: 在notepad.exe中设置一个钩子(Hook) 对其进行子类化(我的最终目标是将 Edit 类子类化并在我自己的窗口中显示内容) 免责声明:我知
前阵子,我用 Win32 API 编写了一个 C++ 程序,它会显示一个对话框,然后收听它生成的消息。有一次,我对将一段数据与对话窗口相关联很感兴趣。如果我手动创建窗口并附加一个窗口过程,我只需使用
关于 MSDN网站,我发现以下内容: Calling SetWindowLongPtr with the GWLP_WNDPROC index creates a subclass of the wi
我知道可以使用 SetWindowLongPtr + GWLP_USERDATA 来存储指向某些数据的指针。但是是否可以直接存储数据,例如“句柄”、“ bool 值”、“整数”或其他更大的数据。 来自
我需要为桌面上的一些应用程序窗口创建一个水印窗口(markHwnd),水印窗口样式为: uint dwStyle = Win32API.WS_CLIPSIBLINGS |
我正在编写一个自定义 Win32 UI 控件,我想在其中加入视觉主题。我将主题加载到它的 WM_NCCREATE 中: case WM_NCCREATE: { HTHEME hTheme =
我想 P/Invoke 到 GetWindowLongPtr和 SetWindowLongPtr ,而且我看到了关于它们的相互矛盾的信息。 一些消息称,在 32 位平台上,GetWindowLongP
我目前正在处理一个涉及使用 SWT 的 Eclipse RCP 的 Java 项目,并试图通过在保存时向 Windows 环境中的用户提供有意义的消息来处理正常关闭。我应该使用 ShutdownBlo
我是一名优秀的程序员,十分优秀!