Probleme mit WM_NCPAINT und Beispielcode aus der MSDN.



  • Hallo zusammen,

    Ich habe hier folgenden Code in mein Programm eingebaut:

    case WM_NCPAINT:
    {
        HDC hdc;
        hdc = GetDCEx(hwnd, (HRGN)wParam, DCX_WINDOW|DCX_INTERSECTRGN);
        if(hdc == NULL)
           MessageBeep(-1);
        // Paint into this DC
        ReleaseDC(hwnd, hdc);
    }
    break;
    

    Aber der HDC, der von GetDCEx zurückgegeben wird, ist immer NULL 😮 (Es pieept immer) !
    Habt ihr ne Idee, was da falsch ist ? - Danke schonmal 👍 .



  • *push* - Der Code ist direkt aus der MSDN kopiert - der muss doch eigentlich funktionieren, hat denn keine 'ne Idee 😞 ?



  • Probier mal :

    //hdc = GetDCEx(hwnd, (HRGN)wParam, DCX_WINDOW|DCX_INTERSECTRGN);
    hdc = GetDCEx (hwnd, (HRGN)wParam, DCX_WINDOW | DCX_INTERSECTRGN | 0x10000);
    


  • Wow! Das geht! Danke! Weiß zwar nicht warum das mit dem zusätzlichen Flag geht, aber okay.

    Weißt Du vllt auch, wie ich die 'sizing-border' eines Fensters verkleinern kann (zum Beispiel auf 2 Pixel breit) ?



  • Es gäbe da (IMHO) nur die globale Möglichkeit:
    SystemParametersInfo mit SPI_SETBORDER, aber wie gesagt, das beeinträchtigt das gesamte System 👎 .


Anmelden zum Antworten