选项卡控件SDK程序

#undef UNICODE #undef _UNICODE #include <windows.h> #include <commctrl.h> #include "resource.h" BOOL CALLBACK DialogProc( HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam ) { TCITEM item; RECT rcClient, rcTab; static HWND hTabCtl; static HWND hPage[2]; //与选项卡index对应,方便操作 static int curPage = 0; switch ( uMsg ) { case WM_INITDIALOG: { hTabCtl = GetDlgItem(hwndDlg, IDC_TAB1); item.mask = TCIF_TEXT; //添加两个选项卡 item.pszText = "Tab1"; TabCtrl_InsertItem(hTabCtl, 0, &item ); item.pszText = "Tab2"; TabCtrl_InsertItem(hTabCtl, 1, &item ); GetClientRect(hTabCtl, &rcClient); //显示区域矩形 SendMessage(hTabCtl, TCM_GETITEMRECT, 0, (LPARAM)&rcTab); //Tab矩形 hPage[0] = CreateDialog(GetModuleHandle(NULL), MAKEINTRESOURCE(IDD_PAGE1), hTabCtl, NULL); hPage[1] = CreateDialog(GetModuleHandle(NULL), MAKEINTRESOURCE(IDD_PAGE2), hTabCtl, NULL); ShowWindow(hPage[0], SW_SHOW); ShowWindow(hPage[1], SW_SHOW); //重新摆放两个子对话框 SetWindowPos(hPage[0], NULL, \ rcTab.left-1, rcTab.bottom+1, \ rcClient.right-rcTab.left-1, rcClient.bottom-rcTab.bottom-3, \ SWP_SHOWWINDOW); SetWindowPos(hPage[1], NULL, \ rcTab.left-1, rcTab.bottom+1, \ rcClient.right-rcTab.left-1, rcClient.bottom-rcTab.bottom-3, \ SWP_SHOWWINDOW); } break; case WM_NOTIFY: if ( IDC_TAB1 == wParam ) { if ( TCN_SELCHANGE == ((LPNMHDR)lParam)->code ) { int i = 0; i = SendMessage(hTabCtl, TCM_GETCURFOCUS, 0, 0 ); if ( i != curPage ) { ShowWindow(hPage[curPage], SW_HIDE); curPage = i; ShowWindow(hPage[i], SW_SHOW); } } } break; case WM_CLOSE: EndDialog(hwndDlg, 0); break; } return FALSE; } int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd ) { DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), NULL, DialogProc ); return 0; }

rc文件:

IDD_DIALOG1 DIALOGEX 0, 0, 316, 186 STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Dialog" FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN DEFPUSHBUTTON "OK",IDOK,205,165,50,14 PUSHBUTTON "Cancel",IDCANCEL,259,165,50,14 CONTROL "",IDC_TAB1,"SysTabControl32",0x0,7,17,302,140 END IDD_PAGE1 DIALOGEX 0, 0, 240, 98 STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_SYSMENU FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN LTEXT "第一页",IDC_STATIC,115,50,29,8 END IDD_PAGE2 DIALOGEX 0, 0, 243, 96 STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_SYSMENU FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN LTEXT "第二页",IDC_STATIC,115,50,29,8 END


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值