#include "stdafx.h" #include "resource.h" #include <commctrl.h> #pragma comment(lib,"comctl32.lib") static HINSTANCE g_hInst; static HWND g_hTabCtrl; static HWND g_hTabSheet1; static HWND g_hTabSheet2; LRESULT CALLBACK TabSheetProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam) { switch(msg){ case WM_INITDIALOG: return true; } return false; } static BOOL CALLBACK DlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam) { TCITEM tc; RECT rt; NMHDR *nm = (NMHDR *)lParam; LPPOINT pt = (LPPOINT)&rt; switch(msg) { case WM_INITDIALOG: InitCommonControls(); g_hTabCtrl=GetDlgItem(hDlg,IDC_TAB1); tc.mask = TCIF_TEXT; tc.pszText = "1"; TabCtrl_InsertItem(g_hTabCtrl,0,&tc); tc.mask = TCIF_TEXT; tc.pszText = "2"; TabCtrl_InsertItem(g_hTabCtrl,1,&tc); g_hTabSheet1 = CreateDialog(g_hInst,(LPCTSTR)IDD_DIALOG2,hDlg,(DLGPROC)TabSheetProc); g_hTabSheet2 = CreateDialog(g_hInst,(LPCTSTR)IDD_DIALOG3,hDlg,(DLGPROC)TabSheetProc); GetClientRect(g_hTabCtrl,&rt); TabCtrl_AdjustRect(g_hTabCtrl, false, &rt); MapWindowPoints(g_hTabCtrl,hDlg,pt,2); MoveWindow(g_hTabSheet1,rt.left,rt.top,rt.right-rt.left,rt.bottom-rt.top,false); MoveWindow(g_hTabSheet2,rt.left,rt.top,rt.right-rt.left,rt.bottom-rt.top,false); ShowWindow(g_hTabSheet1,SW_SHOW); break; case WM_COMMAND: if ((LOWORD(wParam)==IDCANCEL)||(LOWORD(wParam)==IDOK)) EndDialog(g_hTabSheet1,false); EndDialog(g_hTabSheet2,false); EndDialog(g_hTabCtrl,false); break; case WM_NOTIFY: switch(nm->code){ case TCN_SELCHANGE: if(nm->hwndFrom==g_hTabCtrl) { switch(TabCtrl_GetCurSel(g_hTabCtrl)){ case 0: ShowWindow(g_hTabSheet1,true); ShowWindow(g_hTabSheet2,false); break; case 1: ShowWindow(g_hTabSheet1,false); ShowWindow(g_hTabSheet2,true); break; } } break; } return true; case WM_CLOSE: EndDialog(g_hTabSheet1,false); EndDialog(g_hTabSheet2,false); EndDialog(g_hTabCtrl,false); EndDialog(hDlg, false); return true; default: return false; } // return true; } int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR line, int show) { g_hInst = hInst; if(DialogBox(hInst,MAKEINTRESOURCE(IDD_DIALOG1),NULL,DlgProc)==-1) { return 0; } return 0; }