导航
  • 主页
  • VC综合技术
  • 互联网技术
  • MFC AppLauncher
  • .NET 技术
  • 界面
  • 进程
  • 算法
  • 硬件/系统
  • 数据库
  • VC++技术资源

DoModal()与SetActiveWindow()的疑惑!

8water 2004-04-10 11:03:10
CDlg dlg;
dlg.DoModal(); 与
dlg.SetActiveWindow();有什么区别;为什么 在如下代码中 我用 dlg.DoModal();没问题换成dlg.SetActiveWindow();就有错了呢?
BOOL CSplashApp::InitInstance()
{
AfxEnableControlContainer();

splash.DoModal();

/*
splash.SetActiveWindow();
splash.UpdateWindow();

//启动封面停留时间;
Sleep(2000);
splash.SendMessage(WM_CLOSE);
/ *
if (splash->IsWindowVisible())
{
splash->SetActiveWindow();
splash->UpdateWindow();
//启动封面停留时间;
Sleep(2000);
splash->SendMessage(WM_CLOSE);
}
else
{//应用程序窗口设置为当前活动窗口;
this->m_pMainWnd->SetActiveWindow();
//SetActiveWindow();
//清除WM_TIMER事件;
// KillTimer(1);
}
*/


// Standard initialization
// If you are not using these features and wish to reduce the size
// of your final executable, you should remove from the following
// the specific initialization routines you do not need.

#ifdef _AFXDLL
Enable3dControls(); // Call this when using MFC in a shared DLL
#else
Enable3dControlsStatic(); // Call this when linking to MFC statically
#endif

// Change the registry key under which our settings are stored.
// TODO: You should modify this string to be something appropriate
// such as the name of your company or organization.
SetRegistryKey(_T("Local AppWizard-Generated Applications"));

LoadStdProfileSettings(); // Load standard INI file options (including MRU)

// Register the application's document templates. Document templates
// serve as the connection between documents, frame windows and views.

CSingleDocTemplate* pDocTemplate;
pDocTemplate = new CSingleDocTemplate(
IDR_MAINFRAME,
RUNTIME_CLASS(CSplashDoc),
RUNTIME_CLASS(CMainFrame), // main SDI frame window
RUNTIME_CLASS(CSplashView));
AddDocTemplate(pDocTemplate);

// Parse command line for standard shell commands, DDE, file open
CCommandLineInfo cmdInfo;
ParseCommandLine(cmdInfo);

// Dispatch commands specified on the command line
if (!ProcessShellCommand(cmdInfo))
return FALSE;

// The one and only window has been initialized, so show and update it.
m_pMainWnd->ShowWindow(SW_SHOW);
m_pMainWnd->UpdateWindow();

return TRUE;
}


请大虾相助!TKS
...全文
33 点赞 收藏 4
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
kuangjingbo 2004-04-10
窗口都还没有生成,又怎么可能激活呢?
回复
_foo 2004-04-10
楼主应该好好看看domodal和setactivewindow的函数说明。

domodal是生成一个模态的对话框。
而SetActiveWindow只是把现有的窗口设为当前窗口而已
回复
itmaster 2004-04-10
参考下:
http://www.ithome-cn.net/technology/vc/vc7.htm
http://www.copathway.com/vchelp/zart/splashw.asp?type_id=22&class_id=1&cata_id=1&article_id=114&search_term=
回复
8water 2004-04-10
各位帮忙看看这个 http://expert.csdn.net/Expert/topic/2948/2948517.xml?temp=.9685785
回复
发动态
发帖子
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……