mfc给变量赋值之后调用UpdateData还是没显示
这个函数在一个线程中执行,变量sData1已经和控件IDC_EDIT1想关联了。。我在给sData1赋值之后马上调用了UpdateData为什么还是不会显示出数据呢DWO...
这个函数在一个线程中执行,变量sData1已经和控件IDC_EDIT1想关联了。。
我在给sData1赋值之后马上调用了UpdateData为什么还是不会显示出数据呢
DWORD WINAPI recv_udp_name(LPVOID lpParameter)
{
WORD wVersionRequested;
WSADATA wsaData;
int err;
int i;
wVersionRequested = MAKEWORD( 1, 1 );
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
return 0;
}
if ( LOBYTE( wsaData.wVersion ) != 1 ||
HIBYTE( wsaData.wVersion ) != 1 ) {
WSACleanup( );
return 0;
}
SOCKET s=socket(AF_INET,SOCK_DGRAM,0);//创建套接字
SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);//存储IP地址,使用in_addr这个数据结构
addrSrv.sin_family=AF_INET; //sin_family指代协议族,在socket编程中只能是AF_INET
addrSrv.sin_port=htons(8080); //存储端口号
bind(s,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));
SOCKADDR_IN addrClient;
int len=sizeof(SOCKADDR);
char recvBuf[256];
while(1)
{
memset(recvBuf, 0, sizeof(recvBuf));
i = recvfrom(s,recvBuf,100,0,(SOCKADDR*)&addrClient,&len);
sData1=recvBuf;//////////////////将收到的数据赋值给sData1/////
BOOL UpdateData(FALSE);
afxDump<<"\n~~~~~~~~~654321~~~~~~~~~"<<sData1;
}
closesocket(s);
WSACleanup();
return 0;
}
程序也不报什么错误。。。。郁闷了 展开
我在给sData1赋值之后马上调用了UpdateData为什么还是不会显示出数据呢
DWORD WINAPI recv_udp_name(LPVOID lpParameter)
{
WORD wVersionRequested;
WSADATA wsaData;
int err;
int i;
wVersionRequested = MAKEWORD( 1, 1 );
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
return 0;
}
if ( LOBYTE( wsaData.wVersion ) != 1 ||
HIBYTE( wsaData.wVersion ) != 1 ) {
WSACleanup( );
return 0;
}
SOCKET s=socket(AF_INET,SOCK_DGRAM,0);//创建套接字
SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);//存储IP地址,使用in_addr这个数据结构
addrSrv.sin_family=AF_INET; //sin_family指代协议族,在socket编程中只能是AF_INET
addrSrv.sin_port=htons(8080); //存储端口号
bind(s,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));
SOCKADDR_IN addrClient;
int len=sizeof(SOCKADDR);
char recvBuf[256];
while(1)
{
memset(recvBuf, 0, sizeof(recvBuf));
i = recvfrom(s,recvBuf,100,0,(SOCKADDR*)&addrClient,&len);
sData1=recvBuf;//////////////////将收到的数据赋值给sData1/////
BOOL UpdateData(FALSE);
afxDump<<"\n~~~~~~~~~654321~~~~~~~~~"<<sData1;
}
closesocket(s);
WSACleanup();
return 0;
}
程序也不报什么错误。。。。郁闷了 展开
展开全部
楼上正解。其次,BOOL UpdateData(FALSE);
这句代码是声明一个函数而不是调用一个函数。UpdateData(FALSE);才是调用,BOOL UpdateData(FALSE);是CWnd类的,你的线程函数是全局函数,你看会不会出错。
这句代码是声明一个函数而不是调用一个函数。UpdateData(FALSE);才是调用,BOOL UpdateData(FALSE);是CWnd类的,你的线程函数是全局函数,你看会不会出错。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
UpdateData()是对应于一个窗口的,你这里有点像是在A窗口更新了数据,在B窗口UpdateData().
另外程序中的UpdateData()有点像定义一个函数。实际在调用的时候,不需要在函数前面加类型。
另外程序中的UpdateData()有点像定义一个函数。实际在调用的时候,不需要在函数前面加类型。
追问
请问我要怎么改呢。。。真是搞不清楚mfc的结构,这两天也在看书,越看越迷糊了。。。。。。。按你说的我应该在什么地方去UpdateData
追答
CWnd *pcw = GetDlgItem(IDC_EDIT1);
pcw->UpdateData(FALSE);
另外,你这里的数据关联或许有问题。修改控件的内容可以调用如下方法:
SetDlgItemText(IDC_EDIT1, sData1);
注意,这里的sData1最好是LPCTSTR的数据,如果你用的是VC6,这个转换编译器会自动转换;如果采用的是VS2003以上版本的编译器,char *与LPCTSTR之间不能强制转换
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询