Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

WndProc für eine Art von Steuerelement ändern

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Windows-spezifische Fragen
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Cherry



Anmeldungsdatum: 20.06.2007
Beiträge: 249

BeitragVerfasst am: 21.02.2009, 11:46    Titel: WndProc für eine Art von Steuerelement ändern Antworten mit Zitat

Hallo!

Ich möchte den WndProc von einer Art von Steuerelement für mein gesamtes Programm ändern, so dass z.B. alle Buttons fortan meine eigene Funktion nutzen. Wie geht das? Mit GetClassInfo und dann neu registrieren krieg ich nen Fehler, wenn ich "BUTTON" als Name nutze.

mfG Cherry
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 21.02.2009, 12:38    Titel: Antworten mit Zitat

Wie das geht?
Von Hand, sowas wie eine Default overload window procedure gibt es nicht zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1839
Wohnort: [JN58JR]

BeitragVerfasst am: 21.02.2009, 14:34    Titel: Antworten mit Zitat

Dazu musst du erstmal ne function als callback definieren. anschliessend musst du per setwindowlong (wenn ich micht nicht täusche), oder wars per sethook oder so ... (lange nimmer unter win gecodet), deine funktion in die messageque eintragen, so das alle nachrichten vortan an deine funktion laufen. in deiner funktion kannst du dann per sendmessage bzw post die nachricht weiterleiten, oder die weiterleitung verhindern, sowie die events selbst auswerten.

Selbstverständlich ist es auch möglich alle ereignisse, welche von untershiedlichen clt's kommen an ein und die selbe prozedur zu schicken, da der aufbau einer windows-nachricht immer identisch ist (parametertechnisch)

Schau dich mal in der MSDN unter dem stichwort sendmessage / postmessage um. dort sind einige beispiele diesbezüglich zu finden. Alternativ bei ActiveVB.de bei den tips


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 21.02.2009, 15:19    Titel: Antworten mit Zitat

Ich glaube er wollte, dass jedes Control erstmal seine Windowprocedure bekommt zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1839
Wohnort: [JN58JR]

BeitragVerfasst am: 21.02.2009, 17:34    Titel: Antworten mit Zitat

das is damit auch möglich. Wie gesagt.... MSDN .. da stehts drin.


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Cherry



Anmeldungsdatum: 20.06.2007
Beiträge: 249

BeitragVerfasst am: 21.02.2009, 20:59    Titel: Antworten mit Zitat

Vllt bin ich blind, aber könnte mir wer das Thema in der MSDN verlinken? Ich finde da alles mögliche zu Messages, aber nicht das traurig
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 21.02.2009, 21:24    Titel: Antworten mit Zitat

TPM irrt sich da wohl, weil soweit ich weiss es sowas unter Windows nicht gibt...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1839
Wohnort: [JN58JR]

BeitragVerfasst am: 21.02.2009, 22:34    Titel: Antworten mit Zitat

http://msdn.microsoft.com/en-us/library/dd458658%28VS.85%29.aspx

nein .. hab mich nicht geirrt .. aber, was ich nicht erwähnt habe, was eigentlich auch nicht gefragt wurde, ist die tatsache, das du enumerieren der ctl's von hand durchführen musst. sprich, es gibt keine funktion, die dir alle vorhandenen CTL's auflistet. du musst das über die fensterhandels machen, und dort mit getwindowlong die entsprechnden typen auslesen, um herauszufinden, welches handel ein control ist.

aber, ich kann dich nur warnen. Wenn duw irklich vor hast jedes vorhandene control zu hook'en, dann kann es leicht passieren, das dein gesamtes OS hängt, und wohl nur noch ein hardware-reset möglich is.

Alternativ kannst du auch auf PSCode.com im VB bereich rumsuchen, z.B. unter Hook .. dort findest du einige progs, die per mouseover die entsprechenden HWNDs, prozessids udn threads auslesen kann. an dem prog könntest du dich orientieren um das enumerieren zu lösen.


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 21.02.2009, 22:53    Titel: Antworten mit Zitat

Naja TPM, mal ganz ehrlich: Das was du vorgeschlagen hast ist mehr als einfach nur dirty; Eigentlich gehört sowas verboten. Zunge rausstrecken
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Cherry



Anmeldungsdatum: 20.06.2007
Beiträge: 249

BeitragVerfasst am: 22.02.2009, 13:41    Titel: Antworten mit Zitat

Ich erzähl mal, was ich damit erreichen will:

Ich will alle Buttons in meinem Programm automatisch "hooken" oder subclassen, egal (nur eben automatisch), und damit Vistas Verhalten bei BM_SETIMAGE + Text-Style imitieren (dass Icons + Text angezeigt werden), damit mein Programm unter XP auch Icons bei den Buttons hat. Ich will WM_PAINT verarbeiten und per BM_GETIMAGE das Icon auslesen und bei Bedarf anzeigen.

@MSDN-Link: Da war ich auch, aber von meiner Problematik steht da nichts.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 22.02.2009, 13:51    Titel: Antworten mit Zitat

Ich würde dir empfehlen, einfach nur ein Bild mit Text anzulegen. Da swäre Platformunabhängig.,..
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1839
Wohnort: [JN58JR]

BeitragVerfasst am: 22.02.2009, 14:21    Titel: Antworten mit Zitat

ups .... da hab cich doch glatt was fehlinterpretiert @Cherry
dachte, du wolltest alle controls ... also .. wirklich alle .. hooken ..

nur für dein prog is das allerdings ähnlich zu lösen.

wenn du nur n icon drin haben willst, kannst du doch einfach ein passendes control nutzen, das sowohl icon als auch text darstellen kann. (ich weis zwar grad nimer, wie das hies, aber ich glube mich erinnenr zu können,d as ein normaler button das auch kann.

Du könntest dich mal in setwindowlong umschauen. das is die funktion , welche auch ie style-parameter der controls festlegt. dort findet sich sicher auch ein pasender picture eintrag.


Mfg
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 22.02.2009, 17:27    Titel: Antworten mit Zitat

ich würde auch einfach einen button mit einem bild (ohne text) erstellen und in dem bild ist dann noch der text... mach ich auch so.
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Cherry



Anmeldungsdatum: 20.06.2007
Beiträge: 249

BeitragVerfasst am: 22.02.2009, 19:57    Titel: Antworten mit Zitat

Das bringt aber einige Nachteile.

Ich habe jetzt die Lösung: EnumChildWindows mit Klasse BUTTON#### und dann SubClassen. Jetzt muss ich nur noch das Icon ordentlich darstellen (an Textlänge und -ausrichtung angepasst, etc.)

EDIT: k, alles fertig! Kann geschlossen werden.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 23.02.2009, 00:08    Titel: Antworten mit Zitat

Und welche nachteile? ich färbe das bild natürlich immer erst mit der buttonfarbe und der richtigen button-textfarbe ein... Zunge rausstrecken

und hier werden keine threads geschlossen...
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Windows-spezifische Fragen Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz