有时候遇到一些问题,当时抓耳挠腮半天找不到头绪,最后问题解决了,没记录,以后遇到了又抓耳挠腮(码农记性不好,不知是不是通病?)。故开此贴,聊以记录所遇问题及解决方法。
2013-5-29
TREECTRL控件NM_CLICK事件,获取当前选中ITEM时错误(只有第一次是正确,因为选中的第一条),发现GetSelectedItem获得的ITEM都是上一次选中的。想来这个NM_CLICK单击消息发送顺序在选中消息之前。改为TVN_SELCHANGED事件,OK了。
2013-5-30
TABCTRL控件TCN_SELCHANGING消息事件的返回值。我希望处理TCN_SELCHANGING消息,在一定条件下不要切换TAB页。
然后我查了MSDN说:
Return Value
TRUE prevents the selection from changing. FALSE allows the selection to change.
可是用ClassWizard添加的响应函数却是无返回值的:
void CDlgMain::OnSelchangingTabXXX(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
*pResult = 0;
}
是的,这里的*pResult就是返回值。系统默认*pResult = 0,也就是FALSE。只需要将*pResult = TRUE就OK了。