只用MFC的CWinApp类,其余类:框架,文档,视图等都不需要,这样的程序在vc中怎样建?

meifen 2001-05-15 06:02:00
...全文
106 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
fulaoxiao 2001-05-16
  • 打赏
  • 举报
回复
不用MFC,只用CWinAPP,你好深奥啊,meifen哥。
你为什么不就用SDK呢?
ttoomm 2001-05-16
  • 打赏
  • 举报
回复
不用AppWizard,用Win32 Application(倒数第四个)。选择 An empty project 。
然后在菜单栏里选 project->settings 在弹出的对话框中,将工程设置为使用MFC 。
然后,新建一个 C++ Source File 文件,在文件中按下列方式写代码;
派生CWinApp类,生成一个实例,重载InitInstance()函数,在InitInstance()函数中加入你的初始化代码即可。

一个简单的程序:

#include "afxwin.h"

class CMyApp:public CWinApp
{
public:
BOOL InitInstance();
};

CMyApp TheApp;

BOOL CMyApp::InitInstance()
{
//你的代码

return true;
}

以上的程序不会显示什么给你,却在任务列表中占一项,适合做服务器端程序。
所以,为了能显示什么!最好带一个窗口类。

#include "afxwin.h"

class CMyApp:public CWinApp
{
public:
BOOL InitInstance();
};

CMyApp TheApp;

class CMyWnd:public CFrameWnd
{
public:
CMyWnd();
};

CMyWnd::CMyWnd()
{
Create(NULL,"");
}

BOOL CMyApp::InitInstance()
{
m_pMainWnd=new CMyWnd();
m_pMainWnd->ShowWindow(m_nCmdShow);
//你的代码

return true;
}

向陆松 2001-05-16
  • 打赏
  • 举报
回复
用向导,选Multiple Document,去掉下面的
Document/View architecture support
复选框,就可以了。
weizhisheng 2001-05-15
  • 打赏
  • 举报
回复
我试了半天,好像不用CWnd就是不行,主要是CWinApp::Run如果检测到m_pMainWnd不是合法的CWnd就退出了。告诉你我用的三种方法,自己权衡吧。
1。CMyApp::InitInstance()
{
CFrameWnd* pFrame = new CFrameWnd;
pFrame->Create(NULL,NULL);
m_pMainWnd=pFrame;
m_pMainWnd->ShowWindow(SW_SHOW);
m_pMainWnd->UpdateWindow();
return TRUE;
}
这个方法肯定可以,就是不知道是否符合你的要求。
2。CMyApp::InitInstance()
{
LPSTR lpsz = AfxRegisterWndClass(0);
HWND hwnd = CreateWindow(lpsz,"test",WS_OVERLAPPEDWINDOW,..);
m_pMainWnd = new CWnd;
m_pMainWnd->Attach(hwnd);
return TRUE;
}
本来想只用hwnd而不用CWnd,不过这样的话,到CWinApp::Run就退出了。而且这样总在某些时候会出现ASSERT错误。
3。几乎就是API的翻版。
CMyApp::initInstance()
{
LPSTR lpsz = afxRegisterClass(0);
HWND hwnd = CreateWindow(lpsz,"Test",WS_OVERLAPPEDWINDOW,...);
ShowWindow(hwnd,SW_SHOW);
UpdateWindow(hwnd);
MSG msg;
while (GetMessage(&msg);
DispatchMessage(&msg);
return FALSE;
}
不过这样的话还不如直接用API的爽。
In355Hz 2001-05-15
  • 打赏
  • 举报
回复
随便建一个基于对话框的程序,删掉其他类,然后在CWinApp::InitInstance里边仿造原代码创建窗口即可.
lifeinwar 2001-05-15
  • 打赏
  • 举报
回复
看侯杰先生的《深入浅出MFC 2/e》,在这个网站中有Mirror,可以全部下载。
meifen 2001-05-15
  • 打赏
  • 举报
回复
weizhisheng(未知生,焉知死):
哪里有你说的这种程序原理的介绍?我要的正是这种程序.
请指点具体如何来做?
用AppWizard? 好象只能有三种选择啊?SDI,MDI,基于对话框.
meifen 2001-05-15
  • 打赏
  • 举报
回复
guoxiny(狼):
我的意思不做SDK,因为还要用CWinApp.
meifen 2001-05-15
  • 打赏
  • 举报
回复
请指点具体如何来做?
用AppWizard? 好象只能有三种选择啊?SDI,MDI,基于对话框.
guoxiny 2001-05-15
  • 打赏
  • 举报
回复
自己从头建。如果连CWinApp都不用的话,可以说是在做SDK编程。
从WinMain开始,注册窗口类,创建窗口,显示,消息循环。
weizhisheng 2001-05-15
  • 打赏
  • 举报
回复
理论上只要自己处理InitInstance生成自己的窗口就行,不过你要对一大堆的Assert错误有心理准备。

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

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

试试用AI创作助手写篇文章吧