1

ウィンドウの周囲に境界線を描画しようとしていますが、コードが機能していないようです。何も描きません。何が問題なのか誰か教えてもらえますか?

LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
    HDC hDC = 0;
    PAINTSTRUCT ps;
    ZeroMemory(&ps, sizeof(PAINTSTRUCT));
    HPEN hp353535 = 0;
    RECT rWnd;
    GetWindowRect(hWnd, &rWnd);

    switch(msg)
    {
        case WM_PAINT:
            // I could/should put GetWindowRect() here..
            hDC = BeginPaint(hWnd, &ps);
            hp353535 = CreatePen(PS_SOLID, 7, RGB(247, 247, 247));
            SelectObject(hDC, hp353535);
            MoveToEx(hDC, rWnd.left, rWnd.top, 0);
            LineTo(hDC, rWnd.right, rWnd.top);
            LineTo(hDC, rWnd.right, rWnd.bottom);
            LineTo(hDC, rWnd.left, rWnd.bottom);
            LineTo(hDC, rWnd.left, rWnd.top);
            DeleteObject(hp353535);
            EndPaint(hWnd, &ps);
            break;

        // More cases
    }
}
4

1 に答える 1

4

GetWindowRect() は画面座標を返しますが、描画はクライアント座標を使用します (つまり、ウィンドウの左上隅を基準にします)。GetClientRect() を使用すると役立つと思います。

于 2013-01-26T13:33:07.367 に答える