Koordinaten von fenster(z.b buttons) auslesen



  • hi,

    ich möchte die koordinaten von einem button auslesen und die dann für andere zwecke benutzen (z.B ab diesem punkt eine linie zeichen).

    welche funktion liefert mir die koordinaten?



  • habe jetzt die funktion GetWindowRect

    nur was kommt da in dem zweiten parameter rein.
    also da muss eine pointer zu einer structur rein.

    heisst das ich muss eine struktur aufbauen wie:

    struct pos{
        int x, y; } position;
    

    is der pointer dann position? oder pos? oder was?


  • Mod

    Das ist ein Zeiger auf ein RECT!
    Da kommt nichts rein...

    Schon mal was von Google und MSDN gehört?
    GetWindowRect Doku findest Du hier:
    http://msdn.microsoft.com/en-us/library/ms633519(VS.85).aspx
    Netterweise gibt es dort einen Link auf Sample Code:
    http://msdn.microsoft.com/en-us/library/ms644996(VS.85).aspx#init_box#init_box

    Und siehe da, dort wird auch GetWindowRect verwendet...



  • dafür brauche ich die id von dem button, der getrückt ist, das das programm weiss von welchem button es die informationen holen soll, weil die buttons mit arrays gezeichnet worden sind und wenn zb der button getrückte btn[5] ist dann ist die id auch 5.

    hBtnTage[i] = CreateWindow(_T("button"), NULL , WS_CHILD | WS_VISIBLE | BS_OWNERDRAW, 
                               ve, ho, 30, 20, hWnd, (HMENU) j, hInst, NULL);
    

    mein problem sieht mann jetzt hier:

    if(pdis->itemState & ODS_FOCUS)
    {
       FrameRect(pdis->hDC, &pdis->rcItem,
       (HBRUSH) GetStockObject(GRAY_BRUSH));
    
       int h = pdis->CtlID; //so will ich die id herrausbefinden nur stimmt das so?
    
       GetWindowRect(hBtnTage[h], &rc);
    
       hdc = GetDC(hWnd);
    
       MoveToEx(hdc, rc.left, rc.bottom, NULL); //das soll dann passieren
       LineTo(hdc, 10, 10);
    
       ReleaseDC(hWnd, hdc);
    }
    

    die linien werden zwar gezocken aba nicht, von dem punkt vom button aus sondern von etwas weiter daneben. helft mir 👍


Anmelden zum Antworten