线程中SetDlgItemText的一个小问题。高手帮帮忙。
这是我的一个线程:UINT CFileTransferClientView::ThreadedGetFileFromRemoteSender(LPVOID pVoid)
{
CFileTransferClientView* pThis = (CFileTransferClientView*)pVoid;
AfxSocketInit(NULL); // make certain this is done somewhere in each thread (usually in InitInstance for main thread)
CSocket sockClient;
sockClient.Create();
sockClient.Connect( pThis->m_strTargetIP, PRE_AGREED_PORT ); // PRE_AGREED_PORT is #define'd as 8686
int dataLength, cbBytesRet, cbLeftToReceive; // used to monitor the progress of a receive operation
BYTE* recdData = NULL; // pointer to buffer for receiving data (memory is allocated after obtaining file size)
int pbInterval = 0; int curPB = 0; // progress bar variables
CFile destFile;
CFileException fe;
BOOL bFileIsOpen = FALSE;
cbLeftToReceive = sizeof( dataLength );
do
{
BYTE* bp = (BYTE*)(&dataLength) + sizeof(dataLength) - cbLeftToReceive;
cbBytesRet = sockClient.Receive( bp, cbLeftToReceive - simulate );
SetDlgItemText(IDC_EDIT1,"do");
}
while ( cbLeftToReceive > 0 );
return 0;
}
当我用到这一句SetDlgItemText(IDC_EDIT1,"do");
时,会出现
F:\FileTransferClientView.cpp(558) : error C2352: 'CWnd::SetDlgItemTextA' : illegal call of non-static member function
d:\program files\microsoft visual studio\vc98\mfc\include\afxwin.h(2156) : see declaration of 'SetDlgItemTextA'
搞不懂怎么会这样。
那我想实时修改文本框里面的内容,该怎么办呢
{
CFileTransferClientView* pThis = (CFileTransferClientView*)pVoid;
AfxSocketInit(NULL); // make certain this is done somewhere in each thread (usually in InitInstance for main thread)
CSocket sockClient;
sockClient.Create();
sockClient.Connect( pThis->m_strTargetIP, PRE_AGREED_PORT ); // PRE_AGREED_PORT is #define'd as 8686
int dataLength, cbBytesRet, cbLeftToReceive; // used to monitor the progress of a receive operation
BYTE* recdData = NULL; // pointer to buffer for receiving data (memory is allocated after obtaining file size)
int pbInterval = 0; int curPB = 0; // progress bar variables
CFile destFile;
CFileException fe;
BOOL bFileIsOpen = FALSE;
cbLeftToReceive = sizeof( dataLength );
do
{
BYTE* bp = (BYTE*)(&dataLength) + sizeof(dataLength) - cbLeftToReceive;
cbBytesRet = sockClient.Receive( bp, cbLeftToReceive - simulate );
SetDlgItemText(IDC_EDIT1,"do");
}
while ( cbLeftToReceive > 0 );
return 0;
}
当我用到这一句SetDlgItemText(IDC_EDIT1,"do");
时,会出现
F:\FileTransferClientView.cpp(558) : error C2352: 'CWnd::SetDlgItemTextA' : illegal call of non-static member function
d:\program files\microsoft visual studio\vc98\mfc\include\afxwin.h(2156) : see declaration of 'SetDlgItemTextA'
搞不懂怎么会这样。
那我想实时修改文本框里面的内容,该怎么办呢
...全文
相关推荐
MFC子线程中更新控件内容的两种办法
两者之间的主要区别在于是否有一个消息队列。##### 创建线程在MFC中,常用`AfxBeginThread()`函数来创建一个新的线程。
自己学mfc时 遇到的几个问题记录
**OpenMutex**: 这是Windows API中的一个函数,用于为已经存在的命名互斥体对象创建一个新的句柄。互斥体是一种同步对象,用于确保同一时间只有一个线程可以访问特定资源,防止数据竞争。
MFC多线程编程.pdf
以及在多线程中需要处理的同步问题,比如互斥量(Mutex)和事件(Event)的使用。
Nsis.v2.28.rar_V2 _nsis_nsis setdlgitemtext_安装 脚本
在描述中提到的“nsis_setdlgitemtext”是一个特定的命令,它允许你在安装过程中动态改变对话框中的文本内容,提供了一种与用户交互的方式。
C++更改文本
`str`通常是一个字符数组或`CString`对象,用于接收从控件读取的文本。### 二、SetDlgItemText函数:设置控件文本`SetDlgItemText`函数用于向指定的控件写入文本。


进程/线程/DLL
