小弟是用VS8.0开发程序的,我想在Win32项目中加入一个MFC窗体,为此我引入了头文件#include <afxwin.h>,并且在工程设置的常规项中将“MFC的使用”改为“在共享 DLL 中使用 MFC”,去掉了stdafx.h中的#include <window.h>项:然后在cpp文件中加入以下代码:#include "stdafx.h"
#include "MFCWindow.h"
#include "afxwin.h"
#define MAX_LOADSTRING 100class MyApp:public CWinApp
{
public:
  BOOL InitInstance();
};
CWinApp appclass;
class CMainFrame:public CFrameWnd
{
public:
 CMainFrame()
 {
  Create(L"Open",L"我的窗口",WS_OVERLAPPEDWINDOW,CRect(0,0,800,600));
 
 }
protected:
 afx_msg void OnLButtonDown(UINT uint, CPoint cpoint);
 DECLARE_MESSAGE_MAP()
};BEGIN_MESSAGE_MAP(CMainFrame,CFrameWnd)
    ON_WM_LBUTTONDOWN()
END_MESSAGE_MAP()void CMainFrame::OnLButtonDown(UINT uint, CPoint cpoint)
{
 MessageBox(L"Open",L"osdf",MB_YESNOCANCEL);
 CFrameWnd::OnLButtonDown(uint,cpoint);
}BOOL MyApp::InitInstance()
{
 CMainFrame fam;
 m_pMainWnd=&fam;
 m_pMainWnd->ShowWindow(m_nCmdShow);
 m_pMainWnd->UpdateWindow();
 
 return TRUE;
}在运行MyApp::InitInstance()函数时,窗体应该可以显示的,为什么程序刚运行了没多长时间,就自动退出了呢?

解决方案 »

  1.   

    m_pMainWnd->ShowWindow(m_nCmdShow);
     m_pMainWnd->UpdateWindow();
     <-------这里要加停留的代码,不然直接结束
     return TRUE;
      

  2.   

    我在 m_pMainWnd->UpdateWindow();之后加入了
    while(1==1)
    {
    int a=1;
    }
    为什么还不行呢,调试的时候,运行不到这段代码呀
      

  3.   

    BOOL MyApp::InitInstance()
    {
     CMainFrame *fam;
     fam=new CMainFrame;
     m_pMainWnd=fam;
     m_pMainWnd->ShowWindow(m_nCmdShow);
     m_pMainWnd->UpdateWindow();
     
     return TRUE;
    }
    这样试一下看行不行?
      

  4.   

    如上所述,问题就出在这里。
    原来的程序写的,fam只是个local变量,退出InitInstance函数后自动销毁,当然窗口也就不见了。
    改过用指针new就可以了。其实这个问题的解决你可以多参考一下MFC自已生成的代码。
      

  5.   

    那个InitInstance函数不会被调用,为什么呢?
      

  6.   

    Create方法的第一个参数没设为NULL,晕呀