首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PBS_MARQUEE Progressbar WinApi

PBS_MARQUEE Progressbar WinApi
EN

Stack Overflow用户
提问于 2011-04-15 19:32:09
回答 1查看 9.4K关注 0票数 7

我正在尝试获得一个PBS_MARQUEE类型的进度条。我可以创建进度条,但我无法管理它来使它移动。

如果发现了这个,但我不清楚我要做什么:

“由于我将进度条作为资源,而不是使用CreateWindowEx(..),所以我不得不使用SetWindowLongPtr(.)来设置此控件的PBS_MARQUEE样式.”

我是这样创建进度条的:

代码语言:javascript
复制
   hwndPB = CreateWindowEx(0, PROGRESS_CLASS,
                            (LPSTR)NULL, WS_CHILD | WS_VISIBLE | PBS_MARQUEE ,
                            rcClient.left,
                            rcClient.bottom - cyVScroll,
                            rcClient.right, cyVScroll,
                            hwnd, (HMENU) 0, NULL, NULL);

然后我试着让它发挥作用:

代码语言:javascript
复制
    SetWindowLongPtr(hwndPB,GWL_STYLE,PBS_MARQUEE);
    SendMessage(hwndPB,(UINT) PBM_SETMARQUEE,(WPARAM) 1,(LPARAM)NULL );

Thx &问候群

EN

回答 1

Stack Overflow用户

发布于 2011-04-15 20:16:55

问题是,您正在删除窗口样式。错误是行:

代码语言:javascript
复制
SetWindowLongPtr(hwndPB,GWL_STYLE,PBS_MARQUEE);

这设置了PBS_MARQUEE样式标志,但删除了所有其他标志,最明显的不是您想要的。

相反,您应该使用按位或类似的方式:

代码语言:javascript
复制
LONG_PTR style = GetWindowLongPtr(wndPB, GWL_STYLE);
SetWindowLongPtr(hwndPB, GWL_STYLE, style | PBS_MARQUEE);

我对C++类型规则几乎一无所知,所以这段代码可能会有问题,但我确信这是您的问题!

实际上,既然在调用CreateWindowEx()时设置了窗口样式,我就不明白为什么需要修改它。

最后一个预感是为什么你的进度条不起作用。您是否包括了公共控件v6的清单?只有在公共控件v6和up中才支持marquee样式。

您可以最简单地通过在stdafx.h中包含以下内容来做到这一点:

代码语言:javascript
复制
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")

我在Visual中将以下代码添加到空白Win32项目中,对此进行了测试:

代码语言:javascript
复制
HWND hwndPB = CreateWindowEx(
    0, PROGRESS_CLASS, (LPCWSTR)NULL,
    WS_CHILD | WS_VISIBLE | PBS_MARQUEE,
    0, 0, 400, 100,
    hWnd, (HMENU) 0, hInst, NULL
);
SendMessage(hwndPB,(UINT) PBM_SETMARQUEE,(WPARAM) 1,(LPARAM)NULL);
ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);

我需要添加清单务实以获得v6 comctl32,而没有该标记,就没有标记。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5681467

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档