独立线程中的窗口接收不到OnTimer

gPolaris 2001-06-04 04:46:00
我在MFC中用API创建一窗口(在独立的线程中)可是,在其某个函数中SetTimer
却触发不了OnTimer,谁来救救我?
...全文
123 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
gPolaris 2001-06-05
  • 打赏
  • 举报
回复
难道没人会?
gPolaris 2001-06-05
  • 打赏
  • 举报
回复
push!
gPolaris 2001-06-05
  • 打赏
  • 举报
回复
HANDLE_MSG是一个宏,问题不应在这里吧
kook 2001-06-05
  • 打赏
  • 举报
回复
HANDLE_MSG ??
没用过,为什么不写得老实一点呢?

gPolaris 2001-06-05
  • 打赏
  • 举报
回复
以上是代码片段,哪位大虾帮帮我
gPolaris 2001-06-05
  • 打赏
  • 举报
回复
LRESULT CALLBACK WndProc(HWND hWnd,UINT iMsg,WPARAM wParam,LPARAM lParam)
{
switch (iMsg)
{
HANDLE_MSG(hWnd,WM_CREATE,pWindow->OnCreate);
HANDLE_MSG(hWnd,WM_DESTROY,pWindow->OnDestroy);
// HANDLE_MSG(hWnd,WM_GETMINMAXINFO,pWindow->OnGetMinMaxInfo);
// HANDLE_MSG(hWnd,WM_KEYDOWN,pWindow->OnKeyDown);
// HANDLE_MSG(hWnd,WM_COMMAND,pWindow->OnCommand);
HANDLE_MSG(hWnd,WM_CONNECTTO,pWindow->OnConnect);
HANDLE_MSG(hWnd,WM_DISCONNECT,pWindow->OnDisconnect);
HANDLE_MSG(hWnd,WM_EXITWINDOW,pWindow->OnExit);
default:

return DefWindowProc(hWnd,iMsg,wParam,lParam);
}

}

HWND WinInit(HINSTANCE hInstance, int iShow)
{
WNDCLASS wc;

// Vanilla Style Window Definition
wc.style = CS_HREDRAW|CS_VREDRAW;
wc.lpfnWndProc = WndProc; // Message Handling routine
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon(theApp.m_hInstance, MAKEINTRESOURCE(IDR_MAINFRAME));
wc.hCursor = LoadCursor(NULL,IDI_APPLICATION);
wc.hbrBackground = (struct HBRUSH__ *)GetStockObject(WHITE_BRUSH);
// wc.lpszMenuName = MAKEINTRESOURCE(IDR_MENU1);
wc.lpszMenuName = NULL;
wc.lpszClassName = CLASSNAME;

// Create the Window
if (RegisterClass(&wc))
{
// Create the main Window
return CreateWindow(CLASSNAME,
"Client Socket",
WS_OVERLAPPEDWINDOW|WS_VSCROLL|WS_HSCROLL,
0,
0,
640,
480,
NULL,
NULL,
hInstance,
&iShow
);
}
else
return NULL;
}

//线程函数,创建窗口
DWORD WINAPI LoadWindow(LPVOID lParam)
{
HWND hWnd;
MSG iMsg;

hWnd = WinInit(theApp.m_hInstance,1);
if (!hWnd)
return FALSE;

// Set the Instance pWindow为一个窗口类
pWindow->SetInstance(theApp.m_hInstance);

// ShowWindow(hWnd,SW_MINIMIZE);

for(;;)
{
if(PeekMessage(&iMsg,NULL,0,0,PM_NOREMOVE))
{
if(!GetMessage(&iMsg,NULL,0,0))
return iMsg.wParam;

TranslateMessage(&iMsg);
DispatchMessage(&iMsg);
}
else
WaitMessage();
}

}
kook 2001-06-05
  • 打赏
  • 举报
回复
也许你声明消息循环处理函数(或调用)的地方有问题
realgoodniuniu 2001-06-05
  • 打赏
  • 举报
回复
不可能吧,你在好好检查一下代码!!!
jsd198 2001-06-05
  • 打赏
  • 举报
回复
是吗?我也想知道具体情况(jsd198@163.net)
gPolaris 2001-06-04
  • 打赏
  • 举报
回复
奇怪的是InvalidateRect(hWnd,NULL,FALSE)也触发不了OnPaint
是不是消息分发不对
但是能受到PostMessage传来的消息

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧