AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Non-Vcl -> Bmp SS_NOTIFY dilemma

Non-Vcl -> Bmp SS_NOTIFY dilemma

Ein Thema von KodeZwerg · begonnen am 19. Aug 2020 · letzter Beitrag vom 21. Aug 2020
 
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#1

Non-Vcl -> Bmp SS_NOTIFY dilemma

  Alt 19. Aug 2020, 07:47
Guten morgen,
ich habe ein Problem wo ich noch nicht so richtig mit umzugehen weiß.

Ich erstelle ein Bild als Static-Control, weise dem ein OnClick (SS_NOTIFY) zu, aber dann funktioniert mein MouseOver-Event nicht mehr.
Schalte ich OnClick aus, funktioniert MouseOver wieder.
Ich hätte gerne beides auf einmal, was mache ich falsch?

Hier relevante Code teile:
Delphi-Quellcode:
// variablen:
const
  IDC_BMP = 1000;
var
  hWndBmp: HWND;




//hier im Message handler WndProc...

  WM_CREATE:
    begin
      hWndBmp := CreateWindowEx(
                      0,
                      'STATIC', 'VOID',
                      WS_VISIBLE or WS_CHILD
                      SS_NOTIFY or SS_BITMAP,
                      10, 5, 32, 32,
                      hWnd, IDC_BMP, hInstance, nil);
    end;

  WM_COMMAND:
    begin
      if HiWord(wParam) = STN_CLICKED then
        case LoWord(wParam) of
            IDC_BMP:
              begin
                // mach was
              end;
        end;
    end;

  WM_MOUSEMOVE:
    begin
      // get current coordinates
      pt.x := Word(lParam);
      pt.y := Word(lParam shr 16);

      // switch cursor back to normal if outside of image
      if ((ChildWindowFromPoint(hWnd, pt) <> hWndBmp)
          and (GetCursor <> Cardinal(IDC_ARROW))) then
        SetCursor(LoadCursor(0, IDC_ARROW));

      // switch cursor if over image
      if ((ChildWindowFromPoint(hWnd, pt) = hWndBmp)
          and (GetCursor <> Cardinal(IDC_HAND))) then
        SetCursor(LoadCursor(0, IDC_HAND));
    end;


  WM_LBUTTONDOWN:
    begin
      (*
        dirty workaround wenn SS_NOTIFY nicht gesetzt wurde.

        hier code von mouseover reinkopieren
        hier code von onclick reinkopieren
      *)
 
    end;
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
 

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:17 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz