如何用程序去 实现 tabcontrol 页面的切换

dns007 2010-03-03 02:11:10
客户程序窗体中有个tabcontrol 其中有多个页面。 我想用程序 sendmessage 发送个消息给这个窗体 选中我需要的页面(就是模拟鼠标点击一样) 请问要 要发送什么消息?最好具体点。感谢!!!!!!!!!!!
...全文
379 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
向立天 2010-03-04
  • 打赏
  • 举报
回复
不客气
发过去了
你查收
希望对你有帮助把
dns007 2010-03-04
  • 打赏
  • 举报
回复
引用 7 楼 xianglitian 的回复:
你留个邮箱
我给你一个例子


lipei1220@163.com 感谢!
向立天 2010-03-04
  • 打赏
  • 举报
回复
你留个邮箱
我给你一个例子
dns007 2010-03-04
  • 打赏
  • 举报
回复
引用 5 楼 xianglitian 的回复:
看来这个界面是重载自绘过的
你确定目标控件是tabCtrl而不是通过其他方法实现的类似控件么?
那是不是可以考虑这样
不用发消息
而是通过你得到的窗口句柄找到这个控件
然后子类化自行处理
不过我没做过跨进程的子类化
只是建议而已


如果是通过其他方法实现的类似控件
如何 "子类化自行处理 " 能否在具体点?
向立天 2010-03-03
  • 打赏
  • 举报
回复
看来这个界面是重载自绘过的
你确定目标控件是tabCtrl而不是通过其他方法实现的类似控件么?
那是不是可以考虑这样
不用发消息
而是通过你得到的窗口句柄找到这个控件
然后子类化自行处理
不过我没做过跨进程的子类化
只是建议而已
dns007 2010-03-03
  • 打赏
  • 举报
回复
引用 2 楼 xianglitian 的回复:
这个得用spy++看看切换页面的时候都产生了什么消息
然后再分析那个是目标消息

<00042> 00540C08 S WM_MOUSEACTIVATE hwndTopLevel:00580AB8 nHittest:HTCLIENT uMsg:WM_LBUTTONDOWN
<00043> 00540C08 R WM_MOUSEACTIVATE fuActivate:MA_ACTIVATE
<00044> 00540C08 S WM_SETCURSOR hwnd:0029105C nHittest:HTCLIENT wMouseMsg:WM_LBUTTONDOWN
<00045> 00540C08 R WM_SETCURSOR fHaltProcessing:False
<00046> 00540C08 S WM_NOTIFY idCtrl:12320 pnmh:00107CCC
<00047> 00540C08 R WM_NOTIFY
<00048> 00540C08 S WM_ERASEBKGND hdc:97010C8B
<00049> 00540C08 S WM_CTLCOLORDLG hdcDlg:97010C8B hwndDlg:00540C08
<00050> 00540C08 R WM_CTLCOLORDLG hBrush:0110005A
<00051> 00540C08 R WM_ERASEBKGND fErased:True
<00052> 00540C08 S WM_PRINTCLIENT hdc:97010C8B uFlags:PRF_CLIENT
<00053> 00540C08 R WM_PRINTCLIENT
<00054> 00540C08 S WM_ERASEBKGND hdc:97010C8B
<00055> 00540C08 S WM_CTLCOLORDLG hdcDlg:97010C8B hwndDlg:00540C08
<00056> 00540C08 R WM_CTLCOLORDLG hBrush:0110005A
<00057> 00540C08 R WM_ERASEBKGND fErased:True
<00058> 00540C08 S WM_PRINTCLIENT hdc:97010C8B uFlags:PRF_CLIENT
<00059> 00540C08 R WM_PRINTCLIENT
<00060> 00540C08 S WM_ERASEBKGND hdc:97010C8B
<00061> 00540C08 S WM_CTLCOLORDLG hdcDlg:97010C8B hwndDlg:00540C08
<00062> 00540C08 R WM_CTLCOLORDLG hBrush:0110005A
<00063> 00540C08 R WM_ERASEBKGND fErased:True
<00064> 00540C08 S WM_PRINTCLIENT hdc:97010C8B uFlags:PRF_CLIENT
<00065> 00540C08 R WM_PRINTCLIENT
<00066> 00540C08 S WM_NOTIFY idCtrl:12320 pnmh:00107CCC
<00067> 00540C08 S WM_ERASEBKGND hdc:97010C8B
<00068> 00540C08 R WM_ERASEBKGND fErased:False
<00069> 00540C08 S WM_ERASEBKGND hdc:97010C8B
<00070> 00540C08 R WM_ERASEBKGND fErased:False
<00071> 00540C08 R WM_NOTIFY
<00072> 00540C08 S WM_SETCURSOR hwnd:0029105C nHittest:HTCLIENT wMouseMsg:WM_MOUSEMOVE
<00073> 00540C08 R WM_SETCURSOR fHaltProcessing:False
<00074> 00540C08 P WM_PAINT hdc:00000000
<00075> 00540C08 S WM_ERASEBKGND hdc:230136CA
<00076> 00540C08 S WM_CTLCOLORDLG hdcDlg:230136CA hwndDlg:00540C08
<00077> 00540C08 R WM_CTLCOLORDLG hBrush:0110005A
<00078> 00540C08 R WM_ERASEBKGND fErased:True
<00079> 00540C08 S WM_ERASEBKGND hdc:890134FC
<00080> 00540C08 S WM_CTLCOLORDLG hdcDlg:890134FC hwndDlg:00540C08
<00081> 00540C08 R WM_CTLCOLORDLG hBrush:0110005A
<00082> 00540C08 R WM_ERASEBKGND fErased:True
<00083> 00540C08 S WM_PRINTCLIENT hdc:890134FC uFlags:PRF_CLIENT
<00084> 00540C08 R WM_PRINTCLIENT
<00085> 00540C08 S WM_SETCURSOR hwnd:0029105C nHittest:HTCLIENT wMouseMsg:WM_LBUTTONUP
<00086> 00540C08 R WM_SETCURSOR fHaltProcessing:False
<00087> 00540C08 S WM_NOTIFY idCtrl:12320 pnmh:00107D48
<00088> 00540C08 R WM_NOTIFY

鼠标点击 中间 就出了 这么多消息,实在不知道如何下手,
比如这句
<00044> 00540C08 S WM_SETCURSOR hwnd:0029105C nHittest:HTCLIENT wMouseMsg:WM_LBUTTONDOWN
00540c08 tabcontrol 句柄 0029105c 是目标页面句柄
用sendmessage 该如何操作? 。。。
岁月小龙 2010-03-03
  • 打赏
  • 举报
回复
发送消息
::SendMessage(AfxGetApp()->m_pMainWnd->m_hWnd, WM_SEND_CURRENT_MESSAGE, (WPARAM)this->GetSafeHwnd(), 1);
WM_SEND_CURRENT_MESSAGE 由自己定义

接收到消息后,切换到相应的页面
m_sheet.SetCurSel(4);

向立天 2010-03-03
  • 打赏
  • 举报
回复
这个得用spy++看看切换页面的时候都产生了什么消息
然后再分析那个是目标消息
sandyandy 2010-03-03
  • 打赏
  • 举报
回复
调用SetCurSel

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧