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

关于ShowMessage窗体的自动关闭解决办法

2012-02-08 
关于ShowMessage窗体的自动关闭“其实对话框都是窗体,都是有句柄的,不管你是MessageBox还是ShowMessage,只

关于ShowMessage窗体的自动关闭
“其实对话框都是窗体,都是有句柄的,不管你是MessageBox还是ShowMessage,
只要得到句柄后发一WM_CLOSE消息不就OK了啊。

代码如下: 
一Button,其Click如下。ShowMessage( 'kao ');     
设一定时器,用来检测ShowMessage窗体是否存在,如果存在,则发送消息关掉:

Delphi(Pascal) code
var     AHandle: THandle; begin     AHandle := FindWindow( 'TMessageForm ', PChar(Application.Title));    if  AHandle >  0  then        SendMessage(AHandle, WM_CLOSE, 0, 0); end;

如果你关不掉ShowMessage可以拿板砖来找我.”  
http://topic.csdn.net/t/20060406/17/4668298.html ------hmily1688

我把上面的代码翻译后却编译不通过.

C/C++ code
void __fastcall TForm1::MSGTimerTimer(TObject *Sender){    THandle handle;    handle = FindWindow( "TMessageForm", Application->Title.c_str() ); //Cannot convert 'void *' to 'unsigned int'    if( handle > 0 )    {        SendMessage( (void *)handle, WM_CLOSE, 0, 0 );    }}









[解决办法]
void __fastcall TForm1::MSGTimerTimer(TObject *Sender)
{
THandle handle;
handle = (THandle)FindWindow( "TMessageForm", Application->Title.c_str() ); //Cannot convert 'void *' to 'unsigned int'
if( handle > 0 )
{
SendMessage( (void *)handle, WM_CLOSE, 0, 0 );
}
}
[解决办法]
C/C++ code
HWND hWnd = ::FindWindow("TMessageForm", AnsiString(Application->Title).c_str());if (hWnd)    ::SendMessage(hWnd, WM_CLOSE, 0, 0);
[解决办法]
看到妖哥回帖,登录下 合影。

妖哥你这个没有延时阿,看不到消息没有用阿
[解决办法]
能关掉其他的对话框吗?如Application->MessageBoxA("1","2",MB_OK);或者MessageBox
[解决办法]
测试过了Application->MessageBoxA("1","2",MB_OK);或者MessageBox都可以
C/C++ code
void __fastcall TForm1::Timer1Timer(TObject *Sender){  THandle handle;  //handle = (THandle)FindWindow( "TMessageForm", Application->Title.c_str() ); //Cannot convert 'void *' to 'unsigned int'  handle = (THandle)FindWindow(NULL,"1");//注意对话框标题  if( handle > 0 )  {    SendMessage( (void *)handle, WM_CLOSE, 0, 0 );  }}void __fastcall TForm1::Button1Click(TObject *Sender)//对话框弹出后,都可以自己关闭{   MessageBox(0,"ok","1",MB_OK);   Application->MessageBox("qe","1",MB_OK);}
[解决办法]
自己创建一个Form,而且内容显示还更自由,再在Form上放一个时钟。

热点排行