Main
#include <windows.h>#include <commctrl.h>#include "resource.h"#pragma comment(linker, "/opt:nowin98")///////////////////////////////////////////////////////////////////////////////BOOL CALLBACK general_DialogProc( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam){ switch(uMsg) { case WM_INITDIALOG: return TRUE; } return FALSE;}///////////////////////////////////////////////////////////////////////////////void main_SetPage(HWND hwnd,int page){ // 0. get the hwnd''s of the two pages! HWND hGen = GetDlgItem(hwnd,IDD_PAGE_GENERAL); HWND hOpt = GetDlgItem(hwnd,IDD_PAGE_OPTIONS); // deal with hGet if(page == 0) { if(!hGen) { hGen = CreateDialog((HINSTANCE)GetWindowLong(hwnd,GWL_HINSTANCE),MAKEINTRESOURCE(IDD_PAGE_GENERAL),hwnd,general_DialogProc); SetWindowLong(hGen,GWL_ID,IDD_PAGE_GENERAL); } SetWindowPos(hGen,0,0,0,0,0,SWP_SHOWWINDOW|SWP_NOZORDER|SWP_NOACTIVATE|SWP_NOSIZE|SWP_NOMOVE); SetFocus(GetWindow(hGen,GW_CHILD)); } else if(hGen) { SetWindowPos(hGen,0,0,0,0,0,SWP_HIDEWINDOW|SWP_NOZORDER|SWP_NOACTIVATE|SWP_NOSIZE|SWP_NOMOVE); } if(page == 1) { if(!hOpt) { hOpt = CreateDialog((HINSTANCE)GetWindowLong(hwnd,GWL_HINSTANCE),MAKEINTRESOURCE(IDD_PAGE_OPTIONS),hwnd,general_DialogProc); SetWindowLong(hOpt,GWL_ID,IDD_PAGE_OPTIONS); } SetWindowPos(hOpt,0,0,0,0,0,SWP_SHOWWINDOW|SWP_NOZORDER|SWP_NOACTIVATE|SWP_NOSIZE|SWP_NOMOVE); SetFocus(GetWindow(hOpt,GW_CHILD)); } else if(hOpt) { SetWindowPos(hOpt,0,0,0,0,0,SWP_HIDEWINDOW|SWP_NOZORDER|SWP_NOACTIVATE|SWP_NOSIZE|SWP_NOMOVE); }}void main_SetupTabControl(HWND hwnd){ HWND hctl = GetDlgItem(hwnd,IDC_TAB); TCITEM item; item.mask = TCIF_TEXT; item.pszText = "General"; TabCtrl_InsertItem(hctl,0,&item); item.pszText = "Options"; TabCtrl_InsertItem(hctl,1,&item);}void main_HandleTabNotify(HWND hwnd,LPNMHDR pnmhdr){ HWND hctl = GetDlgItem(hwnd,IDC_TAB); if(pnmhdr->code == TCN_SELCHANGE) { int p = TabCtrl_GetCurSel(hctl); main_SetPage(hwnd,p); }}BOOL CALLBACK main_DialogProc( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam){ switch(uMsg) { case WM_INITDIALOG: main_SetupTabControl(hwnd); main_SetPage(hwnd,0);// main_Create return TRUE; case WM_NOTIFY: if(wParam == IDC_TAB) main_HandleTabNotify(hwnd,(LPNMHDR)lParam); else return FALSE; return TRUE; case WM_CLOSE: EndDialog(hwnd,0); return TRUE; } return FALSE;}int WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR pszCmdLine, int nCmdShow){ INITCOMMONCONTROLSEX ice; ice.dwSize = sizeof(ice); ice.dwICC = ICC_TAB_CLASSES|ICC_UPDOWN_CLASS; InitCommonControlsEx(&ice); return DialogBoxParam(hInst,MAKEINTRESOURCE(IDD_MAIN),NULL,main_DialogProc,0);}EXTERN_C int WINAPI WinMainCRTStartup(){ return WinMain(GetModuleHandle(NULL),NULL,GetCommandLine(),SW_SHOWDEFAULT);}
Resource IDs
//{{NO_DEPENDENCIES}}// Microsoft Developer Studio generated include file.// Used by apitabtest.rc//#define IDD_MAIN 101#define IDD_PAGE_GENERAL 102#define IDD_PAGE_OPTIONS 103#define IDC_TAB 1000#define IDC_EDIT1 1001#define IDC_EDIT2 1002#define IDC_RADIO1 1003#define IDC_RADIO2 1004#define IDC_RADIO3 1005#define IDC_RADIO4 1006// Next default values for new objects// #ifdef APSTUDIO_INVOKED#ifndef APSTUDIO_READONLY_SYMBOLS#define _APS_NEXT_RESOURCE_VALUE 104#define _APS_NEXT_COMMAND_VALUE 40001#define _APS_NEXT_CONTROL_VALUE 1007#define _APS_NEXT_SYMED_VALUE 101#endif#endif
Resource Script
//Microsoft Developer Studio generated resource script.//#include "resource.h"#define APSTUDIO_READONLY_SYMBOLS///////////////////////////////////////////////////////////////////////////////// Generated from the TEXTINCLUDE 2 resource.//#include "afxres.h"/////////////////////////////////////////////////////////////////////////////#undef APSTUDIO_READONLY_SYMBOLS/////////////////////////////////////////////////////////////////////////////// English (U.S.) resources#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)#ifdef _WIN32LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US#pragma code_page(1252)#endif //_WIN32#ifdef APSTUDIO_INVOKED///////////////////////////////////////////////////////////////////////////////// TEXTINCLUDE//1 TEXTINCLUDE DISCARDABLE BEGIN "resource.h\0"END2 TEXTINCLUDE DISCARDABLE BEGIN "#include ""afxres.h""\r\n" "\0"END3 TEXTINCLUDE DISCARDABLE BEGIN "\r\n" "\0"END#endif // APSTUDIO_INVOKED///////////////////////////////////////////////////////////////////////////////// Dialog//IDD_MAIN DIALOG DISCARDABLE 0, 0, 308, 190STYLE DS_CENTER | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_CAPTION | WS_SYSMENU | WS_THICKFRAMECAPTION "My App"FONT 8, "MS Sans Serif"BEGIN CONTROL "Tab1",IDC_TAB,"SysTabControl32",0x0,7,7,294,176ENDIDD_PAGE_GENERAL DIALOG DISCARDABLE 50, 50, 186, 94STYLE DS_CONTROL | WS_CHILDFONT 8, "MS Sans Serif"BEGIN EDITTEXT IDC_EDIT1,72,22,107,14,ES_AUTOHSCROLL EDITTEXT IDC_EDIT2,72,59,107,14,ES_AUTOHSCROLL LTEXT "Static",IDC_STATIC,7,25,19,8 LTEXT "Static",IDC_STATIC,7,62,19,8ENDIDD_PAGE_OPTIONS DIALOG DISCARDABLE 50, 50, 186, 95STYLE DS_CONTROL | WS_CHILDFONT 8, "MS Sans Serif"BEGIN CONTROL "Radio1",IDC_RADIO1,"Button",BS_AUTORADIOBUTTON,7,15,39, 10 CONTROL "Radio2",IDC_RADIO2,"Button",BS_AUTORADIOBUTTON,7,34,39, 10 CONTROL "Radio3",IDC_RADIO3,"Button",BS_AUTORADIOBUTTON,7,52,39, 10 CONTROL "Radio4",IDC_RADIO4,"Button",BS_AUTORADIOBUTTON,7,66,39, 10END///////////////////////////////////////////////////////////////////////////////// DESIGNINFO//#ifdef APSTUDIO_INVOKEDGUIDELINES DESIGNINFO DISCARDABLE BEGIN IDD_MAIN, DIALOG BEGIN LEFTMARGIN, 7 RIGHTMARGIN, 301 VERTGUIDE, 20 VERTGUIDE, 290 TOPMARGIN, 7 BOTTOMMARGIN, 183 HORZGUIDE, 30 HORZGUIDE, 173 END IDD_PAGE_GENERAL, DIALOG BEGIN LEFTMARGIN, 7 RIGHTMARGIN, 179 VERTGUIDE, 72 TOPMARGIN, 7 BOTTOMMARGIN, 87 HORZGUIDE, 29 HORZGUIDE, 66 END IDD_PAGE_OPTIONS, DIALOG BEGIN LEFTMARGIN, 7 RIGHTMARGIN, 179 TOPMARGIN, 7 BOTTOMMARGIN, 88 ENDEND#endif // APSTUDIO_INVOKED#endif // English (U.S.) resources/////////////////////////////////////////////////////////////////////////////#ifndef APSTUDIO_INVOKED///////////////////////////////////////////////////////////////////////////////// Generated from the TEXTINCLUDE 3 resource.///////////////////////////////////////////////////////////////////////////////#endif // not APSTUDIO_INVOKED
Hope that helps.