2010-09-07 48 views

回答

1

您需要將進度條覆蓋到列表視圖上。您需要處理列大小調整和滾動消息以正確調整大小。

或者,您可以使用DrawThemeBackground()在ListView上繪製滾動條,而無需實際控制。

PAINTSTRUCT ps; 
HDC hDC = BeginPaint(hwnd,&ps); 
RECT r; 
HTHEME theme = OpenThemeData(hwnd,L"PROGRESS"); 
SetRect(&r,10,10,100,25); 
DrawThemeBackground(theme,hDC,11, 2 ,&r,NULL); 
SetRect(&r,10,10,50,25); 
DrawThemeBackground(theme,hDC,5, 4 ,&r,NULL); 
CloseThemeData(theme); 
EndPaint(hwnd,&ps); 

這畫了一個米。對於綠色進度條,將2和4更改爲其他數字(我認爲是1和1)。

+0

DrawThemeBackground()聽起來更好。但我不知道如何使用它。有沒有你知道的任何示例代碼? – bambam 2010-09-07 01:56:41

+0

這似乎工作。這只是一個「小」問題。進度條位於列表視圖的後面。 – bambam 2010-09-07 13:53:03

+0

這是我的WM_CREATE: hProgress = CreateWindowEx(0,PROGRESS_CLASS,NULL,WS_CHILD | WS_VISIBLE,bitmapWidth-SpeakerWidth-100,161,100,20,hwnd,NULL,cs-> hInstance,NULL); 在WM_PAINt我用你的代碼,但改變了hwnd hProgress – bambam 2010-09-07 13:53:32

0

你可以看看WTL,這裏有一些很好的模板,可能會給你一些啓發。

+0

他特別指出他想要一個使用「純粹」API的解決方案。這會破壞目的。 – 2010-09-07 00:47:25

+2

@Alexander WTL只是一堆使用API​​的模板,如果他查看模板源,他可以看到它是如何完成的。 – 2010-09-07 01:43:50