MoveWindow() funktioniert nicht
-
Hallo
Meine Funktion MoveWindow() funzt net, aber ich weiß nicht warum. Hab aus Testzwecken erstmal folgende Parameter Uebergeben:
CKlasse Handle; Handle.GetDlgItem(IDC_TAB1)->MoveWindow(0,0,100,100,TRUE);
Er meldet zwar keine Fehler, aber wenn ich auf den Dialog klicke, macht er mir nen "Debug Assertion Failed".
-
Probier mal UpdateWindow noch dazu
wenn net amch noch nen ScreenToClient
-
Hi,
was ist denn CKlasse? Ein Dialog (vermute ich mal).
Wenn Du einen Dialog mit CKlasse dlg Instanzierst, ist ja noch nichts erstellt
worden. Erst wenn du DoModal oder Create aufrufst, ist der Dialog erstellt.
GetDlgItem kann also noch gar kein gültiges Item bzw. Control zurückliefern!Du rufst dann eine Methode auf einen NULL-Zeiger auf.
Handle.GetDlgItem(IDC_TAB1)->MoveWindow(0,0,100,100,TRUE); // Handle.GetDlgItem(IDC_TAB1) liefert NULL
Das ist dann im Debug ein Assert und im Release der Selbstmord!
Bei Create kannst Du in OnCreate reagieren und bei DoModal in
OnInitDialog.Da Du leider nicht mehr Code gepostet hast, ist das die einzige Hilfe
die ich Dir bis hierhin geben kann.Gruss
EB
-
Da ich deinen anderen Post gelesen habe, denke ich das du deine Registerkarte verkleinern möchtest. hab ich zwar noch nicht gemacht, aber das dürfte so funktionieren:
CTabCtrl *pTab = (CTabCtrl*)GetDlgItem(IDC_TAB1) pTab->MoveWindow(0,0,100,100,TRUE);
-
Hmm,
es gibt keinen unterschied zwischen:
CKlasse Handle; Handle.GetDlgItem(IDC_TAB1)->MoveWindow(0,0,100,100,TRUE);
und
CTabCtrl *pTab = (CTabCtrl*)GetDlgItem(IDC_TAB1) pTab->MoveWindow(0,0,100,100,TRUE);
Denn beide können einen Null-Zeiger liefern.
Um áuf einen NULL-Zeiger zu prüfen wäre mindestens dies notwendig:
CTabCtrl *pTab = (CTabCtrl*)GetDlgItem(IDC_TAB1) ASSERT ( pTab != NULL ); // wenns hier im Debug knallt, ist das Control nicht da! pTab->MoveWindow(0,0,100,100,TRUE);
Also, ohne mehr Quelltext geht hier gar nichts.
Gruss
EB