关于CTabCtrl中SendMessage 有个问题请教,我做了个CTabCtrl,想用右键模拟左键单击,就是说右键也可以切换标签,但是SendMessage后却没有反应,哪个大虾帮帮忙,给个代码,我搞了很久也没结果 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 应该用函数吧,类似于SetCurSel之类的然后调用“SendNotifyMessage",而不是sendmessage 呵呵,用SendMessage(WM_NOTIFY, CONTROL_ID, (LPARAM)pointertoNMHDR)下面代码是可以正常工作的,试过了:)CTabCtrl *ptab = (CTabCtrl*)GetDlgItem(IDC_TAB1); ptab->SetCurSel(1); NMHDR *p= new NMHDR; p->code = TCN_SELCHANGE; p->hwndFrom = ptab->GetSafeHwnd(); p->idFrom = IDC_TAB1; SendMessage(WM_NOTIFY, IDC_TAB1, (LPARAM)p); CTabCtrl *pTab = (CTabCtrl *)GetDlgItem(IDC_TAB1); int nIndex = pTab->GetCurSel(); 使用CTabCtrl 的HitTest函数可以测出当前鼠标点在哪个Tab按钮上,具体看下MSDN就知道了下面的代码可以工作:void CtesttabDlg::OnNMRclickTab1(NMHDR *pNMHDR, LRESULT *pResult){ // TODO: Add your control notification handler code here *pResult = 0; CTabCtrl *ptab = (CTabCtrl*)GetDlgItem(IDC_TAB1); CPoint pt; ::GetCursorPos(&pt); ptab->ScreenToClient(&pt); TCHITTESTINFO tcinfo; tcinfo.pt = pt; int j = ptab->HitTest(&tcinfo); if(j >= 0) ptab->SetCurSel(j); NMHDR *p= new NMHDR; p->code = TCN_SELCHANGE; p->hwndFrom = ptab->GetSafeHwnd(); p->idFrom = IDC_TAB1; SendMessage(WM_NOTIFY, IDC_TAB1, (LPARAM)p);} 开发一个数据库应用程序,用VC++直接开发或者用VC++和rational rose联合开发哪个会更好一些,求专业人士解答 窗口可不可以用矢量图做背景 如何实现两个ActiveX控件的交互? 深入浅出MFC的一个问题 一个关于MFC的问题 笨鸟先飞! 切分窗口的问题 当文件够大时,而我的缓冲区只有1024大小,那我…………? msdn的问题 图形算法 初学mfc数据库编程,遇到麻烦,请教高手。[在线等] 求助:SetTimer定时器问题
然后调用“SendNotifyMessage",而不是sendmessage
下面代码是可以正常工作的,试过了:)
CTabCtrl *ptab = (CTabCtrl*)GetDlgItem(IDC_TAB1);
ptab->SetCurSel(1);
NMHDR *p= new NMHDR;
p->code = TCN_SELCHANGE;
p->hwndFrom = ptab->GetSafeHwnd();
p->idFrom = IDC_TAB1;
SendMessage(WM_NOTIFY, IDC_TAB1, (LPARAM)p);
int nIndex = pTab->GetCurSel();
下面的代码可以工作:void CtesttabDlg::OnNMRclickTab1(NMHDR *pNMHDR, LRESULT *pResult)
{
// TODO: Add your control notification handler code here
*pResult = 0;
CTabCtrl *ptab = (CTabCtrl*)GetDlgItem(IDC_TAB1);
CPoint pt;
::GetCursorPos(&pt);
ptab->ScreenToClient(&pt);
TCHITTESTINFO tcinfo;
tcinfo.pt = pt;
int j = ptab->HitTest(&tcinfo);
if(j >= 0)
ptab->SetCurSel(j); NMHDR *p= new NMHDR;
p->code = TCN_SELCHANGE;
p->hwndFrom = ptab->GetSafeHwnd();
p->idFrom = IDC_TAB1;
SendMessage(WM_NOTIFY, IDC_TAB1, (LPARAM)p);
}