本人初学线程,下面部份代码为: 开启一个线程后向窗口发送消息,为何不响应.......
代码如下:LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_INITDIALOG :
CreateThread(NULL,0,Thread,0,0,NULL) ;
return 0 ;
case WM_COMMAND:
MessageBox(hwnd,"dfdf","dfdf",MB_OK) ;
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
DefWindowProc(hWnd, message, wParam, lParam);
return 0 ;
}
return 0;
}//THREAD FUNCTION
DWORD WINAPI Thread(LPVOID lp)
{
SendMessage(hwnd,WM_COMMAND,0L,0L) ; //该发送后不响应
return 0L ;
};说明: hwnd 为全局变量 .请高手讲解讲解啊................
代码如下:LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_INITDIALOG :
CreateThread(NULL,0,Thread,0,0,NULL) ;
return 0 ;
case WM_COMMAND:
MessageBox(hwnd,"dfdf","dfdf",MB_OK) ;
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
DefWindowProc(hWnd, message, wParam, lParam);
return 0 ;
}
return 0;
}//THREAD FUNCTION
DWORD WINAPI Thread(LPVOID lp)
{
SendMessage(hwnd,WM_COMMAND,0L,0L) ; //该发送后不响应
return 0L ;
};说明: hwnd 为全局变量 .请高手讲解讲解啊................
解决方案 »
- error C2668: “HashKey”: 对重载函数的调用不明确
- mfc 动态创建
- 初学者如何能够尽快使用VC++
- 文件打开对话框的钩子函数问题
- 在c/s客户端取服务器上音频文件播放的问题,请有这方面设计经验的兄弟指点一下!!(项目中!)
- windows点击超链接的手型图标,我怎么获取呀,查了一下msdn,有个IDC_HAND,但是用不了呀?
- 请教一个绘图问题
- 在COM中如何得到复合类指针?
- 有谁知道清华一个学生做的关于VC网站的地址是多少了?
- 大家来讨论一下VC中的类型的互换吧!会的来讲两句,不会的来看看!分不够的话,再加!学习者也应该做点“贡献“!
- 100分,求网络文件传输例子,要求能传图片就行!急。。。。
- 如何在CListCtrl中实现象数据库的表格的样式,单击每个单元格都是可编辑的,列头和行的头都是灰色并可以显示字的?
一个进程里的主线程里创建一个非模态窗口.
然后在该窗口的初始化消息中(WM_INITDIALOG) 中创建另一个线程 .
该线程然后向该窗口里发送一个消息....
还是不可以,,,,
现附上全部代码 ,期实很短, 一个.cpp ,然后资源方件中就一个没有任何子窗口的对话框.
#include "stdafx.h"
#include "resource.h"
#define THREAD 181818
// Global Variables:
HINSTANCE hInst; // current instance
HWND hwnd ;
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
LRESULT CALLBACK About(HWND, UINT, WPARAM, LPARAM);
DWORD WINAPI Thread(LPVOID);
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
// TODO: Place code here.
hInst = hInstance ;
MSG msg;
hwnd = CreateDialog(hInstance,MAKEINTRESOURCE(IDD_PROCESS),NULL,DLGPROC(WndProc)) ;
if (!hwnd)
MessageBox(NULL,"update process is fail ,please call administrator","error prompt",MB_OK) ;
UpdateWindow(hwnd) ;
ShowWindow(hwnd,nCmdShow) ;
// Initialize global strings // Main message loop:
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
} return msg.wParam;
}LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_INITDIALOG :
CreateThread(NULL,0,Thread,0,0,NULL) ;
return 0 ;
case WM_COMMAND:
MessageBox(hwnd,"dfdf","dfdf",MB_OK) ;
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
DefWindowProc(hWnd, message, wParam, lParam);
return 0 ;
}
return 0;
}//THREAD FUNCTION
DWORD WINAPI Thread(LPVOID lp)
{
SendMessage(hwnd,WM_COMMAND,THREAD,1L) ;
return 0L ;
};
请高手看看啊,,测试一下,该线程还是行成了,应该也运行了
SendMessage(hwnd,WM_COMMAND,THREAD,1L) ; 语句,为何我窗口过程得不到该消息啊......
使用PostMessage我也试过了,可没有问题的.
MessageBox(hwnd,"dfdf","dfdf",MB_OK) ; ,你有e_mail 吗? 我把整个WORKSPACE 传给你,如何,,
代码很短,,但运行后没有弹出该
MessageBox(hwnd,"dfdf","dfdf",MB_OK) ; ....