首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

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

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

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?

热点排行