0
我想爲我的項目創建一個不錯的用戶界面。我創建一個窗口,然後創建一個子窗口,這是接口函數的主窗口。所以...我有這兩個窗口,在子窗口中我想添加一個滾動條。我創建了一個滾動條類:WinApi滾動條處理
class Scrollbar
{
public:
HINSTANCE hInstance;
HWND hwnd;
SCROLLINFO si;
Scrollbar(HWND Scroll_hwnd, HINSTANCE hInstance, HWND hwnd, SCROLLINFO si, RECT Child_rect, int iHThumb);
SCROLLINFO Initialise(SCROLLINFO si, RECT rect);
~Scrollbar();
};
在構造函數中,我basicaly有一個CreateWindow函數:
Scroll_hwnd = CreateWindow(
L"SCROLLBAR",
(LPCWSTR)NULL,
WS_CHILD | WS_VISIBLE | SBS_HORZ | SBS_BOTTOMALIGN,
Child_rect.left,Child_rect.top,Child_rect.right-iHThumb,Child_rect.bottom,
hwnd,
NULL,
hInstance,
NULL);
SetScrollRange(Scroll_hwnd, SB_CTL, 0, 10, FALSE);
所以滾動被創建,但現在我想以某種方式處理它,所以我這樣做這在我的子窗口回調FUNC:
case WM_HSCROLL:
{
GetScrollInfo(hwnd, SB_VERT, &si);
int position = si.nPos;
switch(LOWORD(wParam))
{
case SB_LINELEFT:
if(position > 0)
{
position--;
}
break;
case SB_LINERIGHT:
if(position < 10)
{
position++;
}
break;
ZeroMemory(& si, sizeof(si));
si.cbSize = sizeof(SCROLLINFO);
si.fMask = SIF_POS;
si.nPos = position;
SetScrollInfo(hwnd, SB_VERT, & si, TRUE);
}
說不上來,但在我看來,一切都很好...位置變量被遞增得很好,但滾動仍處於起始位置。任何想法什麼是錯的? 此外,當我嘗試做這樣的事情:
Scrollbar *s1;
s1 = &scroll;
(...)
GetScrollInfo(hwnd, SB_VERT, s1->si);
我得到一個轉換錯誤(SCROLLINFO TO LPSCROLLINFO)
不知道如何解決這個問題?
感謝的人!這有幫助! :)我失去了2小時尋找錯誤並更改我的代碼,答案非常簡單。該死的:/再一次,謝謝! – L3M0L