读书人

BCB怎么在主程序消息循环中加入自己的

发布时间: 2012-03-17 19:06:28 作者: rapoo

BCB如何在主程序消息循环中加入自己的方法?
当然,可以单独再起一个线程,但我觉得如果不起线程最好。

以下是 C 语言的主过程,怎么把 里面RedrawFrame 方法 改写到BCB中的应用程序的消息循环中去?

//winmain
int WINAPI WinMain ( HINSTANCE hInstance , HINSTANCE hPrevInstance , LPSTR lpCmdLine , int nShowCmd )
{
//...略

MSG msg ;
//message pump
for ( ; ; )
{
//check for a message
if ( PeekMessage( &msg , NULL , 0 , 0 , PM_REMOVE ) )
{
//message exists

//check for quit message
if ( msg.message == WM_QUIT ) break ;

//translate the message
TranslateMessage ( &msg ) ;

//dispatch the message
DispatchMessage ( &msg ) ;
}
else
{
//no message, update frame
RedrawFrame ( ) ;
}
}

//...略

//exit
return ( msg.wParam ) ;
}

[解决办法]
你这样写感觉问题很大啊
可以考虑通过别的方式实现
[解决办法]
#define UM_FIRST(WM_USER + 1)
public:
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(UM_FIRST, TMessage, UMFirst);
END_MESSAGE_MAP(TForm);
protected:
void __fastcall UMFirst(TMessage Message);

大概就是这样的形式,具体自己查查帮助吧

[解决办法]
一般程序都用的是GetMessage,但你要用PeekMessage,在VCL的程序(默认的是GetMessage)中确实不好办
看看那位高手能解决,莫非要用api钩子钩GetMessage?

读书人网 >C++ Builder

热点推荐