2010-12-04 60 views
0

請考慮以下部分代碼。我的問題是滾動條不與矩形對齊。我得到一個矩形和一個滾動條,兩者之間有很大的差距。我想我可以嘗試一下,找出「偏移量」是什麼,只是把它放進去,但我想明白爲什麼滾動條顯然不符合座標。CreateWindow滾動條對齊問題

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, 
      NULL, 
      hInstance, 
      NULL); 

爲了糾正差距,我會使用調用CreateWindow的調用如下

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); 

但爲什麼VTRect->好吧,我不明白 - 100要求,但滾動向上靠在矩形的右側。請注意,我確實嘗試了VTRect-> right - iHThumb,但我仍然有一個缺口,儘管它較小。紅色矩形和滾動條以及兩者之間的間隙的

屏幕截圖:

alt text

回答

0

VTRect->左,VTRect->頂部,VTRect->右 - 100,VTRect->底iVThumb

傳遞給CreateWindow的()具有這些值的參數是X,Y,nWidthnHeight參數。寬度和高度,而不是右和底。修復:

VTRect->左,VTRect->頂,VTRect->右鍵 - VTRect->左,VTRect->底部 - VTRect->頂