首页
论坛
课程
招聘
关于mfc主线程的问题请教一下,有精通mfc大佬解答一下
我skyddr 2021-12-29 162

下面代码是一个非mfc的处理程序,代码如下,我要移植到MFC里面,必须要让MFC不断的去执行MsgProcess,
不能用时钟,也不能开启别的线程,
必须要在MFC主线程里面不断的执行,请问该怎么办?难道要修改MFC底层源代码,在里面加入进去???

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
MSG        msg;
while(1)
{
    if(PeekMessage( &msg, NULL, 0, 0, PM_NOREMOVE ) )
    {
        if(!GetMessage( &msg, NULL, 0, 0 ))
        {
            return( msg.wParam);
        }
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
G_pDLG->MsgProcess();
    else( WaitMessage() );
}
收藏
1条回答
0346954 2022-1-2

我不太懂MFC,可以尝试先获取MFC主程序的窗口句柄,然后使用SetWindowLongPtr函数,可以传入参数GWL_WNDPROC这一参数修改窗口的WndProc,返回值为窗口本来的处理函数地址,保存起来,调用SetWindowLongPtr传入你上面的代码地址,一般界面线程是主线程,当窗口有消息过来时,会调用你传入的函数地址,在你自己写的函数中先调用你想调用的代码,如果自己处理不了的代码,就调用原来的界面处理函数。

回复