Announcement

Collapse
No announcement yet.

Handle über ein Fenstermenü , Button oder der gleichen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Handle über ein Fenstermenü , Button oder der gleichen

    Hallo,
    ich möchte gerne wissen, welche Funktion, ein Handle über ein Fenstermenü , Button oder der gleichen das die Maus auf dem Desktop selektiert, zurück gibt. Die Funktion GetForegroundWindow gibt das Handle des aktiven Fensters zurück, das weis ich.

    Danke.

  • #2
    Hi Manfred

    Deine Fragestellung ist ein bißchen diffus, ich denke aber Du suchst das Fensterhandle eines gerade geöffneten Popup-Menus !?
    Nur Popup-Menus besitzen auch ein Fensterhandle, Menubars also nicht, da sie zum Non Client Bereich des Formulars gehören.
    Es gibt keine direkte API Funktion um von einem Menu-Popup-Handle das dazugehörige Fensterhandle zu bekommen.

    Mit

    <pre>
    Wnd := FindWindow(MakeIntResource(32768), nil);

    if IsWindow(Wnd) and IsWindowVisible(Wnd) and
    (GetWindowThreadProcessID(Wnd, nil) = GetCurrentThreadID) then
    RedrawWindow(Wnd, nil, 0, RDW_INVALIDATE or RDW_ERASE or RDW_UPDATENOW);
    </pre>

    findest Du aber das Fensterhandle des gerade sichtbaren Popup-Fensters. Es kann immer nur eines existieren. IsWindow() checkt ab ob es ein gültiges Handle ist, IsWindowVisible() überrüft ob es auch wirklich sichtbar ist und GetWindowThreadID() = getCurrentThreadID überprüft ob das fenster auch zum aktuellen Process/Thread gehört.
    Sollten diese Bedingungen stimmen wird es einfach neugezeichnet.
    Ich nutze obigen Code um bestimmte MenuItem-Checkmarks, die im Hintergrund verändert werden, sofort darzustellen.

    Gruß Hage

    Comment

    Working...
    X