Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.223.196.171] |
|
Сообщ.
#1
,
|
|
|
Есть прогрессбар со стилем PBS_MARQUEE. Включается он через PBM_SETMARQUEE 1 нормально, работает. А вот при выключении через PBM_SETMARQUEE 0 - он останавливается в текущем положении и всё. Не красиво. Надо ведь чтобы полоска пропала при остановке, а не висела в рандомном месте. MSDN читал, не нашёл как эту проблему решать правильно. PBM_SETPOS 0 0 - игнорируется…
Придумал только снятием стиля PBS_MARQUEE… Может есть более корректное решение (чтобы одним SendMessage это останавливать) ? Пока делаю так: HWND h_dlg_pbar; LONG_PTR pbar_style_0; LONG_PTR pbar_style_1; void pb_init() { h_dlg_pbar = GetDlgItem(hWnd, dlg_pbar); pbar_style_0 = GetWindowLongPtrW(h_dlg_pbar, GWL_STYLE) & ~PBS_MARQUEE; pbar_style_1 = pbar_style_0 | PBS_MARQUEE; return; } void pb_start() { SetWindowLongPtrW(h_dlg_pbar, GWL_STYLE, pbar_style_1); SendMessageW(h_dlg_pbar, PBM_SETMARQUEE, TRUE, 0); return; } void pb_stop() { SetWindowLongPtrW(h_dlg_pbar, GWL_STYLE, pbar_style_1); SendMessageW(h_dlg_pbar, PBM_SETMARQUEE, FALSE, 0); return; } |
Сообщ.
#2
,
|
|
|
Цитата f2065 @ Может есть более корректное решение Пиши работающий синтетический пример, публикуй на форуме. Народ подтянется, или не подтянется. А пока твой кусок кода остается куском, как рыба об лед! |