15,980
社区成员




UINT CPDLG_Thread(LPVOID para)
{
MSG msg;
//新创建对话框
g_cpDlg = new CConnectProcessDlg();
if(g_cpDlg == NULL)
{
goto end ;
}
//初始化
if( !g_cpDlg->Create(IDD_DIALOG_CONNECT_PROCESS) )
{
goto end ;
}
g_cpDlg->InitData();
g_cpDlg->ShowWindow(SW_SHOW);
g_cpDlg->CenterWindow( (CWnd*)para );
//以下想实现:在对话框关闭前,在本线程中响应对话框的所有消息,在对话框销毁时退出线程。
while (GetMessage(&msg,NULL, NULL, NULL ))//处理自己的消息循环
{//这个地方好像不能接收到本对话框的所有消息,为什么?
if(msg.message == WM_DESTROY)
{//经测试:程序执行不到这个地方。SendMessage(WM_DESTROY,0,0)也得不到。
g_cpDlg->DestoryWindow();
break ;
}
TranslateMessage( &msg );
DispatchMessage( &msg );
}
end:
if(g_cpDlg)
{
delete g_cpDlg;
g_cpDlg = NULL ;
}
return 0;
}
LRESULT CALLBACK WinSunProc(
HWND hwnd, // handle to window
UINT uMsg, // message identifier
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
);
DWORD C*Dlgr::Thread1(LPVOID lparam)
{
WNDCLASS wndclass;
wndclass.cbClsExtra=0;
wndclass.cbWndExtra=0;
wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
wndclass.hCursor=LoadCursor(NULL,IDC_CROSS);
wndclass.hIcon=LoadIcon(NULL,IDI_WINLOGO);
wndclass.hInstance=AfxGetInstanceHandle();
wndclass.lpfnWndProc=WinSunProc;
wndclass.lpszClassName="Weixin";
wndclass.lpszMenuName=NULL;
wndclass.style=CS_HREDRAW|CS_VREDRAW;
RegisterClass(&wndclass);
HWND hwnd;
hwnd=CreateWindow("Weixin","北京维新科学技术培训中心",WS_OVERLAPPEDWINDOW,
225,160,600,400,NULL,NULL,AfxGetInstanceHandle(),NULL);
::ShowWindow(hwnd,SW_SHOWNORMAL);
::UpdateWindow(hwnd);
MSG msg;
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
AfxMessageBox("tc");
return 0;
}
LRESULT CALLBACK WinSunProc(
HWND hwnd, // handle to window
UINT uMsg, // message identifier
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
)
{
switch(uMsg)
{
case WM_CHAR:
char szChar[20];
sprintf(szChar,"char is %d",wParam);
MessageBox(hwnd,szChar,"weixin",0);
break;
case WM_PAINT:
HDC hDC;
PAINTSTRUCT ps;
hDC=BeginPaint(hwnd,&ps);
TextOut(hDC,255,50,"维新培训",strlen("维新培训"));
EndPaint(hwnd,&ps);
break;
case WM_LBUTTONDOWN:
MessageBox(hwnd,"Left Button Clicked","weixin",0);
HDC hdc1;
hdc1=GetDC(hwnd);
TextOut(hdc1,225,100,"计算机编程语言培训",strlen("计算机编程语言培训"));
ReleaseDC(hwnd,hdc1);
break;
case WM_RBUTTONDOWN:
MessageBox(hwnd,"Right Button Clicked","weixin",0);
HDC hdc2;
hdc2=GetDC(hwnd);
TextOut(hdc2,225,150,"计算机编程语言培训",strlen("计算机编程语言培训"));
ReleaseDC(hwnd,hdc2);
break;
case WM_CLOSE:
if(IDYES==MessageBox(hwnd,"是否真的结束?","weixin",MB_YESNO))
{
DestroyWindow(hwnd);
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd,uMsg,wParam,lParam);
}
return 0;
}