Probleme mit PropertySheet
-
Folgende Ausgangslage:
Ich habe eine Dialgofeldanwendung. In dieser will ich mehrere Tab-Reiter haben. Diese sollen jedoch nicht den ganzen Dialog bedecken, sondern nur einen Teil. Daher habe ich mir eine neue Dialog-Klasse angelegt, welche von CPropertySheet erbt. Der Hauptdialog macht nun noch in der OnInitDialog foglendes:
m_propDiag.Create(this,WS_CHILD | WS_VISIBLE );Der kleinere Dialog ist nun im großen fest enthalten, soweit so gut. Nun habe ich 2 Seiten, also 2 Tabs und folgendes passiert. Ich wechsel auf den zweiten Tab, bringe ein anderes Programm in den Vordergrund und will nun mein Programm wieder vorne haben -> Programm hängt sich auf. Also es kommt nicht wieder nach vorne, sondern hängt halt einfach. Die Dialoge enthalten jetzt bisher nicht wirklich viel. Ein paar Steuerelemente und so.
Hat jemand eine Idee, woran das liegen könnte???
-
HM ok also das ist reproduzierbar.
Sobald ein Edit-Feld in dem Dialog ist, welcher als Tab fungiert.
Nutzt man den PropertyDialog als Hauptdialog mit DoModal geht alles, aber als Kinddialog mit Create entsteht der oben beschriebene Fehler. Weiß jemand, wie ich das wegkriege?
-
Ich hab sowas auch mal gemacht (so 2000 rum noch mit VC6). Ich hab nach dem Create() noch
sheet->ModifyStyle(0, WS_TABSTOP);
sheet->ModifyStyleEx(0, WS_EX_CONTROLPARENT);
parent->ModifyStyleEx(0, WS_EX_CONTROLPARENT);drin, frag mich aber bei den beiden Letzteren bitte nicht mehr warum. Aber vielleicht hilft Dir das ja weiter. Ansonsten wirst Du wohl auf den MFC-Großmeister M-Ri warten müssen.
-
Na gut dann ernenn ich dich hiermit zum Sheet-Meister

Das funzt. DANKE!
-
Pellaeon schrieb:
Na gut dann ernenn ich dich hiermit zum Sheet-Meister

krieg ich da auch ne Urkunde

Das funzt. DANKE!
Bitte, gerne geschehen!
-
jencas schrieb:
Ich hab sowas auch mal gemacht (so 2000 rum noch mit VC6). Ich hab nach dem Create() noch
sheet->ModifyStyle(0, WS_TABSTOP);
sheet->ModifyStyleEx(0, WS_EX_CONTROLPARENT);
parent->ModifyStyleEx(0, WS_EX_CONTROLPARENT);drin, frag mich aber bei den beiden Letzteren bitte nicht mehr warum. Aber vielleicht hilft Dir das ja weiter. Ansonsten wirst Du wohl auf den MFC-Großmeister M-Ri warten müssen.
Hier die Erklärung:
After creating the property sheet, this function changes the style of the property sheet by adding the WS_EX_CONTROLPARENT flag. This is needed by the dialog so that it can avoid an endless loop when searching for the next tab item. The WS_EX_CONTROLPARENT flag for the property sheet tells the dialog that it should look at the children controls of the property sheet as well when searching for the control with focus. We also set a tab stop to the property sheet so that the user can tab to the property sheet.
Hmmm, nun kriege ich aber die Ehrennadel?

Martin
-
Sollst du bekommen

Danke für die Erklärung. Das sind echt so Sachen, wenn man nicht weiß, wo man ansetzt, sucht man ewig nach der Fehlerquelle.MfG Pellaeon
-
Vieleicht in die FAQ?
-
Genau, den Hinweis hab ich damals und heute (dank des bereitgestellten Suchtextes ;)) hier gefunden: http://www.codeguru.com/cpp/controls/propertysheet/print.php/c583