开发者

CreateWindow Scrollbar alignment issue

Consider the following partial code. My problem is that the Scrollbar is not aligned with the rectangle. I get a rectangle and a scrollbar with a large gap between the two. I figured I could experiment and find out what the "offset" is and just put that in but I'd like to understand why the scrollbar apparently does not seem to honor the coordinates.

hCDC = GetDC(hCWnd);
bkgBrush = CreateSolidBrush( BGColor );
SetMapMode( hCDC, MM_TEXT );
SelectObject( hCDC, bkgBrush );
Rectangle(hCDC, VTRect->left, VTRect->top, VTRect->right, VTRect->bottom);

iHThumb = GetSystemMetrics(SM_CXHTHUMB);
iVThumb = GetSystemMetrics(SM_CYVTHUMB);

hInstance = NULL;

if( hWndVertScroll )
DestroyWindow( hWndVertScroll );

hWndVertScroll = CreateWindow(
            "Scrollbar",
            (LPSTR)NULL,
            WS_CHILD | WS_VISIBLE | SBS_VERT | SBS_RIGHTALIGN,
            VTRect->left,VTRect->top,VTRect->right,VTRect->bottom-iVThumb ,
            hCWnd,开发者_JS百科
            NULL,
            hInstance,
            NULL);

To correct for the gap, I'd invoke the CreateWindow call using the following:

hWndVertScroll = CreateWindow(
            "Scrollbar",
            (LPSTR)NULL,
            WS_CHILD | WS_VISIBLE | SBS_VERT | SBS_RIGHTALIGN,
            VTRect->left,VTRect->top,VTRect->right - 100 ,VTRect->bottom-iVThumb ,
            hCWnd,
            NULL,
            hInstance,
            NULL);

but I don't understand why VTRect->right - 100 is required to but the scroll bar up against the right side of the Rectangle. Note that I did try VTRect->right - iHThumb but I still have a gap albeit a smaller one.

Screen shot of the red rectangle and scrollbar and the gap between the two:

CreateWindow Scrollbar alignment issue


VTRect->left,VTRect->top,VTRect->right - 100 ,VTRect->bottom-iVThumb

The arguments you pass to CreateWindow() with these values are x, y, nWidth and nHeight. Width and height, not right and bottom. Fix:

VTRect->left, VTRect->top, VTRect->right - VTRect->left, VTRect->bottom - VTRect->top

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜