在MessageBox()窗口自动关闭

zhanghelpsgz 2006-07-19 01:46:40
我想让我的MessageBox()窗口显示5秒钟后自动关闭,有用什么办法?
...全文
1664 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
kinglh 2007-02-14
  • 打赏
  • 举报
回复
学习
wenyongjie 2007-01-24
  • 打赏
  • 举报
回复
haiqian119(海嵌)正解

找不到MessageBox的句柄,可以到老妖网站下载个SPY来
API不熟哪就多用几次就OK了
laowang2 2007-01-23
  • 打赏
  • 举报
回复
mark
cdmar79 2007-01-23
  • 打赏
  • 举报
回复
我win2000的user32.dll中没有导出MessageBoxTimeout的么,你用的什么系统的?
jiangshx 2006-09-01
  • 打赏
  • 举报
回复
好贴!
MTLee 2006-08-30
  • 打赏
  • 举报
回复
To diamondex(醯醰醱醲醳醴醵醶醷醸醹醺醻醼醽醾醿釀釁釂釃釄釅) ( ) 信誉:100 Blog 2006 :
而能多给几个操作user32.dll的例子吗 ?user32.dll很又意思!

TKS!
diamondex 2006-08-30
  • 打赏
  • 举报
回复
专业一点,调用user32.dll中的 MessageBoxTimeout


// msgbox_timeout.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "windows.h"

int main(int argc, char* argv[])
{

typedef int (WINAPI *PMSGBOXT)(HWND,LPCSTR,LPCSTR,UINT,WORD,DWORD timeout);
PMSGBOXT func;
HMODULE hm;
UINT t;
int ret;


hm=::LoadLibrary("user32.dll");

if(!hm)
{
puts("load DLL error!");
return 1;
}
func=(PMSGBOXT)::GetProcAddress(hm,"MessageBoxTimeoutA");

if(!func)
{
puts("get Proc error!");
::FreeLibrary(hm);
return 2;
}

t=MB_YESNOCANCEL|MB_ICONEXCLAMATION|MB_TOPMOST;

SYSTEMTIME syst;

::GetSystemTime(&syst);
printf("*** %02d:%02d:%02d.%03d [GMT]\n",syst.wHour,syst.wMinute,syst.wSecond,syst.wMilliseconds);

ret=func(NULL,"MessageBox with Timeout","Caption",t,0,2000);

::GetSystemTime(&syst);
printf("*** %02d:%02d:%02d.%03d [GMT]\n",syst.wHour,syst.wMinute,syst.wSecond,syst.wMilliseconds);

printf("BUTTON: %d\n", ret);

::FreeLibrary(hm);


printf("Hello World!\n");


return 0;
}

yefu2000 2006-08-18
  • 打赏
  • 举报
回复
学习~
winner8080 2006-08-18
  • 打赏
  • 举报
回复
回上面某楼的SendMessage()
在MSDN中是这样定义的:
LRESULT SendMessage(
HWND hWnd,
UINT Msg,
WPARAM wParam,
LPARAM lParam
);
比如要发消息取得richEdit中的选中的文字,到帮助菜单下的windows SDK,再到目录下的第3项找到这个控件,再找到其中的“RichEdit message”,里面有很多消息,打开一个就有详细的WPARAM wParam, LPARAM lParam的说明,举例如下:
char *buffer = new char[41];
SendMessage(RichEdit1->Handle ,EM_GETSELTEXT ,0,(LPARAM) (LPSTR)buffer );
ShowMessage(buffer);
其他控件也是这样去看帮助的
jone7319 2006-08-10
  • 打赏
  • 举报
回复
MARK
MEFULEU 2006-08-10
  • 打赏
  • 举报
回复
keybd_event(BYTE bVk, BYTE bScan, DWORD dwFlags, DWORD dwExtraInfo );

bVK 是1-254的键值,比如Ord('A')
bScan 是一个扫描码,一般用mapvirtualkey(Ord('A',0)获得
dwFlags 按键状态,KEYEVENTF_EXTENDEDKEY表示按下,KEYEVENTF_KEYUP表示放开
dwExtraInfo 附加信息
MEFULEU 2006-08-10
  • 打赏
  • 举报
回复
keybd_event(18,mapvirtualkey(18,0),0,0);
keybd_event(115,mapvirtualkey(115,0),0,0);
keybd_event(115,mapvirtualkey(115,0),keyeventf_keyup,0);
keybd_event(18,mapvirtualkey(18,0),keyeventf_keyup,0);
MEFULEU 2006-08-10
  • 打赏
  • 举报
回复
无聊的问题,发送一个alt+f4命令不就完了
lextm 2006-07-20
  • 打赏
  • 举报
回复
自己设计一个Form,做成和MessageBox差不多的。然后一切控制就看你自己的啦,加入一个TTimer就可以计时了。
zhanghelpsgz 2006-07-19
  • 打赏
  • 举报
回复
谢谢上面的朋友,OK!
zhanghelpsgz 2006-07-19
  • 打赏
  • 举报
回复
上面的朋友:
findwindow -> sendmessage 不太会用,我的API学得差,给个例子好么?
海嵌 2006-07-19
  • 打赏
  • 举报
回复
void __fastcall TForm1::btn_1Click(TObject *Sender)
{
tmr_1->Interval = 5000;
tmr_1->Enabled = true;
MessageBox(NULL,"nihao","Test",MB_OK);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::tmr_1Timer(TObject *Sender)
{
HANDLE hWnd = FindWindow(NULL,"Test");
SendMessage(hWnd,WM_CLOSE,NULL,NULL);
tmr_1->Enabled = false;
}
海嵌 2006-07-19
  • 打赏
  • 举报
回复
findwindow -> sendmessage
zhanghelpsgz 2006-07-19
  • 打赏
  • 举报
回复
上面的朋友,自己怎么写法,说详细一点好么
alloutoflove 2006-07-19
  • 打赏
  • 举报
回复
要么自己写代码找到那个MessageBox将其关闭, 要么自己写个MessageBox

1,221

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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