根据msdn,当我用CWnd :: FromHandle获得CWnd*时,
指针可能是临时的,不应存储以供以后使用.
"后期使用"的含义对我来说并不清楚.它只是当前方法的范围吗?据我所知,Win32中没有GC!
我有一个CWnd
名为button的类,并且想要使用CWnd
辅助功能,我在我的类中重写了这个函数:
virtual HRESULT get_accName(VARIANT varChild, BSTR *pszName);
virtual HRESULT get_accChildCount(long *pcountChildren);
virtual HRESULT get_accDefaultAction(VARIANT varChild, BSTR *pszDefaultAction);
virtual HRESULT get_accDescription(VARIANT varChild, BSTR *pszDescription);
virtual HRESULT get_accKeyboardShortcut(VARIANT varChild, BSTR *pszKeyboardShortcut);
virtual HRESULT get_accParent(IDispatch **ppdispParent);
virtual HRESULT get_accRole(VARIANT varChild, VARIANT *pvarRole);
virtual HRESULT get_accState(VARIANT varChild, VARIANT *pvarState);
virtual HRESULT get_accValue(VARIANT varChild, BSTR *pszValue);
Run Code Online (Sandbox Code Playgroud)
当我运行程序,并在执行任何这些函数时设置中断点,程序不会进入这些函数,而是使用父函数,可以帮助我吗?
get_accName的实现:
HRESULT Button::get_accName(VARIANT varChild, BSTR *pszName)
{
//*pszName = SysAllocString(lpstrTitle);
return S_OK;
}
Run Code Online (Sandbox Code Playgroud)
我EnableActiveAccessibility()
在这个类的构造函数中调用,但是还没有工作.
寻找关于如何使用HWND窗口进行全屏模式的一些解释,我发现这个响应Win32:全屏和隐藏任务栏
铬响应代码有这一行:
saved_window_info_.maximized = !!::IsZoomed(hwnd_);
Run Code Online (Sandbox Code Playgroud)
来自此文件https://src.chromium.org/viewvc/chrome/trunk/src/ui/views/win/fullscreen_handler.cc?revision=HEAD&view=markup on the line 56
我读:
var bar equal not not of mother method
Run Code Online (Sandbox Code Playgroud)
它是否正确 ?
这个"!! :: IsZoomed()"是什么意思?
为什么不呢
saved_window_info_.maximized = CWnd::IsZoomed(hwnd_);
Run Code Online (Sandbox Code Playgroud)
?
有没有办法从CDialog派生类(如CWnd :: m_hWnd成员)检索窗口句柄?
谢谢
在从 CWnd 派生的类的实例中,是否可以将所有 MFC 消息转发(重定向)到另一个对象,而无需为每个可能的消息编写单独的处理程序和消息映射?具体来说,我想将所有未处理的 WM_ 消息转发到另一个对象。如果这是不可能的,那么对象是否可以侦听其他对象内发生的事件?如果这有助于澄清我的问题,我可以提供详细信息。
谢谢。
你如何得到CWnd*的高度和宽度?CWnd窗口是否正确?为什么不是命令:
CWnd* parent = this->GetParent(); // C++ command
parent->GetSize(); // what I think the method should be OR ...
parent->GetWindowRect(); // what i think it should be (no arguments)
Run Code Online (Sandbox Code Playgroud)
这个LPRECT是什么?我已经有了对象...为什么以及GetWindowRect中的参数是什么?我指的是什么?我已经有了想要找到尺寸的物体......只要给我一个尺寸.
其实我有两个问题:
SendMessage
从工作线程调用是否安全?CWnd
方法,比如MessageBox
,SendMessage
在场景后调用API函数?根据我的理解,当工作线程调用时SendMessage
,它会将消息推送到UI线程的消息队列中,并等待直到处理此消息.在这种情况下,这样做是安全的.
我对此并不十分肯定.如果我错了,请纠正我.
非常感谢.
------------------------ update ------------------------- ---------
作为结论:
::SendMessage
和::PostMessage
跨线程是安全的.CWnd
跨线程调用方法是不安全的.有些方法可能是安全的,但不能保证.非常感谢大家.
我是一个 C++ 新手,所以请多多包涵。
驻留在函数中的这行代码:
CWnd* pWnd = CWnd::FindWindow("Shell_TrayWnd", "");
Run Code Online (Sandbox Code Playgroud)
CWnd
即将出现“未定义”。我知道我需要在全局范围内定义它,但是如何定义?我需要包含什么标题才能使用这个类?项目是MFC。
使用 VS 2010。