sdk TAB控件的应用

来源:互联网 发布:hadoop源码编译 编辑:程序博客网 时间:2024/06/06 14:10
 

#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;
}

原创粉丝点击