部分代码如下:
class CTTDlg : public CDialog
{
  ...
private:
  CWinThread *m_pThread;
  void OnUpdateControl(WPARAM wParam, LPARAM lParam);
  static UINT ThreadFunc(LPVOID pvParam);
  ...
}
BOOL CTTDlg::OnInitDialog() 
{
   // Set object handle for thread
   HWND *phObjectHandle = new HWND;
  *phObjectHandle = GetSafeHwnd();
  // Create thread
  m_pThread = AfxBeginThread(ThreadFunc, phObjectHandle);
  return TRUE;  // return TRUE unless you set the focus to a control
}
UINT CTTDlg::ThreadFunc(LPVOID pvParam)
{
   HWND *phObjectHandle = static_cast<HWND *>(pvParam);
   for(;;)
   {
       ::PostMessage(*phObjectHandle, WM_UPDATE_CONTROL, 0, 0);
       ::Sleep(1000);
    }
    // Release memory
    delete phObjectHandle;    
    return 0;
}
void CTTDlg::OnUpdateControl(WPARAM wParam, LPARAM lParam)
{
    CString    strText;
    strText.Format("TEST:%d秒", ++m_dwCount);
    GetDlgItem(IDC_THREAD_TEXT)->SetWindowText(strText);
}
上述对话框在其他程序中引用时如果作为模式对话框将阻塞在DoModal()函数处,故采用无模式对话框,但调用后IDC_THREAD_TEXT控件并无显示。
pTT = new CTTDlg;
pTT.Create(IDD_TTDLG);
pTT->CenterWindow();
pTT->ShowWindow(SW_SHOW);
pTT->UpdateWindow();