SetMarquee函数不适用于C ++中的MultiByte字符集

问题描述 投票:-1回答:1

我在我的项目中使用多字节字符集。

当字符集为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);

你能帮我解决这个问题。

谢谢! Vijay Kumbhani

visual-c++ visual-studio-2013 visual-c++-2013
1个回答
0
投票

找到了答案。

我需要创建一个CProgressCtrl的类对象

CProgressCtrl progressCtrl;
LRESULT lResult = ::SendMessage(progressCtrl, PBM_SETMARQUEE, (WPARAM)TRUE, (LPARAM)1);

您需要在ProgressMessage函数上将Progress Ctrl对象作为HANDLE传递。

© www.soinside.com 2019 - 2024. All rights reserved.