关于死循环中关闭窗口的问题

findheart 2005-09-22 04:43:33
在一个while死循环中使用了Application->ProcessMessages(),窗口上的控件和最大化、最小化按钮都好用,唯独[X]按钮失灵,真郁闷。
请教一下有没有解决的方法?(除了多线程)
谢谢!
...全文
127 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
ccrun.com 2005-09-22
  • 打赏
  • 举报
回复
一个简单例子,程序运行后按button1开始死循环,结束时按标题栏的"x"就行了。

单元的.h文件中:
private: // User declarations
void __fastcall WndProc(TMessage &Msg);

单元的.cpp文件中:

bool g_bClose = false; // 设一个全局标志

void __fastcall TForm1::Button1Click(TObject *Sender)
{
while(true)
{
// 在循环体内判断这个标志,如果是真就退出循环
if(g_bClose)
break;
Application->ProcessMessages();
}
}
//---------------------------------------------------------------------------
// 重载窗体的WndProc函数,以响应标题栏的按钮点击消息
void __fastcall TForm1::WndProc(TMessage &Msg)
{
if(Msg.Msg == WM_SYSCOMMAND)
{
if(Msg.WParam == SC_CLOSE) // 如果点击了标题栏的"x"按钮
g_bClose = true;
}
TForm::WndProc(Msg);
}

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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