创建可以定时自动关闭的对话框

 

 

首先在ResourceView中插入一个新对话框资源,调整好布局后为对话框资源创建一个对话框类(当然是以CDialog为基类了),例如叫CXXDlg。

再为CXXDlg添加消息函数:

BOOL CXXDlg::OnInitDialog() 
{
    CDialog::OnInitDialog();
    
    SetTimer(
111,3000,NULL); // 新加的函数
    
    
return TRUE;  
}

其中SetTimer(111,3000,NULL)是新添加的代码,3000代表3000毫秒。

然后再为CXXDlg添加WM_TIMER消息函数:

void  CXXDlg::OnTimer(UINT nIDEvent) 
{
    
if (nIDEvent==111)  // 新加的代码
    {
        OnOK();
    }

    
    CDialog::OnTimer(nIDEvent);
}

这样一个弹出三秒后自动关闭的对话框类就设计好了。那么如何使用呢?

 

如果用模式对话框的方式调用,则直接:

CXXDlg dlg;
dlg.DoModal();

如果用无模式对话框的方式使用,则:

CXXDlg  * pDlg  =   new  CXXDlg;
pDlg
-> Create(IDD_DIALOG_XX);
pDlg
-> ShowWindow(SW_NORMAL);
// delete pDlg; 

注意此处不能delete,否则将无法显示对话框!!

至于在什么地方delete,我却一直没有尝试成功,在void CXXDlg::OnOK()中加入

DestroyWindow();
delete 
this ;

没有成功。

在void CXXDlg::OnDestroy()中加入

delete  this ;

也出错。(因为他们只是delete了窗口却没有释放那块内存??)

而不写任何delete倒是可以正常运行,只是总感到有内存泄漏的危险 -_-

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在LabVIEW中,要实现对话框延时自动关闭,可以通过以下步骤进行操作: 1. 首先,进入LabVIEW,并创建一个新的VI。 2. 在Block Diagram面板上,拖放一个"Dialog"(对话框)的VI组件。 3. 连接该对话框组件的输出线到"Wait(ms)"(等待毫秒)的输入端。 4. 在"Wait(ms)"的输入端,设置一个适当的等待时间,即希望对话框显示的时间。 5. 连接"Wait(ms)"的输出线到"Dialog"组件的输入端。 6. 在"Dialog"组件的属性中,设置对话框的样式、标题、提示信息等等。 7. 连接"Dialog"组件的输出线到Block Diagram面板上的其他控件或处理结构,以定义对话框弹出后的操作或逻辑。 8. 编译并运行该VI。 通过以上步骤,LabVIEW中的对话框将会在指定的等待时间后自动关闭。这种方法可以在需要延时自动关闭对话框LabVIEW程序中使用,以改善用户界面和用户体验。 ### 回答2: 在LabVIEW中,可以使用以下步骤实现对话框的延时自动关闭: 1. 首先,创建一个VI(虚拟仪器)来实现这个功能。在VI中,将需要弹出对话框的代码放置在“While循环”中。 2. 在开始之前,我们需要定义一个记数器变量来计算延时时间。可以使用“计时器”或“循环计数”组件来实现该功能。 3. 在对话框弹出的前面,添加一个判断语句来检查记数器的值是否达到了预定的延时时间。 4. 如果记数器没有达到预设时间,就将记数器加一,然后继续循环。 5. 如果记数器达到了预定时间,就自动关闭对话框。可以使用“关闭VI”函数或“取消显示对话框”函数来关闭对话框。 6. 在循环结束之后,需要释放内存和关闭VI。 通过以上步骤,可以实现LabVIEW对话框延时自动关闭的功能。这样,在弹出对话框后,它将会自动关闭,而不需要用户手动关闭。这对于需要在一定时间后自动关闭对话框的应用场景非常有用。 ### 回答3: 在LabVIEW中,可以利用Timed Loop结构和Dialog Timeout Express VI实现对话框的延时自动关闭。 首先,将对话框控件放置在主VI的界面上。然后,在Timed Loop结构内部创建一个子VI,用于执行一个定时的延时操作。在子VI内部,使用Dialog Timeout Express VI来实现对话框自动关闭。这个VI的输入参数包括对话框及其ID、延时时间等。在子VI中,将延时时间作为输入传递给Dialog Timeout Express VI,并将对话框及其ID连接到该VI的相应输入终端。这样,当子VI被启动后,对话框会在指定的延时时间后自动关闭。 在主VI中,将子VI的输出结果与对话框控件的输入终端连接起来,以实现对话框的显示。通过控制子VI的启动和停止,可以控制对话框的出现和关闭。 需要注意的是,Timed Loop结构的定时器设置应与子VI的延时时间相同,以保证对话框在正确的时间后关闭。 以上是一种基于LabVIEW的实现方式,通过Timed Loop结构和Dialog Timeout Express VI可以实现对话框的延时自动关闭
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值