2015-05-09 2 views
1

Я ищу и тестирую уже много времени на эту проблему, и я все еще не могу получить PBM_SETMARQUEE для вертикальных рабочих панелей. Он всегда показывает мне полностью зеленую панель обработки, но не движется зеленый «прямоугольник» снизу вверх. Как-то, если я удаляю стиль PBS_VERTICAL, тогда я получаю горизонтальную панель обработки с движущимся зеленым «прямоугольником» слева направо. Таким образом, PBM_SETMARQUEE работает для горизонтальной панели процессов, но не для вертикали. Что-то, что я также выяснил, это если я отключу стиль windowtheme для processbar PBM_SETMARQUEE вдруг работает O_o !? (но без цвета windowstheme и анимации) Здесь есть необходимая часть кода (с использованием C++ и WinAPI).PBM_SETMARQUEE не работает для вертикальных панелей процессов?

//includes especially for the processbar 
#include <CommCtrl.h> 
#include <Uxtheme.h> 
#pragma comment(lib, "comctl32.lib") 
#pragma comment(lib, "UxTheme.lib") 
#pragma comment(linker,"\"/manifestdependency:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"") 

//code how i creat the processbar 
INITCOMMONCONTROLSEX initCtrlEx; 
initCtrlEx.dwSize = sizeof(INITCOMMONCONTROLSEX); 
initCtrlEx.dwICC = ICC_PROGRESS_CLASS; 
if (InitCommonControlsEx(&initCtrlEx)){  
    hProcessBar = CreateWindowExA(
     NULL, 
     PROGRESS_CLASSA, 
     "", 
     WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | PBS_VERTICAL,           
     10, 10, 
     20, 250, 
     hParent, 
     (HMENU)id, 
     hProgrammInstance, 
     NULL 
     ); 
} 

//SetWindowTheme(hProcessBar, L"", L""); If i use this code then the PBM_SETMARQUEE for vertical processbar works.. but cause i want the windowTheme style its not a good solution for me 
DWORD style = GetWindowLongPtrA(hProcessBar, GWL_STYLE); 
SetWindowLongPtrA(hProcessBar, GWL_STYLE, style | PBS_MARQUEE); //enable needed style for the PBM_SETMARQUEE message. (i also tested it doing it directly in CreateWindowExA()) 
SendMessageA(hProcessBar, PBM_SETMARQUEE, TRUE, (LPARAM)30);//enable marquee mode 

ответ

1

Там не намного больше, чтобы сказать Microsoft не реализовали вертикальные тематические полосы шага. Предположительно они чувствовали, что спрос на них не был.

+0

Thx для вашего ответа David XD и как всегда ... некоторые pro хобби, кажется, заключается в том, чтобы всегда обсуждать вопросы новичков ^^ ... они никогда не оставляют комментариев, почему они занижали вопрос ^^ так, как я могу узнать, что я делаю неправильно, если никто не скажет это O_o !? ... и наверняка, прежде чем задавать здесь вопрос, я делаю какое-то исследование ^^ или как я знаю, например. что SetWindowTheme (hProcessBar, L "", L ""); может решить его (но не так, как мне нужно)? – Bluefire