PersonalCorpus 版 (精华区)

发信人: hjt (浪子小猴◎中关村的民工◎忙活中), 信区: VisualC
标  题: 程序启动是创建对话框
发信站: 哈工大紫丁香 (2002年11月15日10:14:13 星期五), 站内信件

对于对话框,我们可能习惯于用这样的方式:
CDialog dlg;            //申明对话框实例
dlg.DoModal();          //弹出模态对话框

这几天看到这样一种在程序框架创建的时候就创建对话框,然后再隐藏,收到消息
后再显示的方式,现贴出代码供大家参考:

1,在CMainFrame::OnCreate中:

 if (!m_wndTextInput.Create(IDD_TEXT_INPUT))    //IDD_TEXT_INPUT为对话框资源ID
                                                //m_wndTextInput是对话框类实例
 {
    TRACE0("Failed to create sentence input window\n");
 }
else
 {
    m_wndTextInput.ShowWindow(SW_HIDE);         //创建成功,隐藏
 }

2,显示窗口:
OnBottonTextInput()
{
     CRect rcApp;
     GetWindowRect(&rcApp);
    // 取当前对话框的状态
    WINDOWPLACEMENT wndpl;
    m_wndTextInput.GetWindowPlacement(&wndpl);
    // 修改对话框的大小
    CRect rcDialog;
    m_wndTextInput.GetWindowRect(&rcDialog);
    int nHeight = rcDialog.Height();
    int nWidth = rcDialog.Width();
    rcDialog.left = rcApp.left + rcApp.Width();
    rcDialog.top = rcApp.top + (rcApp.Height()-nHeight);
    rcDialog.bottom = rcApp.bottom;
    rcDialog.right = rcDialog.left + nWidth;
    wndpl.rcNormalPosition = rcDialog;
    // 修改对话框的显示状态
    BOOL bStatus = m_wndTextInput.IsWindowVisible();
    wndpl.showCmd= (bStatus ? SW_HIDE: SW_SHOW);
    // 设置对话框的当前显示状态
    m_wndTextInput.SetWindowPlacement(&wndpl);
}



--
     _.-._         ..-..         _.-._
    (_-.-_)       /|'.'|\       (_'.'_)
     .\-/.        \)\-/(/        ,-.-.
  __/ /-. \__   __/ ' ' \__   __/'-'-'\__
 ( (___/___) ) ( (_/-._\_) ) ( (_/   \_) )   Asciiman说这几个是猴
  '.Oo___oO.'   '.Oo___oO.'   '.Oo___oO.'

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 159.226.42.8]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.286毫秒