Unsichtbare Rechtecke die Clickbar sind erzeugen



  • Hallo,

    wie kann ich in einem Resource Dialog ein Unsichbares Rechteck erzeugen, bei dem ich abfangen kann, wenn ergeklickt wurde?

    Um genau zu sein habe ich ein Bild und möchte nun, dass wen auf bestimmte Teile des Bildes geklickt wird ein bestimmter Befehl ausgeführt wird.

    Gruß
    Florian



  • GUI Lib?

    BR
    evilissimo



  • Was meinst Du genau mit GUI Lib?
    Also als IDE benutze ich Relo, Compiler gcc, und für Dialoge eben Relo, der dann eine Resource Datei aus meinen Dialogen anfertigt...

    Gruß
    Florian

    EDIT: Es würde mir im Prinzip auch reichen ein klick auf ein Label dass ich unsichtbar gemacht habe (dafür hab ich schon einen Code) abzufangen... aber per

    case WM_COMMAND:
          {
          	switch (LOWORD(wParam))
          	{
              case IDDESLABELS:
              ...
    

    kann ich es nicht abfangen. Gibt es da bei Labels einen Trick einen Klick trozdem abzufangen?



  • So wie es aussieht verwendest du wohl die WinAPI als GUI Lib. 🙂
    Und deswegen werde ich das auch gleich in das WinAPI Forum verschieben.

    Möglicher Lösungsansatz wäre das du beispielsweise auf WM_LBUTTONUP reagierst und dann die x,y Koordinaten die du im LPARAM parameter bekommst auswertest.

    ...
    case WM_LBUTTONUP:
    {
        short x = LOWORD(lparam);
        short y = HIWORD(lparam);
    
        if( x > 100 && x < 200 && y > 100 && y < 200 )
           MessageBox(hwnd,"Du hast mich angeklickt","Mitteilung",MB_OK|MB_ICONINFORMATION);
    }
    break;
    ...
    

    BR
    evilissimo



  • Dieser Thread wurde von Moderator/in evilissimo aus dem Forum Andere GUIs - Qt, GTK+, wxWidgets in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Danke!
    Allerdings geben die Werte x und y bei mir immer 0.

    Gruß
    Florian

    EDIT: Hab es geschafft. Hab einfach ein

    static POINT    point;
    ...
    case WM_LBUTTONDOWN:
    {
    point.x  = LOWORD(lParam);
    point.y  = HIWORD(lParam);
    return 0;
    }break;
    

    ergänzt und frage nun eben die Koordinaten von point.x bei WM_LBUTTONUP ab.
    Danke für die Hilfe!



  • Eigentlich müsstest du wohl eher WM_LBUTTONDOWN nehmen (machst du ja jetzt auch), dann Pos merken + Maus capturen und dann bei WM_LBUTTONUP checken, ob es immer noch im Rechteck ist. Falls du dort die Position (aus welchen Gründen auch immer) nicht bekommst, müsstest du in WM_MOUSEMOVE die aktuelle Position zwischenspeichern, damit du sie dann bei WM_LBUTTONUP abfragen kannst. Wobei es über ein eigenes Control wohl eleganter ist (probier es mal mit CreateWindowEx und WS_EX_TRANSPARENT)...


Anmelden zum Antworten