MFC框架中的问题!能不能来指导下
时间:2011-12-20
来源:互联网
头文件中的代码:
class CMyApp : public CWinApp
{
public:
virtual BOOL InitInstance();
};
class CMainWindow : public CWnd
{
public:
CMainWindow();
protected:
char m_szText[1024]; // 客户区文本缓冲区
RECT m_rcInfo; // 文本所在方框的大小
protected:
virtual void PostNcDestroy();
afx_msg BOOL OnCreate(LPCREATESTRUCT);
afx_msg void OnPaint();
afx_msg void OnTimer(UINT nIDEvent);
DECLARE_MESSAGE_MAP()
};
////////////////////////////////////////////////////////
CPP文件中的代码:
BOOL CMyApp::InitInstance()
{
m_pMainWnd = new CMainWindow;
::ShowWindow(*m_pMainWnd, m_nCmdShow);
::UpdateWindow(*m_pMainWnd);
return TRUE;
}
然后我调试到::ShowWindow(*m_pMainWnd, m_nCmdShow);时按F11进入到了
operator HWND() const { return m_hWnd; }里面去!
我就是想不明白为什么会跳到operator HWND() const { return m_hWnd; }这里面运行呢?
class CMyApp : public CWinApp
{
public:
virtual BOOL InitInstance();
};
class CMainWindow : public CWnd
{
public:
CMainWindow();
protected:
char m_szText[1024]; // 客户区文本缓冲区
RECT m_rcInfo; // 文本所在方框的大小
protected:
virtual void PostNcDestroy();
afx_msg BOOL OnCreate(LPCREATESTRUCT);
afx_msg void OnPaint();
afx_msg void OnTimer(UINT nIDEvent);
DECLARE_MESSAGE_MAP()
};
////////////////////////////////////////////////////////
CPP文件中的代码:
BOOL CMyApp::InitInstance()
{
m_pMainWnd = new CMainWindow;
::ShowWindow(*m_pMainWnd, m_nCmdShow);
::UpdateWindow(*m_pMainWnd);
return TRUE;
}
然后我调试到::ShowWindow(*m_pMainWnd, m_nCmdShow);时按F11进入到了
operator HWND() const { return m_hWnd; }里面去!
我就是想不明白为什么会跳到operator HWND() const { return m_hWnd; }这里面运行呢?
作者: hyz23je 发布时间: 2011-12-20
UpdateWindow API需要HWND类型的参数 所以会把你的*m_pMainWnd 转换成HWND 就调用了
HWND 的重载函数...
HWND 的重载函数...
作者: bingying19872008 发布时间: 2011-12-20
::ShowWindow(*m_pMainWnd, m_nCmdShow);
C/C++ code
你说呢
CWnd类重载了HWND类型
C/C++ code
BOOL ShowWindow( HWND hWnd, int nCmdShow );
你说呢
CWnd类重载了HWND类型
作者: VisualEleven 发布时间: 2011-12-20
API中的ShowWindow和UpdateWindow这些函数要求第一参数未HWND参数,而你给的参数却是CMainWindow类对象,这两个对象的关系是后者封装了前者,即把HWND当做自己的成员。CMainWindow的基类是CWnd,CWnd包含一个重载的操作符:
operator HWND() const;
所以函数调用的时候,自动调用了CWnd::HWND(),将你的窗口类对象转换为窗口句柄,再继续执行。
你执行进去的时候,按shift+F11会执行出这个函数的范围,只是再按F11是没法继续进::ShowWindow了,这个你没有源码。
operator HWND() const;
所以函数调用的时候,自动调用了CWnd::HWND(),将你的窗口类对象转换为窗口句柄,再继续执行。
你执行进去的时候,按shift+F11会执行出这个函数的范围,只是再按F11是没法继续进::ShowWindow了,这个你没有源码。
作者: dream0411 发布时间: 2011-12-20
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28