我在win32参考大全里没有找到TCN_SELCHANGE消息,哪位能告诉我。。。 post这个消息的wparam和lparam如何构造?postmessage(TCN_SELCHANGE,?,?) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 NMHDR nmd;nmd.hwndFrom = ...;nmd.idFrom = ...; nmd.code = TCN_SELCHANGE; postmessage(WM_NOTIFY ,idCtrl( = (int) wParam),&nmd); 同意楼上,TCN_SELCHANGE是一个通知消息,这个通知码是包含在WM_NOTIFY的lParam参数中的。 这是我加在对话框的OnInitDialog里的代码:WPARAM wParam; LPARAM lParam; NMHDR nmhdr; wParam=(WPARAM)m_tabCtrl.m_hWnd; nmhdr.idFrom=IDD_SEND_DIALOG; nmhdr.hwndFrom=this->m_hWnd ; nmhdr.code=TCN_SELCHANGE; lParam=(LPARAM)&nmhdr; PostMessage(WM_NOTIFY,wParam,lParam);出现assert错误 nmhdr.idFrom=IDD_SEND_DIALOG乃是tabctal的id!!!!下同 改成:WPARAM wParam; LPARAM lParam; NMHDR nmhdr; wParam=(WPARAM)m_tabCtrl.m_hWnd; nmhdr.idFrom=IDC_TAB1; nmhdr.hwndFrom=m_tabCtrl.m_hWnd; nmhdr.code=TCN_SELCHANGE; lParam=(LPARAM)&nmhdr; BOOL bool1=PostMessage(WM_NOTIFY,wParam,lParam);还是一样啊怎么wParam和nmhdr.hwdnfrom一样?我跟踪看了一下,bool1返回的是TRUE(1)但是OninitDialog执行完后出现一堆汇编代码,并在某处出错:0047E037 jne CWnd::OnNotify+55h (0047e019)2101: ASSERT(::IsWindow(hWndCtrl));0047E039 mov edx,dword ptr [hWndCtrl]0047E03C push edx0047E03D call dword ptr [__imp__IsWindow@4 (005f3db0)]0047E043 test eax,eax0047E045 jne CWnd::OnNotify+97h (0047e05b)0047E047 push 835h0047E04C push offset THIS_FILE (005dc714)0047E051 call AfxAssertFailedLine (004d5720)0047E056 test eax,eax0047E058 je CWnd::OnNotify+97h (0047e05b)0047E05A int 3 //出错时光标的位置0047E05B xor eax,eax0047E05D test eax,eax0047E05F jne CWnd::OnNotify+75h (0047e039)2102:2103: if (_afxThreadState->m_hLockoutNotifyWindow == m_hWnd) 所以我怀疑是不是我这段代码不应该放在对话框的OnInitDialog里,而是应该放在别的地方? 启动一个任务线程来作,或者OnTimer中处理,加上IsWindows,getSafehwnd等的判断 还要启动一个线程啊??我只是启动时从注册表读一个值,然后根据这个值改变TabCtrl的显示卡片,然后发个消息通知而已,真的得用一个线程? 为什么InvalidateRect调用后,我的显示窗口没有刷新为背景色. 操作剪切板问题? 如何用MFC代码产生一个.txt文件??? 有关Taskbar的问题!(100分) ADO这么爽为什么还用DAO,ODBC? ●●CString型的"A"怎样转换为char型的'A'?●● 如何学习ATL/ActiveX/COM技术? _RecordsetPtr记录集的取值问题? 我该怎么学得深入一些呢?请给我推荐几本书 Some Question About Oracle8.1.5 for Linux 16进制图象。。。 怎么办?
nmd.hwndFrom = ...;
nmd.idFrom = ...;
nmd.code = TCN_SELCHANGE;
postmessage(WM_NOTIFY ,idCtrl( = (int) wParam),&nmd);
LPARAM lParam;
NMHDR nmhdr;
wParam=(WPARAM)m_tabCtrl.m_hWnd;
nmhdr.idFrom=IDD_SEND_DIALOG;
nmhdr.hwndFrom=this->m_hWnd ;
nmhdr.code=TCN_SELCHANGE;
lParam=(LPARAM)&nmhdr;
PostMessage(WM_NOTIFY,wParam,lParam);
出现assert错误
WPARAM wParam;
LPARAM lParam;
NMHDR nmhdr;
wParam=(WPARAM)m_tabCtrl.m_hWnd;
nmhdr.idFrom=IDC_TAB1;
nmhdr.hwndFrom=m_tabCtrl.m_hWnd;
nmhdr.code=TCN_SELCHANGE;
lParam=(LPARAM)&nmhdr;
BOOL bool1=PostMessage(WM_NOTIFY,wParam,lParam);
还是一样啊
怎么wParam和nmhdr.hwdnfrom一样?
我跟踪看了一下,bool1返回的是TRUE(1)
但是OninitDialog执行完后出现一堆汇编代码,并在某处出错:0047E037 jne CWnd::OnNotify+55h (0047e019)
2101: ASSERT(::IsWindow(hWndCtrl));
0047E039 mov edx,dword ptr [hWndCtrl]
0047E03C push edx
0047E03D call dword ptr [__imp__IsWindow@4 (005f3db0)]
0047E043 test eax,eax
0047E045 jne CWnd::OnNotify+97h (0047e05b)
0047E047 push 835h
0047E04C push offset THIS_FILE (005dc714)
0047E051 call AfxAssertFailedLine (004d5720)
0047E056 test eax,eax
0047E058 je CWnd::OnNotify+97h (0047e05b)
0047E05A int 3 //出错时光标的位置
0047E05B xor eax,eax
0047E05D test eax,eax
0047E05F jne CWnd::OnNotify+75h (0047e039)
2102:
2103: if (_afxThreadState->m_hLockoutNotifyWindow == m_hWnd)