代码摘自请教xsc2001大大的一个测试函数,在自己程序里折腾半天还是搞不下,开新帖请教各位~想在IDC_STATIC1的StaticText控件内把CString的文字内容从右边飘到左边,停靠下来。。编译提示:GetDlgItem(IDC_STATIC1)->SetWindowText(strShowText);这行
error C2660: “GetDlgItem”: 函数不接受 1 个参数
error C2227: “->SetWindowTextW”的左边必须指向类/结构/联合/泛型类型 请教各位如何解决,谢谢解答!!! void RunHorseLight(CString strText, int nSpeed)
{
for(int i = 1; i < strText.GetLength(); i++)
{
CString strOneWord = strText.Mid(i - 1, 1);//注意这里只是对英文,如果是中文还得另处理,因为中文是两个字节
CString strShowText;
if(i > 1) strShowText = strText.Left(i - 1);
CString strBlankSpace = L"";
for(int j = 0;j < nSpeed - i; j++)
strBlankSpace += " ";//用空格补上能看到从右向左跑马灯的效果
for(int j = nSpeed; j > 0;j--)
{
CString strMid = strBlankSpace.Left(j);
strShowText = strShowText + strMid + strOneWord;
GetDlgItem(IDC_STATIC1)->SetWindowText(strShowText);
Sleep(600);
}
}
}
error C2660: “GetDlgItem”: 函数不接受 1 个参数
error C2227: “->SetWindowTextW”的左边必须指向类/结构/联合/泛型类型 请教各位如何解决,谢谢解答!!! void RunHorseLight(CString strText, int nSpeed)
{
for(int i = 1; i < strText.GetLength(); i++)
{
CString strOneWord = strText.Mid(i - 1, 1);//注意这里只是对英文,如果是中文还得另处理,因为中文是两个字节
CString strShowText;
if(i > 1) strShowText = strText.Left(i - 1);
CString strBlankSpace = L"";
for(int j = 0;j < nSpeed - i; j++)
strBlankSpace += " ";//用空格补上能看到从右向左跑马灯的效果
for(int j = nSpeed; j > 0;j--)
{
CString strMid = strBlankSpace.Left(j);
strShowText = strShowText + strMid + strOneWord;
GetDlgItem(IDC_STATIC1)->SetWindowText(strShowText);
Sleep(600);
}
}
}
CYourDlg *p = (CYourDlg *)lParam;
p->GetDlgItem(IDC_STATIC1)->SetWindowText(strShowText);或者是在OnTimer里面处理就可以了.
GetDlgItem有两个版本
1.win32 api
这个版本需要传入窗口的句柄,即GetDlgItem(hDlg, ID_XXX),返回值也是窗口句柄。2.cwnd
这个版本可在cwnd的所有派生类及派生类的派生类中直接调用。若你的这段函数处在你自己的派生类,那你的函数定义是有问题的。
若你的函数不是出于一个类,那你的调用是有问题的。
void RunHorseLight(CString strText, int nSpeed)改为
void Cxxx::RunHorseLight(CString strText, int nSpeed)Cxxx是你的函数所在的类
GetDlgItem用的是win32 api 版本void Cxxx::RunHorseLight(CString strText, int nSpeed)
GetDlgItem用的是cwnd 版本