标签: cwnd

从CWnd :: FromHandle获得的CWnd的生命周期是多少?

根据msdn,当我用CWnd :: FromHandle获得CWnd*时,

指针可能是临时的,不应存储以供以后使用.

"后期使用"的含义对我来说并不清楚.它只是当前方法的范围吗?据我所知,Win32中没有GC!

winapi mfc hwnd cwnd

12
推荐指数
1
解决办法
3437
查看次数

IAccessible接口的重写函数在cwnd-drived类中不起作用

我有一个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()在这个类的构造函数中调用,但是还没有工作.

mfc accessibility cwnd visual-c++

7
推荐指数
1
解决办法
1085
查看次数

C++"var foo = !! :: bar()"语法?

寻找关于如何使用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)

c++ syntax cwnd

7
推荐指数
1
解决办法
267
查看次数

如何从CDialog派生类中获取窗口句柄?

有没有办法从CDialog派生类(如CWnd :: m_hWnd成员)检索窗口句柄?

谢谢

window handle cdialog cwnd

5
推荐指数
1
解决办法
6280
查看次数

如何将MFC消息重定向到另一个对象?

在从 CWnd 派生的类的实例中,是否可以将所有 MFC 消息转发(重定向)到另一个对象,而无需为每个可能的消息编写单独的处理程序和消息映射?具体来说,我想将所有未处理的 WM_ 消息转发到另一个对象。如果这是不可能的,那么对象是否可以侦听其他对象内发生的事件?如果这有助于澄清我的问题,我可以提供详细信息。

谢谢。

mfc message cwnd

4
推荐指数
1
解决办法
5308
查看次数

MFC CWnd高度和宽度

你如何得到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中的参数是什么?我指的是什么?我已经有了想要找到尺寸的物体......只要给我一个尺寸.

c++ mfc cwnd

2
推荐指数
2
解决办法
7205
查看次数

MFC:从另一个线程调用CWnd方法是否安全?

其实我有两个问题:

  1. SendMessage从工作线程调用是否安全?
  2. CWnd方法,比如MessageBox,SendMessage在场景后调用API函数?

根据我的理解,当工作线程调用时SendMessage,它会将消息推送到UI线程的消息队列中,并等待直到处理此消息.在这种情况下,这样做是安全的.

我对此并不十分肯定.如果我错了,请纠正我.

非常感谢.

------------------------ update ------------------------- ---------

作为结论:

  • 调用Windows API ::SendMessage::PostMessage跨线程是安全的.
  • CWnd跨线程调用方法是不安全的.有些方法可能是安全的,但不能保证.

非常感谢大家.

c++ mfc multithreading cwnd sendmessage

2
推荐指数
1
解决办法
471
查看次数

C++ 错误:未定义标识符“CWnd”

我是一个 C++ 新手,所以请多多包涵。

驻留在函数中的这行代码:

CWnd* pWnd = CWnd::FindWindow("Shell_TrayWnd", "");
Run Code Online (Sandbox Code Playgroud)

CWnd即将出现“未定义”。我知道我需要在全局范围内定义它,但是如何定义?我需要包含什么标题才能使用这个类?项目是MFC。

使用 VS 2010。

c++ mfc cwnd

0
推荐指数
1
解决办法
4851
查看次数