首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

为什么小弟我的窗口指针老是传入不了非类函数里?

2012-01-16 
为什么我的窗口指针老是传入不了非类函数里?------------------------------?voidCDataImprotDlg::OnRun()

为什么我的窗口指针老是传入不了非类函数里?------------------------------?
void   CDataImprotDlg::OnRun()  
{
//   TODO:   Add   your   control   notification   handler   code
                  .........
                  .........
CWnd   *cwd;
cwd   =   this-> GetActiveWindow   ();
hRunThread   =   CreateThread   (NULL,   0,   (LPTHREAD_START_ROUTINE)&pRunThread,   cwd,   0,   &dwRunThreadID);
}

UINT   pRunThread   (LPVOID   pp)
{
      HWND   hWnd;
      CWnd*   cnd   =   (CWnd*)pp;

      hWnd   =   cnd->   GetSafeHwnd();
      CListBox   *   aa;
      aa=   (CListBox   *)GetDlgItem   (hWnd,       IDC_LISTINFO);
      aa-> AddString   ( "rrrrr ");         //郁闷了.老是报错.
}

_________________________________________________________________________
到底怎么把当前窗口的指针传到pRunThread,也是就是CDataImprotDlg的指针.
或许传句柄更方面..    
pRunThread   里面GetDlgItem   有两个参数.非要传入一个句柄.

[解决办法]
不要直接操作其它类里的变量,弄个函数
[解决办法]
hRunThread = CreateThread (NULL, 0, (LPTHREAD_START_ROUTINE)&pRunThread, this-> m_hWnd, 0, &dwRunThreadID);
[解决办法]
完全同意ouyh12345(五岭散人)

这是最保障的做法,安全不容易出问题
[解决办法]
hRunThread = CreateThread (NULL, 0, (LPTHREAD_START_ROUTINE)&pRunThread, cwd, 0, &dwRunThreadID);
不要传MFC对象指针给一线程函数,不安全,传句柄,改成:
hRunThread = CreateThread (NULL, 0, (LPTHREAD_START_ROUTINE)&pRunThread, GetSafeHwnd(), 0, &dwRunThreadID);

热点排行