MFC中setIcon引发的一个已久的问题

在学习MFC时,有时候看到不懂的,就MSDN。对那些封装的,有时候查到的看了也觉得很模糊,就去网上找答案。然后网上解决这些问题总是会说设置断点,跟踪进去,比如说这次看到的... 在学习MFC时,有时候看到不懂的,就MSDN。对那些封装的,有时候查到的看了也觉得很模糊,就去网上找答案。然后网上解决这些问题总是会说设置断点,跟踪进去,比如说这次看到的这个:
用VC向导生成的基于对话框的程序中,在对话框的OnInitDialog()函数中,总可以看到如下的代码段:

BOOL CXXXDlg::OnInitDialog()
{
......
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
......
}

那SetIcon究竟做了什么事?为什么需要调用这函数两次?对于此函数,MSDN上的解释说:"Call this member function to set the handle to a specific icon, as identified by hIcon."看了后仍然不甚了了。

自己动手,丰衣足食。在SetIcon处设置一个端点,单步进去,看CWnd::SetIcon究竟做了些什么。像其它MFC中的代码一样,CWnd::SetIcon也只是对消息进行了简单的封装。

AFXWIN_INLINE HICON CWnd::SetIcon(HICON hIcon, BOOL bBigIcon)
{
ASSERT(::IsWindow(m_hWnd));
return (HICON)::SendMessage(m_hWnd, WM_SETICON, bBigIcon, (LPARAM)hIcon);
}

哦,原来是向窗口(窗口句柄为m_hWnd)发送了一个WM_SETICON消息,再呼出MSDN,对于这个消息,MSND上有比较详细的解释。如消息名SETICON所揭示的那样,发送这个消息给窗口,是为了让这个窗口和大图标(large icon)或者小图标(small icon)关联。在用户按ALT+TAB键切换窗口时,显示的就是大图标,小图标就是对话框窗口标题栏上的那个图标。

同一的参数m_hIcon, 却带有TRUE或者FALSE,这是颇让人感到疑惑的地方。说白了其实也是很简单的事情,我们在用VC的资源编辑器编辑图标(icon)时,不是可以选择不同大小的图片来进行编辑吗?这些大小不同的图,最终都存入到同一个.ico文件中去了。所以m_hIcon指向的是一组图标,第二个参数(TRUE或者 FALSE)就是用来指定这一组图标中某一类大小的图标的,参数值为TRUE时,指明使用大图标(32*32相素),FALSE指明使用小图标 (16*16像素)。

能不能弱弱的问句,怎么跟踪进去的啊?我看到很多文章都是跟踪进去的,但是我只知道跟踪自己的代码,不知道如何跟踪已经封装的代码。对不起我是菜鸟。
展开
 我来答
warmwormn
2010-08-20 · TA获得超过737个赞
知道小有建树答主
回答量:1694
采纳率:0%
帮助的人:1328万
展开全部
单步跟踪分两种
逐过程(F10) 逐语句(F11)

不知道是不是你不知道这个

至少在你这个问题的,在SetIcon处设断点,运行后,按F11就会看到

AFXWIN_INLINE HICON CWnd::SetIcon(HICON hIcon, BOOL bBigIcon)
{ ASSERT(::IsWindow(m_hWnd)); return (HICON)::SendMessage(m_hWnd, WM_SETICON, bBigIcon, (LPARAM)hIcon); }

要么还有一种可能,引用库的源文件目录没有设,所以在跟踪时由于找不到
源文件,不能进去,以前好象在其它地方遇到过这个问题,不要问我,忘记
了在哪里设的
TT_RonG
2010-08-21 · TA获得超过156个赞
知道小有建树答主
回答量:168
采纳率:0%
帮助的人:236万
展开全部
那你必须知道你要跟踪的函数在哪个库,然后在当前工程下打开该库,并设置断点
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式