PROPSHEETPAGE: lparam wird nicht übermittel
-
Hi.
Ich habe eine PROPSHEETPAGE, in der die General-Seite meines Optionsdialoges geknüpft ist. allerdings möchte ich die Instanz der Klasse wiederhaben, damit ich auf diese zugreifen kann. dazu habe ich den lParam mit dem This-pointer gefüllt, aber dieser kommt in der init-message nicht an...
ZeroMemory(&pshSettings, sizeof(PROPSHEETHEADER)); pshSettings.dwSize = sizeof(PROPSHEETHEADER); pshSettings.dwFlags = 0; pshSettings.hwndParent = hParentWnd; pshSettings.hInstance = hInstance; pshSettings.pszCaption = MAKEINTRESOURCE(IDS_SETTINGS); // Create general page ZeroMemory(&pPages[0], sizeof(PROPSHEETPAGE)); pPages[0].dwSize = sizeof(PROPSHEETPAGE); pPages[0].hInstance = hInstance; pPages[0].lParam = (LPARAM)this; pPages[0].pfnDlgProc = SettingsDlg::GeneralPageProc; pPages[0].pszTemplate = MAKEINTRESOURCE(IDD_SETTINGS_GENERAL); pPages[0].pszTitle = MAKEINTRESOURCE(IDS_SETTINGS_GENERAL); hPages[0] = CreatePropertySheetPage(&pPages[0]); pshSettings.nPages = 1; pshSettings.phpage = hPages; pshSettings.nStartPage = 0; pshSettings.pStartPage = MAKEINTRESOURCE(IDS_SETTINGS_GENERAL); } SettingsDlg::~SettingsDlg(void) { } void SettingsDlg::Modal() { PropertySheet(&pshSettings); } BOOL CALLBACK SettingsDlg::GeneralPageProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { static SettingsDlg* instance; if (uMsg == WM_INITDIALOG) instance = (SettingsDlg*)lParam; return instance->InternalGeneralPageProc(hDlg, uMsg, wParam, lParam); }
Danke.
-
Also ich habe mal eine Konstruktion gesehen bei der lParam bei der WM_INITDIALOG Message so gecasted wurde:
PROPSHEETPAGE ps = (PROPSHEETPAGE *)lParam;
mit dem entsprechenden Zugriff auf den lParam-Member sollte das dann funktionieren und das hat es bei mir auch.
-
RattlesnakeAlgorithms hat recht.
Der lParam Wert in WM_INITDIALOG zeigt auf die PROPSHEETPAGE. Über diesen Zeiger kannst Du dann den lParam Wert auslesen.BTW:
Deine Aufbau versagt kläglich wenn Du 2 Pages mit der gleichen DialogProc versiehst und esmuss krachen, wenn WM_INITDIALOG nicht die erste Nachricht ist, die Deine DlgProc bekommt!
-
ich weiß, die zweite page kommt noch! es geht sich um die 1.
aber danke... funzt.