CPropertyPage - was statt oninitdialog?
-
Hallo zusammen
Ich habe mir ein propertysheet mit mehreren PropertyPages gebaut. Soweit so gut.
Nun habe ich aber in einer PropertyPage Buttons,welche ich mit Bildern oder Icons versehen möchte. In einem Dialogfenster habe ich dies bisher mit SetIcon gemacht. Probiere ich dies aber in dem Moment, in welchem ich das PropertySheet im Hauptdialog erzeugt habe, so bekomme ich Debugfehler in der afxwin2 angemeckert, in dem Moment das Programm startet.Hier mal ein Codestück aus der oninitdialog meines Hauptfensters:
// TODO: Hier zusätzliche Initialisierung einfügen CRect rc; this->GetClientRect(rc); //Registerkarten erzeugen m_PropSheet.AddPage(&m_PropVideo); m_PropSheet.AddPage(&m_PropVideoSet); m_PropSheet.Create(this,WS_CHILD | WS_VISIBLE, WS_EX_TOPMOST); m_PropSheet.SetWindowPos(&wndTop,0,0,rc.right,660,SWP_NOSIZE); //Oberflächen Anpassen /initialisieren //Fenster positionieren m_PropVideo.m_Img1.MoveWindow(276,6,704,576,true); //Button-Icons laden m_PropVideo.m_PlayButton.SetIcon(AfxGetApp()->LoadIcon(IDI_PLAY_ICON)); //Preview laden m_PropVideo.m_BitmapPreview1.MoveWindow(6,6,0,0); m_PropVideo.m_BitmapPreview1.SetBitmap((HBITMAP)LoadImage(NULL, "d:\\test.bmp", IMAGE_BITMAP, 262 , 214, LR_LOADFROMFILE | LR_CREATEDIBSECTION ));Größenanderungen und externes Bitmap in das eine Control laden funktionieren. Nur seticon nicht.
Ich wollte es schon beim PropertyPage selber eintragen, aber das hat ja keine OnInitDialog.Hat jemand eine Idee wie ich in meinen PropertyPages die Icons aus dem Resourcen angezeigt bekomme?
Was mach ich falsch?
ks
-
CPropertyPage hat mehrere virtuelle Funktionen, welche du überschreiben kannst: OnSetActive, OnWizardBack, usw.
Aber die PrppertyPage erbt doch von CDialog, also muss die OnInitDialog auch nutzbar sein.
-
sorry, aber ich sitz erst seit ein paar tagen vor visual studio 2008.
gibt es da ne möglichkeit wie ich diese funktionen hinzufüge, oder muss ich das zu fuss machen?
-
ok, habs gefunden wie ich die oninitdialog hinzufüge.
da habe ich nun folgendes hinein geschrieben:m_PlayButton.SetBitmap(LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_PLAY_BITMAP1)));dennoch erhalte ich debugfehler beim starten an genau dieser stelle.
wieso das?hast du noch eine idee?
-
ok, jetzt geht es.
In der OnInitDialog des PropertyPages habe ich nun dies hineingeschrieben:((CButton*)GetDlgItem(IDC_PLAY_BUTTON))->SetBitmap(LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_PLAY_BITMAP1)));Damit funktioniert es.
Wieso es nicht über die Membervariable ging, bleibt mir allerdings schleierhaft.Danke
ks
-
Hast du den Membervariablenaufruf auch NACH dem CPropertyPage::OnInitDialog gemacht?
-
ja. sag nicht das ist falsch? mach ich schon immer so
-
klsc schrieb:
ja. sag nicht das ist falsch? mach ich schon immer so
Is richtig, keine Angst^^