VC语言

本类阅读TOP10

·VC++ 学习笔记(二)
·用Visual C++打造IE浏览器(1)
·每个开发人员现在应该下载的十种必备工具
·教你用VC6做QQ对对碰外挂程序
·Netmsg 局域网聊天程序
·Windows消息大全
·VC++下使用ADO编写数据库程序
·VC++学习笔记(四)
·非法探取密码的原理及其防范
·怎样在VC++中访问、修改注册表

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
无模式对话框的一些注意事项

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

无模式对话框的创建:

1. 添加对话框资源,假设其资源名为IDD_DIALOG1

2. 为对话框创建类,假设其类名为CTestDlg

3. 在stdafx.h文件中加入对CTestDlg类的头文件引用, #include “TestDlg.h”

4. 在引用CTestDlg类的头文件中添加成员变量:
    public:
            
CTestDlg dlg;

5. 显示无模式对话框:
   
dlg.Create(IDD_DIALOG1,this); 
    dlg.ShowWindow(SW_SHOW);

这样,一个无模式对话框就创建好了。然后,我设了一个计时器,让它在5秒钟后自动关闭。这很常用,一般都是以事件作为驱动,多线程应用中比较多见。比如,在网络通信中,一个操作可能需要较多的时间,为了让用户知道程序在做些什么,需要有这么一个提示对话框。在操作完毕后自动关闭。现在就以计时器定时来驱动这个无模式对话框。

无模式对话框的关闭:

SetTimer(1,5000,NULL); //启用计时器

响应WM_TIMER消息,在OnTimer中写如下代码:

if( nIDEvent == 1)
{
        dlg.PostMessage(WM_CLOSE); //向对话框发送关闭消息
        KillTimer(1);

}

这一切看来是那么平常,编译,执行也很顺利!我差点以为自己对了……结果,当对话框关闭后,我想第二次显示它的时候,确报异常了。怎么回事?原来模式对话框是可以用WM_CLOSE消息关闭的,但无模式对话框不行!无模式对话框必须用DestroyWindow方法来关闭。把代码改成下面这样就通过了……

if( nIDEvent == 1)
{
        dlg.DestroyWindow(); //这样就没有问题了
        KillTimer(1);

}




相关文章

相关软件