Eu estava tentando adicionar uma PBS_MARQUEE
barra de progresso de estilo à minha janela e ela aparece como uma barra de progresso legítima, mas quando tentei movê-la usando SendMessage
, (a animação deveria se parecer com a barra de progresso na tela de inicialização do Windows XP), ela permaneceu uma caixa cinza como sempre. Se alguém souber como funcionam as barras de progresso do WinApi C, poderia me dizer como animar uma barra de progresso de letreiro?
Aqui está o código da barra de progresso sendo criada e talvez animada usando SendMessage
:
case WM_CREATE:
INITCOMMONCONTROLSEX icc = {sizeof(INITCOMMONCONTROLSEX), ICC_PROGRESS_CLASS}
InitCommonControlsEx(&icc);
hwndPB = CreateWindowExA(0, PROGRESS_CLASS, NULL,
WS_CHILD | WS_VISIBLE | PBS_MARQUEE,
50, 200, 400, 20, hwnd, NULL,
((LPCREATESTRUCT)lParam)->hInstance, NULL);
SendMessage(hwndPB, PBM_SETMARQUEE, 1, 1000);
UpdateWindow(hwnd);
break;
Uma barra de progresso no estilo Marguee requer ComCtl32 v6, e você deve solicitar explicitamente a v6 no manifesto do seu aplicativo. Mas você declarou em um comentário que não fará isso.
Isso é mencionado na documentação do MSDN:
Estilos de controle da barra de progresso
Habilitando estilos visuais