因为在调用CWinApp::OnFileNew时,主窗口被创建的缺省属性是可见的。
程序中调用ShowWindow(SW_HIDE)前是可见的。所以会闪一下。
如果要不闪,可以从CSingleDocTemplate或CMultiDocTemplate派生自己的类(看你的应用程序是什么类型了),重载OpenDocumentFile函数,比如:
CDocument* CMyDocTemplate::OpenDocumentFile(LPCTSTR lpszPathName,
BOOL bMakeVisible)
{
// make invisible
bMakeVisible = FALSE;
return CSingleDocTemplate::OpenDocumentFile(lpszPathName, bMakeVisible);
}
在app初始化代码里,将
CSingleDocTemplate* pDocTemplate;
pDocTemplate = new CSingleDocTemplate(
改为
pDocTemplate = new CMyDocTemplate(
并把这两行注释掉:
m_pMainWnd->ShowWindow(SW_SHOW);
m_pMainWnd->UpdateWindow();
下面是我的实现代码:
MyDocTemplate.h:
#pragma once
#include "afxwin.h"class CMyDocTemplate :
public CSingleDocTemplate
{
DECLARE_DYNAMIC(CMyDocTemplate)
public:
CMyDocTemplate(UINT nIDResource, CRuntimeClass* pDocClass,
CRuntimeClass* pFrameClass, CRuntimeClass* pViewClass);
~CMyDocTemplate(void);
virtual CDocument* OpenDocumentFile(
LPCTSTR lpszPathName, BOOL bMakeVisible = FALSE);
};MyDocTemplate.cpp:
#include "StdAfx.h"
#include "mydoctemplate.h"IMPLEMENT_DYNAMIC(CMyDocTemplate, CSingleDocTemplate)CMyDocTemplate::CMyDocTemplate(UINT nIDResource, CRuntimeClass* pDocClass,
   CRuntimeClass* pFrameClass, CRuntimeClass* pViewClass) : 
CSingleDocTemplate(nIDResource, pDocClass, pFrameClass, pViewClass)
{
}CMyDocTemplate::~CMyDocTemplate(void)
{
}
CDocument* CMyDocTemplate::OpenDocumentFile(LPCTSTR lpszPathName,
BOOL bMakeVisible)
{
bMakeVisible = FALSE;
return CSingleDocTemplate::OpenDocumentFile(lpszPathName, bMakeVisible);
}我不知道还有什么其他方法能使主窗口不闪动。
继续关注。

解决方案 »

  1.   

    把theApp.m_nCmdShow = SW_HIDE;放在创建文档模板之前试试。
      

  2.   

    To:yu_hl(卖火柴的小男孩)
    CDocument* CMyDocTemplate::OpenDocumentFile(LPCTSTR lpszPathName,BOOL bMakeVisible)中第二个参数bMakeVisible好象是指定包含文档的窗口是否可见,而包含文档的窗口应该是一个视图而不是主窗口吧。不知道我的理解对不对,请指教。
      

  3.   

    soloist(独行独奏),我试了一下,不行阿。
      

  4.   

    为什么要加Timer呢?这样准吗?
    你在下面语句之前SHOW SPLASH窗口,在之后HIDE/DESTROY,就更好了嘛!
    if (!ProcessShellCommand(cmdInfo))
      

  5.   

    to yu_hl&&soloist:
    谢谢二位,呵呵...二位的方法都可以,一个简单,一个对mfc理解很深...呵呵...谢过了...