闲鱼客服电话:VC中在主程序窗口建立属性页

来源:百度文库 编辑:高考问答 时间:2024/04/29 10:13:07
我想在主窗口里面建立一个属性页
注意是SDK的,不要MFC的
希望能给出主要代码

#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_TAB);

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_DIALOG_SHEET1,hDlg,(DLGPROC)TabSheetProc);
g_hTabSheet2 = CreateDialog(g_hInst,(LPCTSTR)IDD_DIALOG_SHEET2,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);
return true;
default:
return false;
}
// return true;
}

int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR line, int show)
{
g_hInst = hInst;
if(DialogBox(hInst,"IDD_DIALOG",NULL,DlgProc)==-1)
{
return 0;
}
return 0;
}