荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: Second (石开), 信区: Program
标  题: 5.8 建立以对话框为基础的应
发信站: 荔园晨风BBS站 (Wed May 30 07:00:43 2001), 转信

5.8 建立以对话框为基础的应用

我认为初学者使用以对话框为基础的应用是一个比较好的选择,因为这样一来可以摆脱
一些开发界面的麻烦,此外也可以利用ClassWizard自动的添加消息映射。

在VC中提供了生成“以对话框为基础的应用”的功能,你所需要选择的是在使用AppWiz
ard的第一步选择“对话框为基础的应用”,如图。VC会生成包含有应用派生类和对话框
派生类的代码。在应用类的InitInstance()成员函数中可以看到如下的代码:
BOOL CMy58_s1App::InitInstance()
{
        CMy58_s1Dlg dlg;
        m_pMainWnd = &dlg;
        int nResponse = dlg.DoModal();
        if (nResponse == IDOK)
        {
                // TODO: Place code here to handle when the dialog is
                //  dismissed with OK
        }
        else if (nResponse == IDCANCEL)
        {
                // TODO: Place code here to handle when the dialog is
                //  dismissed with Cancel
        }
        return FALSE;
}

这是产生一个有模式对话框并创建它,在对话框返回后通过返回FALSE来直接退出。在设
计时通过编辑对话框资源你可以设计好界面,然后通过ClassWizard映射消息来处理客户
的输入,由于前几节已经讲过本节也就不再重复。
同样基于对话框的应用也同样可以使用属性对话框做为界面,或者是通过使用经过派生
的通用对话框作为界面。

提示:当你使用有模式对话框时最开始是无法隐藏窗口的,而只能在对话框显示后再隐
藏窗口,所以这会造成屏幕的闪烁。一个解决办法就是采用无模式的对话框,无模式的
对话框在创建后是隐藏的,直到你调用ShowWindow(SW_SHOW)才会显示。相关代码如下:

BOOL CMy58_s1App::InitInstance()
{
        //必须新生成一个对象,而不能使用局部变量
        CMy58_s1Dlg* pdlg=new CMy58_s1Dlg;
        m_pMainWnd = pdlg;
        pdlg->Create();
        return TRUE;
}

--
                            既然热爱生命
                            那么,
                            一切都在意料之中。

※ 来源:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 192.168.28.190]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店