visual-c++ - SetMarquee 函数不适用于 C++ 中的多字节字符集
问题描述
我在我的项目中使用多字节字符集。
当字符集为 MultiByte 时,不允许访问 SetMarquee 函数。
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\atlmfc\include\afxcmn2.inl中提供以下函数
#if defined(UNICODE)
_AFXCMN_INLINE BOOL CProgressCtrl::SetMarquee(_In_ BOOL fMarqueeMode, _In_ int nInterval)
{ ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, PBM_SETMARQUEE, (WPARAM)fMarqueeMode, (LPARAM)nInterval); }
#endif // defined(UNICODE)
我正在尝试在我的代码上使用下面的 SendMessage 函数来实现 Marquee 样式。但它不工作。
::SendMessage(m_hWnd, PBM_SETMARQUEE, (WPARAM)TRUE, (LPARAM)1);
你能帮我解决这个问题吗?
谢谢!维杰·昆巴尼
解决方案
找到了答案。
我需要创建一个 CProgressCtrl的类对象
CProgressCtrl progressCtrl;
LRESULT lResult = ::SendMessage(progressCtrl, PBM_SETMARQUEE, (WPARAM)TRUE, (LPARAM)1);
您需要在 SendMessage 函数上将Progress Ctrl对象作为 HANDLE 传递。
推荐阅读
- vuejs2 - bootstrap-vue:b-table 如何防止可选表在某些情况下选择更改
- jquery - 如何重置由 Api 响应通过 javascript 呈现的表单的值
- linux - 获取 tmux 中其他窗格的标准输入
- jenkins - 在 Jenkins 管道中添加 SVN 结帐时出现凭据错误
- asp.net - 无法从文本框控件接收数据到 liqtosql 实体
- php - 如何获取 laravel-admin 网格值
- javascript - 如何在 IP 本身中使用额外参数更改 url?
- javascript - 如何在不刷新页面的情况下更改 Mat-Label 的内容
- vert.x - 没有 MULTI 的 ERR EXEC - Vertx-Redis 3.7.0
- java - 为什么允许 List 但 List