#27 如何在ATL中取得windowsless窗口的HWND?
答:windowsless 就是没有窗口。你的ATL控件没有窗口, m_hWnd不是NULL能是什么。 至于Ondraw得到的 hdc 实际是父窗口的hdc。huhu 你注意看 M$ 的form 系列控件(就是IE页面中的那些textbox checkbox ....), 都是windwosless的。
if (m_bWndLess)
{
HDC hDC;
HWND hWnd;
// Get the HDC from the client
m_spInPlaceSite->GetDC(NULL, OLEDC_NODRAW, &hDC);
// Get the HWND from the HDC
hWnd = WindowFromDC(hDC);
m_spInPlaceSite->ReleaseDC(hDC);
}
注意:不要乱动那个hWnd因为这个东西不是你的。
答:windowsless 就是没有窗口。你的ATL控件没有窗口, m_hWnd不是NULL能是什么。 至于Ondraw得到的 hdc 实际是父窗口的hdc。huhu 你注意看 M$ 的form 系列控件(就是IE页面中的那些textbox checkbox ....), 都是windwosless的。
if (m_bWndLess)
{
HDC hDC;
HWND hWnd;
// Get the HDC from the client
m_spInPlaceSite->GetDC(NULL, OLEDC_NODRAW, &hDC);
// Get the HWND from the HDC
hWnd = WindowFromDC(hDC);
m_spInPlaceSite->ReleaseDC(hDC);
}
注意:不要乱动那个hWnd因为这个东西不是你的。
解决方案 »
- 新开的一个C++论坛,诚招版主
- 用什么工具可以反编译InstallShield生成的安装程序
- 期待指点迷津~~~~
- 怎么打印FormView看到的内容呢? 还是200分哦.
- 怎么保存"设置"?
- 关于读Access数据库字段为空出现错误如何克服?你们是这样处理的!!
- 为什么我不应用模版类CList?
- 请教大家,下载的.net如何安装。
- 创建一个对话框应用----添加一个RichEdit----运行-----什么也没有-----怎么乱套了?
- 在ASP中创建了COM对象,但如何获得它的第二个接口呢???
- 100分,我在一个窗体里面先创建一个控件,而后在该控件的类中加入addbutton()函数该函数中用create方法加入按钮成为该控件的子控件,按钮被加入但消息却得不到,怎么办?
- 我知道在视图类中可以用GetDocument()来取得指向文档类的指针,请问在主框架窗口类CMainFrame中如何得到指向文档类的指针?
除此以外,CComControl还有一个很奇怪的成员变量m_bWindowOnly.且看MSDN的解释
m_bWindowOnly:Flag indicating the control should be windowed even if the container supports windowless controls
难道说控件窗口化或不窗口化跟容器有关吗?非窗口组件为什么可以得到标准window消息呢?是容器窗口传递给它的吗?请各位大虾给小弟解释一二,一定加分。