c++ 线程问题(用的是vs2010,win32程序)
//以下传递给线程函数的参数
typedef struct tagMYDATA
{
HWND hWnd;
HWND hRich;
char szName[256];
}MYDATA,* LPMYDATA;
//以下是线程
unsigned int _stdcall MyScan::fnPortScan(LPVOID lpVoid)
{
LPMYOPTION myOption;
myOption = (LPMYOPTION)lpVoid;
TCHAR szHwnd[256];
wsprintf(szHwnd,TEXT("%d"),(HWND)myOption->hWnd); //我想得到这个句柄,在这里会和传来的参数不一样。
MessageBox(NULL,szHwnd,TEXT("句柄"),NULL); //例如:我在fnThread(HWND hWnd)函数中传个
//窗口句柄, 在这里值就会不一样
return 0;
}
//以下是调用线程
void fnThread(HWND hWnd)
{
HANDLE hThread; //线程句柄
DWORD m_ThreadId; //线程ID
LPMYDATA myData;
myOption->hWnd =hWnd;
hThread = (HANDLE)_beginthreadex(NULL,0,(unsigned int(_stdcall *)(void *))fnPortScan,(LPVOID)myData,
0,(unsigned int *)&m_ThreadId);
if(hThread)
CloseHandle(hThread);
}