PictureControl WM_PAINT
-
Was ist WTL. Hast du Beispiele dazu?
thx, phreaking
-
-
Hmm.. ich weiß nicht, wo bzw. wie ich anfangen soll. Ich denke, in MFC ist es, zumindest für mich einfacher, denn da kenne ich mich zumindest schon einigermaßen aus... aber ohne fremde Hilfe schaffe ich das mit Subclassing nicht...
lg, phreaking
-
Was ist SubClassing eigentlich?
lg, phreaking
-
Wenn ich eine eigene Klasse für das Picture-Control erstelle, dann wird der Hintergrund grau (obwohl ich weiß ausgewählt habe). Wie kann ich das umgehen?
lg, phreaking
-
Wenn du über google gesucht hättest und Artikel darüber gelesen hättest, dann wüstest du was es ist.
-
Dann poste doch bitte nur einen brauchbaren Link.. oder lass bitte deine Kommentare
-
soll ich jetzt alle links von google hier verlinken? sind nämlich alle ziemlich brauchbar.
-
Danke. Aber das Problem ist, ich habe ein Fenster, welches ein Static (IDC_TEST) enthält. Die Messages möchte ich nun aber an das Fenster haben. Abgesehen davon, das mir nicht klar ist, wie das MessageProc des Fensters unterscheidet, ob denn nun eine Nachricht für das Fenster selbst oder für das Static eingeht, bekomme ich bei folgendem Code einen Fehler:
test.SubclassWindow(*this);
Wenn der Code (innerhalb von InitDialog des Fensters) ausgeführt wird, dann erhalte ich ein Assert (ein hwnd ist bereits initialisiert)...
Was habe ich falsch gemacht?lg, phreaking
PS: Bitte jetzt echte Antworten, und nicht suchen oder ein Buch lesen ...
-
Du willst also einfach nur informiert werden, wenn an dein PictureControl eine WM_PAINT-Nachricht geschickt wird? Oder willst du auch verhindern, dass sie ankommt? Ich würde mir mal die Funktion PreTranslateMessage angucken ...
-
Wenn das PictureControl diese Nachricht geschickt bekommt, möchte ich auf dieses Element etwas malen. Wie muss ich PreTranslateMessage denn nun einsetzen?
lg, phreaking
-
An PreTranslateMessage bekommst du ja nen Zeuger auf ne MSG-Struct übergeben.
Da einfach die Parameter hwnd und message auswerten. Wenn die message == WM_PAINT und hwnd == m_PicCtrl.m_hWnd, dann ists die richtige ...
sollte so funktionieren, aber ohne garantie.
-
Und wo muss ich diese Funktion aufrufen... und was muss ich ausführen, wenn Message/Hwnd einen anderen Wert haben?
thx, phreaking
-
Die Funktion kannst du über dne Klassenassistenten einfügen. einfahc ne ifabfrage reinmachen und dann true zurückgeben (in der if-abfrage) und ansonsten das return verwenden, das schon in der funktion steht.
-
Danke, das hilft mir schon ein bisschen weiter. Die Message wird jetzt richtig abgefangen, aber wenn ich etwas zeichne, dann wird das nur für kurz Zeit angezeigt, denn danach wird das Dialog-Item ja neu gezeichnet...
lg, phreaking
-
Für solche Sachen leitet man sich - wie oben schon gesagt - eine eigene klasse ab ...
-
Das mit dem PreTranslaten ist aber nicht in diesem Fall fehl am Platze. Das wird eher für andere Sachen eingesetzt. Solltest lieber subclassing nutzen.
-
Original erstellt von dEUs:
Für solche Sachen leitet man sich - wie oben schon gesagt - eine eigene klasse ab ...Ja, aber wie greife ich denn nun von meiner eigenen Klasse, die ein Element des Hauptfensters darstellt, auf Elemente des Hauptfensters zu?
Bitte ein kurzes Beispiel....lg, phreaking
-
mit AfxGetMainWnd bekommst du nen Zeiger auf dein Hauptfenster ...
-
Danke für euer aller Hilfe, das Problem ist nun endlich gelöst...
lg, phreaking
[ Dieser Beitrag wurde am 18.10.2002 um 22:17 Uhr von phreaking editiert. ]