导航
  • 主页
  • VC综合技术
  • 互联网技术
  • MFC AppLauncher
  • .NET 技术
  • 界面
  • 进程
  • 算法
  • 硬件/系统
  • 数据库
  • VC++技术资源

关于SetWindowText的问题

CBYismit 2009-08-01 08:24:50
我在一个线程的入口函数中用了SetWindowText会报错: error C2228: left of '.SetWindowTextA' must have class/struct/union type
在其他不是入口函数中却不会出现这种问题,请问大侠们这是什么原因,有什么解决的办法。十分感谢!
...全文
81 点赞 收藏 9
写回复
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
CBYismit 2009-08-01
谢谢,我懂了
回复
强制转换一下再进行SetWindowText。
回复
CBYismit 2009-08-01
m_Count是CStatic类型的一个成员变量,我需要改变静态文本框,所以用了m_Count.setwindowtext。
回复
tempname1008 2009-08-01
这个其实只要你明白了普通成员函数都有一个隐藏的参数就好解决了
一般成员函数里可以使用this指针,就是因为这个隐藏的参数起作用
比如:
class A
{
public:
void fun();
int m_i;
}

void A::fun(A* this)//这里的this是有编译器加入的
{
m_i = 0;
当在这里访问m_i时,实际上是这样的:
this->m_i = 0;
}

而静态成员函数则没有这个隐藏的this指针
所以他不能访问非静态成员

在你使用类的成员函数做线程时,可以把对象的地址作为那个lpvoid参数
传入,在线程里就可以访问类的公有成员了

或者,像你这个例子里可以用全局函数::setwindowtext()取代
回复
gg606 2009-08-01
线程控制函数必须是全局的,或类的静态成员函数!

m_Count 是什么东东?

创建线程时,应将窗口类的句柄以参数传给线程控制函数,在线程里如要改变窗口界面,
最好以自定义消息告知窗口。
回复
CBYismit 2009-08-01
是不是吧m_Count设置成静态变量就可以了
回复
CBYismit 2009-08-01
非常感谢,一语道破真谛。但是我去掉前面的static关键字又会出现错误:
error C2664: 'CreateThread' : cannot convert parameter 3 from 'unsigned long (void *)' to 'unsigned long (__stdcall *)(void *)'
我该怎么解决啊,谢谢!
回复
tempname1008 2009-08-01
这个问题一般是静态成员函数引起的,静态函数里面不能引用非静态成员变量,或非静态成员函数。
回复
CBYismit 2009-08-01
代码如下:
DWORD WINAPI CPciTestDlg::SendProc(LPVOID lpParameter)
{

int errCount=0;
CString String;
unsigned char wr,rd,comReg,staReg;

RandNum randnum;
CPCMCIAProp SMITPCMCIA;


if(SMITPCMCIA.Init() == FALSE ) //PCMCIA Initialize
{
//MessageBox("PCMCIA INIT FALSE ", "demo", MB_OK);
}
while(TRUE)
{
SMITPCMCIA.Read(REG_COM,&comReg,1);
comReg |= 0x01;
comReg=SMITPCMCIA.Write(REG_COM,&wr,1);
if(SMITPCMCIA.Read(REG_STA,&comReg,1)&0x80)
continue;
else
{
wr = randnum.GetNum();
SMITPCMCIA.Read(REG_DATA,&wr,1);
SMITPCMCIA.Read(REG_DATA,&rd,1);
if(!(rd&wr))
errCount++;
String.Format("%d",errCount);
m_Count.SetWindowText(String);
//MySetFont(String);

}
Sleep(50);
}

}
回复
发动态
发帖子
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……