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