Skip to content
Snippets Groups Projects
Commit bf35d809 authored by Thuy Nguyen's avatar Thuy Nguyen Committed by Alexandre Julliard
Browse files

Added support for wizard property sheets.

parent 103f3b05
No related branches found
No related tags found
No related merge requests found
......@@ -15,6 +15,10 @@ extern HMODULE COMCTL32_hModule;
#define IDC_TABCONTROL 12320
#define IDC_APPLY_BUTTON 12321
#define IDC_BACK_BUTTON 12323
#define IDC_NEXT_BUTTON 12324
#define IDC_FINISH_BUTTON 12325
#define IDC_SUNKEN_LINE 12326
/* Toolbar customization dialog */
......
......@@ -5,8 +5,7 @@
* Copyright 1999 Thuy Nguyen
*
* TODO:
* - Modeless mode
* - Wizard mode
* - Tab order
* - Unicode property sheets
*/
......@@ -78,7 +77,6 @@ const char * PropSheetInfoStr = "PropertySheetInfo";
#define MAX_CAPTION_LENGTH 255
#define MAX_TABTEXT_LENGTH 255
/******************************************************************************
* Prototypes
*/
......@@ -99,12 +97,16 @@ static int PROPSHEET_CreatePage(HWND hwndParent, int index,
BOOL showPage);
static BOOL PROPSHEET_ShowPage(HWND hwndDlg, int index, PropSheetInfo * psInfo);
static PADDING_INFO PROPSHEET_GetPaddingInfo(HWND hwndDlg);
static BOOL PROPSHEET_Back(HWND hwndDlg);
static BOOL PROPSHEET_Next(HWND hwndDlg);
static BOOL PROPSHEET_Finish(HWND hwndDlg);
static BOOL PROPSHEET_Apply(HWND hwndDlg);
static void PROPSHEET_Cancel(HWND hwndDlg);
static void PROPSHEET_Help(HWND hwndDlg);
static void PROPSHEET_Changed(HWND hwndDlg, HWND hwndDirtyPage);
static void PROPSHEET_UnChanged(HWND hwndDlg, HWND hwndCleanPage);
static void PROPSHEET_PressButton(HWND hwndDlg, int buttonID);
static void PROPSHEET_SetFinishTextA(HWND hwndDlg, LPCSTR lpszText);
static void PROPSHEET_SetTitleA(HWND hwndDlg, DWORD dwStyle, LPCSTR lpszText);
static BOOL PROPSHEET_SetCurSel(HWND hwndDlg,
int index,
......@@ -121,6 +123,8 @@ static BOOL PROPSHEET_RemovePage(HWND hwndDlg,
HPROPSHEETPAGE hpage);
static void PROPSHEET_CleanUp();
static int PROPSHEET_GetPageIndex(HPROPSHEETPAGE hpage, PropSheetInfo* psInfo);
static void PROPSHEET_SetWizButtons(HWND hwndDlg, DWORD dwFlags);
static PADDING_INFO PROPSHEET_GetPaddingInfoWizard(HWND hwndDlg);
BOOL WINAPI
PROPSHEET_DialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
......@@ -317,9 +321,13 @@ BOOL PROPSHEET_CreateDialog(PropSheetInfo* psInfo)
LPVOID temp = 0;
HRSRC hRes;
DWORD resSize;
WORD resID = IDD_PROPSHEET;
if (psInfo->ppshheader->dwFlags & PSH_WIZARD)
resID = IDD_WIZARD;
if(!(hRes = FindResourceA(COMCTL32_hModule,
MAKEINTRESOURCEA(IDD_PROPSHEET),
MAKEINTRESOURCEA(resID),
RT_DIALOGA)))
return FALSE;
......@@ -397,6 +405,49 @@ static BOOL PROPSHEET_IsTooSmall(HWND hwndDlg, PropSheetInfo* psInfo)
return FALSE;
}
/******************************************************************************
* PROPSHEET_IsTooSmallWizard
*
* Verify that the default property sheet is big enough.
*/
static BOOL PROPSHEET_IsTooSmallWizard(HWND hwndDlg, PropSheetInfo* psInfo)
{
RECT rcSheetRect, rcPage, rcLine, rcSheetClient;
HWND hwndLine = GetDlgItem(hwndDlg, IDC_SUNKEN_LINE);
PADDING_INFO padding = PROPSHEET_GetPaddingInfoWizard(hwndDlg);
GetClientRect(hwndDlg, &rcSheetClient);
GetWindowRect(hwndDlg, &rcSheetRect);
GetWindowRect(hwndLine, &rcLine);
/* Remove the space below the sunken line */
rcSheetClient.bottom -= (rcSheetRect.bottom - rcLine.top);
/* Remove the buffer zone all around the edge */
rcSheetClient.bottom -= (padding.y * 2);
rcSheetClient.right -= (padding.x * 2);
/*
* Biggest page size.
*/
rcPage.left = psInfo->x;
rcPage.top = psInfo->y;
rcPage.right = psInfo->width;
rcPage.bottom = psInfo->height;
MapDialogRect(hwndDlg, &rcPage);
TRACE("biggest page %d %d %d %d\n", rcPage.left, rcPage.top,
rcPage.right, rcPage.bottom);
if (rcPage.right > rcSheetClient.right)
return TRUE;
if (rcPage.bottom > rcSheetClient.bottom)
return TRUE;
return FALSE;
}
/******************************************************************************
* PROPSHEET_AdjustSize
*
......@@ -454,6 +505,51 @@ static BOOL PROPSHEET_AdjustSize(HWND hwndDlg, PropSheetInfo* psInfo)
return TRUE;
}
/******************************************************************************
* PROPSHEET_AdjustSizeWizard
*
* Resizes the property sheet to fit the largest page.
*/
static BOOL PROPSHEET_AdjustSizeWizard(HWND hwndDlg, PropSheetInfo* psInfo)
{
HWND hwndButton = GetDlgItem(hwndDlg, IDCANCEL);
HWND hwndLine = GetDlgItem(hwndDlg, IDC_SUNKEN_LINE);
RECT rc;
int buttonHeight, lineHeight;
PADDING_INFO padding = PROPSHEET_GetPaddingInfoWizard(hwndDlg);
/* Get the height of buttons */
GetClientRect(hwndButton, &rc);
buttonHeight = rc.bottom;
GetClientRect(hwndLine, &rc);
lineHeight = rc.bottom;
/*
* Biggest page size.
*/
rc.left = psInfo->x;
rc.top = psInfo->y;
rc.right = psInfo->width;
rc.bottom = psInfo->height;
MapDialogRect(hwndDlg, &rc);
TRACE("Biggest page %d %d %d %d\n", rc.left, rc.top, rc.right, rc.bottom);
/* Make room */
rc.right += (padding.x * 2);
rc.bottom += (buttonHeight + (5 * padding.y) + lineHeight);
/*
* Resize the property sheet.
*/
SetWindowPos(hwndDlg, 0, 0, 0, rc.right, rc.bottom,
SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE);
return TRUE;
}
/******************************************************************************
* PROPSHEET_AdjustButtons
*
......@@ -549,6 +645,112 @@ static BOOL PROPSHEET_AdjustButtons(HWND hwndParent, PropSheetInfo* psInfo)
return TRUE;
}
/******************************************************************************
* PROPSHEET_AdjustButtonsWizard
*
* Adjusts the buttons' positions.
*/
static BOOL PROPSHEET_AdjustButtonsWizard(HWND hwndParent,
PropSheetInfo* psInfo)
{
HWND hwndButton = GetDlgItem(hwndParent, IDCANCEL);
HWND hwndLine = GetDlgItem(hwndParent, IDC_SUNKEN_LINE);
RECT rcSheet;
int x, y;
int num_buttons = 3;
int buttonWidth, buttonHeight, lineHeight, lineWidth;
PADDING_INFO padding = PROPSHEET_GetPaddingInfoWizard(hwndParent);
if (psInfo->hasHelp)
num_buttons++;
/*
* Obtain the size of the buttons.
*/
GetClientRect(hwndButton, &rcSheet);
buttonWidth = rcSheet.right;
buttonHeight = rcSheet.bottom;
GetClientRect(hwndLine, &rcSheet);
lineHeight = rcSheet.bottom;
/*
* Get the size of the property sheet.
*/
GetClientRect(hwndParent, &rcSheet);
/*
* All buttons will be at this y coordinate.
*/
y = rcSheet.bottom - (padding.y + buttonHeight);
/*
* Position the Next and the Finish buttons.
*/
hwndButton = GetDlgItem(hwndParent, IDC_NEXT_BUTTON);
x = rcSheet.right - ((padding.x + buttonWidth) * (num_buttons - 1));
SetWindowPos(hwndButton, 0, x, y, 0, 0,
SWP_NOSIZE | SWP_NOZORDER | SWP_NOACTIVATE);
hwndButton = GetDlgItem(hwndParent, IDC_FINISH_BUTTON);
SetWindowPos(hwndButton, 0, x, y, 0, 0,
SWP_NOSIZE | SWP_NOZORDER | SWP_NOACTIVATE);
ShowWindow(hwndButton, SW_HIDE);
/*
* Position the Back button.
*/
hwndButton = GetDlgItem(hwndParent, IDC_BACK_BUTTON);
x -= buttonWidth;
SetWindowPos(hwndButton, 0, x, y, 0, 0,
SWP_NOSIZE | SWP_NOZORDER | SWP_NOACTIVATE);
/*
* Position the Cancel button.
*/
hwndButton = GetDlgItem(hwndParent, IDCANCEL);
x = rcSheet.right - ((padding.x + buttonWidth) * (num_buttons - 2));
SetWindowPos(hwndButton, 0, x, y, 0, 0,
SWP_NOSIZE | SWP_NOZORDER | SWP_NOACTIVATE);
/*
* Position Help button.
*/
hwndButton = GetDlgItem(hwndParent, IDHELP);
if (psInfo->hasHelp)
{
x = rcSheet.right - (padding.x + buttonWidth);
SetWindowPos(hwndButton, 0, x, y, 0, 0,
SWP_NOSIZE | SWP_NOZORDER | SWP_NOACTIVATE);
}
else
ShowWindow(hwndButton, SW_HIDE);
/*
* Position and resize the sunken line.
*/
x = padding.x;
y = rcSheet.bottom - ((padding.y * 2) + buttonHeight + lineHeight);
GetClientRect(hwndParent, &rcSheet);
lineWidth = rcSheet.right - (padding.x * 2);
SetWindowPos(hwndLine, 0, x, y, lineWidth, 2,
SWP_NOZORDER | SWP_NOACTIVATE);
return TRUE;
}
/******************************************************************************
* PROPSHEET_GetPaddingInfo
*
......@@ -574,6 +776,53 @@ static PADDING_INFO PROPSHEET_GetPaddingInfo(HWND hwndDlg)
return padding;
}
/******************************************************************************
* PROPSHEET_GetPaddingInfoWizard
*
* Returns the layout information.
* Horizontal spacing is the distance between the Cancel and Help buttons.
* Vertical spacing is the distance between the line and the buttons.
*/
static PADDING_INFO PROPSHEET_GetPaddingInfoWizard(HWND hwndDlg)
{
PADDING_INFO padding;
RECT rc;
HWND hwndControl;
POINT ptHelp, ptCancel, ptLine;
/* Help button */
hwndControl = GetDlgItem(hwndDlg, IDHELP);
GetWindowRect(hwndControl, &rc);
ptHelp.x = rc.left;
ptHelp.y = rc.top;
ScreenToClient(hwndDlg, &ptHelp);
/* Cancel button */
hwndControl = GetDlgItem(hwndDlg, IDCANCEL);
GetWindowRect(hwndControl, &rc);
ptCancel.x = rc.right;
ptCancel.y = rc.top;
ScreenToClient(hwndDlg, &ptCancel);
/* Line */
hwndControl = GetDlgItem(hwndDlg, IDC_SUNKEN_LINE);
GetWindowRect(hwndControl, &rc);
ptLine.x = 0;
ptLine.y = rc.bottom;
ScreenToClient(hwndDlg, &ptLine);
padding.x = ptHelp.x - ptCancel.x;
padding.y = ptHelp.y - ptLine.y;
return padding;
}
/******************************************************************************
* PROPSHEET_CreateTabControl
*
......@@ -631,8 +880,8 @@ static int PROPSHEET_CreatePage(HWND hwndParent,
HWND hwndPage;
RECT rc;
PropPageInfo* ppInfo = psInfo->proppage;
PADDING_INFO padding = PROPSHEET_GetPaddingInfo(hwndParent);
HWND hwndTabCtrl = GetDlgItem(hwndParent, IDC_TABCONTROL);
PADDING_INFO padding;
HWND hwndAfter;
TRACE("index %d\n", index);
......@@ -686,12 +935,25 @@ static int PROPSHEET_CreatePage(HWND hwndParent,
MapDialogRect(hwndParent, &rc);
/*
* Ask the Tab control to fit this page in.
*/
SendMessageA(hwndTabCtrl, TCM_ADJUSTRECT, FALSE, (LPARAM)&rc);
if (psInfo->ppshheader->dwFlags & PSH_WIZARD)
{
GetWindowRect(hwndParent, &rc);
padding = PROPSHEET_GetPaddingInfoWizard(hwndParent);
hwndAfter = hwndParent;
}
else
{
/*
* Ask the Tab control to fit this page in.
*/
HWND hwndTabCtrl = GetDlgItem(hwndParent, IDC_TABCONTROL);
SendMessageA(hwndTabCtrl, TCM_ADJUSTRECT, FALSE, (LPARAM)&rc);
padding = PROPSHEET_GetPaddingInfo(hwndParent);
hwndAfter = HWND_TOP;
}
SetWindowPos(hwndPage, HWND_TOP,
SetWindowPos(hwndPage, hwndAfter,
rc.left + padding.x,
rc.top + padding.y,
0, 0, SWP_NOSIZE);
......@@ -741,6 +1003,91 @@ static BOOL PROPSHEET_ShowPage(HWND hwndDlg, int index, PropSheetInfo * psInfo)
return TRUE;
}
/******************************************************************************
* PROPSHEET_Back
*/
static BOOL PROPSHEET_Back(HWND hwndDlg)
{
BOOL res;
NMHDR hdr;
HWND hwndPage;
HWND hwndBack = GetDlgItem(hwndDlg, IDC_BACK_BUTTON);
PropSheetInfo* psInfo = (PropSheetInfo*) GetPropA(hwndDlg,
PropSheetInfoStr);
hdr.code = PSN_WIZBACK;
hwndPage = psInfo->proppage[psInfo->active_page].hwndPage;
if (SendMessageA(hwndPage, WM_NOTIFY, 0, (LPARAM) &hdr) == -1)
return FALSE;
res = PROPSHEET_SetCurSel(hwndDlg, psInfo->active_page - 1, 0);
/* if we went to page 0, disable Back button */
if (res && (psInfo->active_page == 0))
EnableWindow(hwndBack, FALSE);
return TRUE;
}
/******************************************************************************
* PROPSHEET_Next
*/
static BOOL PROPSHEET_Next(HWND hwndDlg)
{
NMHDR hdr;
HWND hwndPage;
LRESULT msgResult = 0;
PropSheetInfo* psInfo = (PropSheetInfo*) GetPropA(hwndDlg,
PropSheetInfoStr);
hdr.code = PSN_WIZNEXT;
hwndPage = psInfo->proppage[psInfo->active_page].hwndPage;
msgResult = SendMessageA(hwndPage, WM_NOTIFY, 0, (LPARAM) &hdr);
TRACE("msg result %ld\n", msgResult);
if (msgResult == -1)
return FALSE;
PROPSHEET_SetCurSel(hwndDlg, psInfo->active_page + 1, 0);
return TRUE;
}
/******************************************************************************
* PROPSHEET_Finish
*/
static BOOL PROPSHEET_Finish(HWND hwndDlg)
{
NMHDR hdr;
HWND hwndPage;
LRESULT msgResult = 0;
PropSheetInfo* psInfo = (PropSheetInfo*) GetPropA(hwndDlg,
PropSheetInfoStr);
hdr.code = PSN_WIZFINISH;
hwndPage = psInfo->proppage[psInfo->active_page].hwndPage;
msgResult = SendMessageA(hwndPage, WM_NOTIFY, 0, (LPARAM) &hdr);
TRACE("msg result %ld\n", msgResult);
if (msgResult != 0)
return FALSE;
if (psInfo->isModeless)
psInfo->active_page = -1;
else
EndDialog(hwndDlg, TRUE);
return TRUE;
}
/******************************************************************************
* PROPSHEET_Apply
*/
......@@ -894,19 +1241,19 @@ static void PROPSHEET_PressButton(HWND hwndDlg, int buttonID)
SendMessageA(hwndDlg, WM_COMMAND, IDC_APPLY_BUTTON, 0);
break;
case PSBTN_BACK:
FIXME("Wizard mode not implemented.\n");
PROPSHEET_Back(hwndDlg);
break;
case PSBTN_CANCEL:
SendMessageA(hwndDlg, WM_COMMAND, IDCANCEL, 0);
break;
case PSBTN_FINISH:
FIXME("Wizard mode not implemented.\n");
PROPSHEET_Finish(hwndDlg);
break;
case PSBTN_HELP:
SendMessageA(hwndDlg, WM_COMMAND, IDHELP, 0);
break;
case PSBTN_NEXT:
FIXME("Wizard mode not implemented.\n");
PROPSHEET_Next(hwndDlg);
break;
case PSBTN_OK:
SendMessageA(hwndDlg, WM_COMMAND, IDOK, 0);
......@@ -1008,6 +1355,30 @@ static void PROPSHEET_SetTitleA(HWND hwndDlg, DWORD dwStyle, LPCSTR lpszText)
SetWindowTextA(hwndDlg, lpszText);
}
/******************************************************************************
* PROPSHEET_SetFinishTextA
*/
static void PROPSHEET_SetFinishTextA(HWND hwndDlg, LPCSTR lpszText)
{
HWND hwndButton = GetDlgItem(hwndDlg, IDC_FINISH_BUTTON);
/* Set text, show and enable the Finish button */
SetWindowTextA(hwndButton, lpszText);
ShowWindow(hwndButton, SW_SHOW);
EnableWindow(hwndButton, TRUE);
/* Make it default pushbutton */
SendMessageA(hwndDlg, DM_SETDEFID, IDC_FINISH_BUTTON, 0);
/* Hide Back button */
hwndButton = GetDlgItem(hwndDlg, IDC_BACK_BUTTON);
ShowWindow(hwndButton, SW_HIDE);
/* Hide Next button */
hwndButton = GetDlgItem(hwndDlg, IDC_NEXT_BUTTON);
ShowWindow(hwndButton, SW_HIDE);
}
/******************************************************************************
* PROPSHEET_QuerySiblings
*/
......@@ -1185,6 +1556,62 @@ static BOOL PROPSHEET_RemovePage(HWND hwndDlg,
return FALSE;
}
/******************************************************************************
* PROPSHEET_SetWizButtons
*
* This code will work if (and assumes that) the Next button is on top of the
* Finish button. ie. Finish comes after Next in the Z order.
* This means make sure the dialog template reflects this.
*
*/
static void PROPSHEET_SetWizButtons(HWND hwndDlg, DWORD dwFlags)
{
HWND hwndButton;
TRACE("%ld\n", dwFlags);
if (dwFlags & PSWIZB_BACK)
{
hwndButton = GetDlgItem(hwndDlg, IDC_BACK_BUTTON);
EnableWindow(hwndButton, TRUE);
}
if (dwFlags & PSWIZB_NEXT)
{
/* Hide the Finish button */
hwndButton = GetDlgItem(hwndDlg, IDC_FINISH_BUTTON);
ShowWindow(hwndButton, SW_HIDE);
/* Show and enable the Next button */
hwndButton = GetDlgItem(hwndDlg, IDC_NEXT_BUTTON);
ShowWindow(hwndButton, SW_SHOW);
EnableWindow(hwndButton, TRUE);
/* Set the Next button as the default pushbutton */
SendMessageA(hwndDlg, DM_SETDEFID, IDC_NEXT_BUTTON, 0);
}
if ((dwFlags & PSWIZB_FINISH) || (dwFlags & PSWIZB_DISABLEDFINISH))
{
/* Hide the Next button */
hwndButton = GetDlgItem(hwndDlg, IDC_NEXT_BUTTON);
ShowWindow(hwndButton, SW_HIDE);
/* Show the Finish button */
hwndButton = GetDlgItem(hwndDlg, IDC_FINISH_BUTTON);
ShowWindow(hwndButton, SW_SHOW);
if (dwFlags & PSWIZB_FINISH)
EnableWindow(hwndButton, TRUE);
else
EnableWindow(hwndButton, FALSE);
/* Set the Finish button as the default pushbutton */
SendMessageA(hwndDlg, DM_SETDEFID, IDC_FINISH_BUTTON, 0);
}
}
/******************************************************************************
* PROPSHEET_GetPageIndex
*
......@@ -1343,17 +1770,36 @@ PROPSHEET_DialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
GetWindowTextA(hwnd, psInfo->strPropertiesFor, MAX_CAPTION_LENGTH);
PROPSHEET_CreateTabControl(hwnd, psInfo);
if (psInfo->ppshheader->dwFlags & PSH_WIZARD)
{
HWND hwndBack = GetDlgItem(hwnd, IDC_BACK_BUTTON);
if (PROPSHEET_IsTooSmallWizard(hwnd, psInfo))
{
PROPSHEET_AdjustSizeWizard(hwnd, psInfo);
PROPSHEET_AdjustButtonsWizard(hwnd, psInfo);
}
if (PROPSHEET_IsTooSmall(hwnd, psInfo))
/* Disable Back button if we start at page 0 */
if (psInfo->active_page == 0)
EnableWindow(hwndBack, FALSE);
}
else
{
PROPSHEET_AdjustSize(hwnd, psInfo);
PROPSHEET_AdjustButtons(hwnd, psInfo);
PROPSHEET_CreateTabControl(hwnd, psInfo);
if (PROPSHEET_IsTooSmall(hwnd, psInfo))
{
PROPSHEET_AdjustSize(hwnd, psInfo);
PROPSHEET_AdjustButtons(hwnd, psInfo);
}
}
ppshpage = PROPSHEET_GetPSPPage(psInfo, psInfo->active_page);
PROPSHEET_CreatePage(hwnd, psInfo->active_page, psInfo, ppshpage, TRUE);
SendMessageA(hwndTabCtrl, TCM_SETCURSEL, psInfo->active_page, 0);
if (!(psInfo->ppshheader->dwFlags & PSH_WIZARD))
SendMessageA(hwndTabCtrl, TCM_SETCURSEL, psInfo->active_page, 0);
SetPropA(hwnd, PropSheetInfoStr, (HANDLE)psInfo);
......@@ -1410,6 +1856,18 @@ PROPSHEET_DialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
break;
}
case IDC_BACK_BUTTON:
PROPSHEET_Back(hwnd);
break;
case IDC_NEXT_BUTTON:
PROPSHEET_Next(hwnd);
break;
case IDC_FINISH_BUTTON:
PROPSHEET_Finish(hwnd);
break;
case IDCANCEL:
PROPSHEET_Cancel(hwnd);
break;
......@@ -1548,18 +2006,20 @@ PROPSHEET_DialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
PROPSHEET_PressButton(hwnd, (int)wParam);
return TRUE;
case PSM_SETFINISHTEXTA:
PROPSHEET_SetFinishTextA(hwnd, (LPCSTR) lParam);
return TRUE;
case PSM_SETWIZBUTTONS:
PROPSHEET_SetWizButtons(hwnd, (DWORD)lParam);
return TRUE;
case PSM_SETTITLEW:
FIXME("Unimplemented msg PSM_SETTITLE32W\n");
return 0;
case PSM_SETWIZBUTTONS:
FIXME("Unimplemented msg PSM_SETWIZBUTTONS\n");
return 0;
case PSM_SETCURSELID:
FIXME("Unimplemented msg PSM_SETCURSELID\n");
return 0;
case PSM_SETFINISHTEXTA:
FIXME("Unimplemented msg PSM_SETFINISHTEXT32A\n");
return 0;
case PSM_SETFINISHTEXTW:
FIXME("Unimplemented msg PSM_SETFINISHTEXT32W\n");
return 0;
......
......@@ -15,6 +15,20 @@ BEGIN
END
IDD_WIZARD DIALOG DISCARDABLE 0, 0, 292, 159
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | DS_CONTROL
CAPTION "Wizard"
FONT 8, "MS Sans Serif"
BEGIN
DEFPUSHBUTTON "Finish", IDC_FINISH_BUTTON,121,138,50,14
DEFPUSHBUTTON "&Next >", IDC_NEXT_BUTTON,121,138,50,14
PUSHBUTTON "< &Back", IDC_BACK_BUTTON,71,138,50,14
PUSHBUTTON "Cancel", IDCANCEL,178,138,50,14
PUSHBUTTON "Help", IDHELP,235,138,50,14
LTEXT "", IDC_SUNKEN_LINE,7,129,278,1,SS_SUNKEN
END
IDD_TBCUSTOMIZE DIALOG DISCARDABLE 10, 20, 357, 125
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Customize Toolbar"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment