Win32 Property Sheet problem
Hej alle,Jeg er forholdsvis grøn på Win32-området, og har kastet mig ud i Property Sheets. Jeg har nedenstående kode:
int APIENTRY MyPropSheetDlgProc(HWND hwnd, UINT message, UINT wParam, LONG lParam)
{
PROPSHEETHEADER m_PropSheet;
PROPSHEETPAGE m_psp[2];
static PROPSHEETPAGE * ps;
memset(m_psp, 0, sizeof(m_psp));
memset(&m_PropSheet, 0, sizeof(m_PropSheet));
m_psp[0].dwSize = sizeof(PROPSHEETPAGE);
m_psp[0].dwFlags = PSP_DEFAULT|PSP_USETITLE;
m_psp[0].hInstance = zhInstance;
m_psp[0].pszTemplate = (LPCSTR)IDD_DIALOG2;
m_psp[0].pszTitle = "Page 1";
m_psp[1].dwSize = sizeof(PROPSHEETPAGE);
m_psp[1].dwFlags = PSP_USETITLE;
m_psp[1].hInstance = zhInstance;
m_psp[1].pszTemplate = (LPCSTR)IDD_DIALOG3;
m_psp[1].pszTitle = "Page 2";
m_PropSheet.dwSize = sizeof(PROPSHEETHEADER);
m_PropSheet.dwFlags = PSH_PROPSHEETPAGE;
m_PropSheet.hInstance = zhInstance;
m_PropSheet.pszCaption = (LPSTR) "Cell Properties";
m_PropSheet.nPages = 2;
m_PropSheet.nStartPage = 0;
m_PropSheet.ppsp = (LPCPROPSHEETPAGE)m_psp;
switch (message)
{
case WM_INITDIALOG:
// Save the PROPSHEETPAGE information.
ps = (PROPSHEETPAGE *)lParam;
return true;
case WM_NOTIFY:
switch (((NMHDR FAR *) lParam)->code)
{
case PSN_SETACTIVE:
break;
case PSN_APPLY:
SetWindowLong(hwnd, DWL_MSGRESULT, true);
break;
case PSN_KILLACTIVE:
SetWindowLong(hwnd, DWL_MSGRESULT, false);
return 1;
break;
case PSN_RESET:
// Reset to the original values.
SetWindowLong(hwnd, DWL_MSGRESULT, false);
break;
}
}
PropertySheet(&m_PropSheet);
return 0;
}
--og--
case WM_COMMAND:
// Begin Menu Commands
switch(LOWORD(wParam))
{
case ID_FILE_EXIT:
PostMessage(hwnd, WM_CLOSE, 0, 0);
break;
case ID_OPEN_DIALOG:
// Initializing dialog box
int ret = DialogBox(GetModuleHandle(NULL), MAKEINTRESOURCE(IDD_DIALOG1), hwnd, MyPropSheetDlgProc);
// returning error if dialog box failed to open
if(ret == -1){
MessageBox(hwnd, "Dialog failed!", "Error", MB_OK | MB_ICONINFORMATION);
}
break;
}
// End Menu Commands
break;
Mit problem er, at starter jeg min application og klikker på menupunktet for mit property sheet, åbner den ikke kun én dialog men bliver ved med at åbne nye, hver gang jeg foretager mig noget.
Hvad gør jeg forkert?