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毫秒