实时搜索: mfc怎么样

mfc怎么样

789条评论 3821人喜欢 1174次阅读 288人点赞
在MFC中要实现写文件,用了CArchive类以<<流类的方式输出,但是MFC就是不认之前控制台程序里面的endl,写成std::endl也没用,\n也完全不行,请问该如何解决?
我的IDE是VS 2008 , 是这样的,我刚大学毕业,学的.net方向(C#),但我对C++有非常深厚的兴趣,从2005年开始自学业C++,后来学习MFC,自己用MFC编写了几个小项目,还有两个商业项目。MFC学习和使用的历程,大约是3年。

但是,每当在网上看到,VC++太大、不健壮,MFC太臃肿、设计得不好,现在MFC需求在逐渐消退,最好转到C#、JAVA等方面的开发,等等...

MFC中如何输出换行?: 换行一般有三种格式:
“\n"
"\r\n"
"\r"

用"\r\n"最保险

高分求指导:现在VC++(MFC)需求怎么样,主要适合从事什么开发,大概多久会被淘汰?: 个人观点一家之言吧:
1:语言没有好不好一说,mfc仅仅是一个类库,封装的还是底层C++API。
2:mfc不是没有用武之地,而是随着新技术的推广,没人去研究这个东西,所以逐渐退出市场,市场是与供求挂钩的,市场面越大说明东西越流行,同时竞争就越大。
3:从微软本身的意思上来分析,的确是替代品。C#目前是作为NET新技术。
4:其实你舍不得放弃mfc主要在于用习惯、用熟练而已,说明你的c++功底还是不错的,你三年所掌握的c++/mfc开发思想理念完全可以胜任任何一门新语言技术,众所周知玩c++的人是最严谨的程序员,玩c++你都玩得通了,还担心什么?所谓语言区分也就是语法之分,思想都是相通的。话说回来,语言的过时不过时在于市场需求,另外更重要的在于人,在我所认知的行业内,玩c#\java的的确比较多,市场供应也比较大,但是工资待遇都不怎样,回头来看玩c语言和汇编的,工资月薪都基本上w的,尤其是玩底层汇编驱动的,这些玩意其实并不流行,需求也不大,原因在于没有能人,而且这些玩意非常非常困难,所谓语言高低级之分在于人性化,越高级的语言越容易掌握,随便一句函数就能实现什么什么功能,所谓站着巨人的肩膀就是这个感觉。反之越低级的语言越令人头痛,任何功能都要自己写,说白了这工作谁愿意做,而且底层代码级的活多心酸而且困难,手头没词典的话压根敲不进一个代码,但往往这些工作才是最高待遇的,做一年等同别人做四五年,这也就造成了市场供求。

说这么多无非是告诉你,技术不分过时,在于你的编程功底如何?c++很牛的!

MFC如何在两个对话框之间传值:

在APP类增加一个成员变量:

public: CString m_logUser;

A类里面:

((CYourApp *)AfxGetApp())->m_logUser = xxxx;//CYourApp是你APP类名字,xxx是要保持的用户名

B类里面:

CString mmm = ((CYourApp *)AfxGetApp())->m_logUser;

MFC如何画粗线啊: CPen pen;
pen.Create(...)创建一个画笔,其中有一参数指定画笔大小,具体看MSDN(我忘了=-=)。
dc->SelectObject(&pen) 将创建的笔选择到设备描述表中;
然后再画你的线

MFC如何同时播放两个音乐: MCI 不一定要在MFC里面实现 我以前就做过在控制台下实现的 现在找不到了

MFC下如何用OpenGL实现贴图: MFC的程序太大,文件太多,这里贴不完,你可以去这个地址看看,学Opengl我是从这里入门的:http://nehe.gamedev.net

一个MFC的程序部分如下:
#include "stdafx.h"
#include "NeheMFC.h"
#include "NeheWindow.h"
#include "Main.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

static float angle=0,rot1,rot2;

CMain::CMain()
{
// Start Of User Initialization
}

CMain::~CMain()
{

}

BOOL CMain::KeyPressed(int nCode)
{
if( nCode >= 0 && nCode <= 255 )
{
return theApp.keyDown[ nCode ];
}
return FALSE;
}

BOOL CMain::Initialize()
{
angle = 0.0f; // Set Starting Angle To Zero

glClearColor (0.0f, 0.0f, 0.0f, 0.5f); // Black Background
glClearDepth (1.0f); // Depth Buffer Setup
glDepthFunc (GL_LEQUAL); // The Type Of Depth Testing (Less Or Equal)
glEnable (GL_DEPTH_TEST); // Enable Depth Testing
glShadeModel (GL_SMOOTH); // Select Smooth Shading
glHint (GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); // Set Perspective Calculations To Most Accurate

return TRUE;
}

void CMain::Deinitialize()
{

}

void CMain::Update(DWORD milliseconds)
{
if (KeyPressed(VK_ESCAPE) == TRUE) // Is ESC Being Pressed?
{
theApp.TerminateApplication (); // Terminate The Program
}

if (KeyPressed(VK_F1) == TRUE) // Is F1 Being Pressed?
{
theApp.ToggleFullScreen (); // Toggle Fullscreen Mode
}

angle += (float)(milliseconds) / 5.0f; // Update angle Based On The Clock
}

void CMain::Draw()
{
glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clear Screen And Depth Buffer
glLoadIdentity (); // Reset The Modelview Matrix

glTranslatef (0.0f, 0.0f, -6.0f); // Translate 6 Units Into The Screen
glRotatef (angle, 0.0f, 1.0f, 0.0f); // Rotate On The Y-Axis By angle

for (rot1=0; rot1<2; rot1++) // 2 Passes
{
glRotatef(90.0f,0.0f,1.0f,0.0f); // Rotate 90 Degrees On The Y-Axis
glRotatef(180.0f,1.0f,0.0f,0.0f); // Rotate 180 Degress On The X-Axis
for (rot2=0; rot2<2; rot2++) // 2 Passes
{
glRotatef(180.0f,0.0f,1.0f,0.0f); // Rotate 180 Degrees On The Y-Axis
glBegin (GL_TRIANGLES); // Begin Drawing Triangles
glColor3f (1.f, 0.f, 0.f); glVertex3f( 0.0f, 1.0f, 0.0f);
glColor3f (0.f, 1.f, 0.f); glVertex3f(-1.0f,-1.0f, 1.0f);
glColor3f (0.f, 0.f, 1.f); glVertex3f( 1.0f,-1.0f, 1.0f);
glEnd (); // Done Drawing Triangles
}
}

glFlush (); // Flush The GL Rendering Pipeline
}

MFC如何给菜单添加消息映射: 二、手工进行消息映射

上面是使用类向导工具自动进行的消息映射,下面我们通过手工的方式来实现同样的功能,以加深对消息映射的理解。

手工映射的主要步骤是:

l 在.h头文件中:声明消息响应函数、声明消息映射。如:

afx_msg void
OnPaint(); //声明消息响应函数

DECLARE_MESSAGE_MAP()
//声明消息映射

l 在.cpp文件中:进行消息映射。如:

BEGIN_MESSAGE_MAP(CMyWnd,CFrameWnd) //消息映射开始

ON_WM_PAINT()
//WM_PAINT消息映射宏

END_MESSAGE_MAP()
//结束消息映射

详见下例 (工程1Win32MFC):

使用VC6.0建立一个Win32应用程序空工程Win32MFC,按Alt +
F7调出工程设置界面,或者点击菜单-->Project-->Settings-->General-->Microsoft
Foundation Classes-->选择Use MFC in a Shared DLL,使该工程支持MFC类库。

如果使用VS2008,则还需要另外进行如下的设置:将项目属性à链接器à高级à入口点的值设置为WinMainCRTStartup

然后添加如下2个文件:(其中用到了MFC中的CWinApp和CFrameWnd类,后面会讲,这里只是为了理解消息映射,先不用理会这2个类)

头文件:

//Win32MFC.h

#include <afxwin.h>

class CMyApp : public CWinApp

{

public:

virtual BOOL InitInstance();

};

class CMyWnd : public CFrameWnd

{

public:

CMyWnd();

protected:

afx_msg void OnPaint(); //手工声明消息响应函数

DECLARE_MESSAGE_MAP() //手工声明消息映射

};

实现文件:

//Win32MFC.cpp

#include "Win32MFC.h"

CMyApp theApp;

BEGIN_MESSAGE_MAP(CMyWnd,CFrameWnd)
//消息映射开始

ON_WM_PAINT()
//WM_PAINT消息映射宏

END_MESSAGE_MAP()
//结束消息映射

BOOL CMyApp::InitInstance()

{

m_pMainWnd = new CMyWnd;

m_pMainWnd->ShowWindow(m_nCmdShow);

m_pMainWnd->UpdateWindow();

return TRUE;

}

CMyWnd::CMyWnd()

{

Create(NULL, "Win32 MFC Application");

}

//手工定义消息响应函数OnPaint(),并添加函数处理代码

void CMyWnd::OnPaint()

{

CPaintDC dc(this);

CRect rect;

GetClientRect(&rect);

dc.DrawText("大地震,海啸—天灾;核危机,利比亚战火—人祸",

-1, &rect, DT_SINGLELINE |
DT_CENTER | DT_VCENTER);

}

MFC如何添加事件处理函数: 在按钮上右键 添加事件处理函数 选择类 完成

热门标签: mfc怎么样 mfc怎么样
  • 昆明云南有几个区

    那个耳机好一点,索尼MDR-V55 AKG K430 森海塞尔CX200 AKG K324P 森海塞尔PX200 II 大家帮忙: 重低音...xb500 pp 都可以 ...

    539条评论 5286人喜欢 4126次阅读 985人点赞
  • dnf无人机钓鱼在哪

    eve关服前有多少固定玩家?平时有多少人在线?开服后预计会有多少人??: 我觉的开服的哪一个月肯定会有大量玩家,预计会超过10000-16000这个样子,然后这种现象会持续1到2个月。 ...

    574条评论 3910人喜欢 2177次阅读 588人点赞
  • 五合有几个数

    AKB48高桥南在东京秋祭第二日的最后一首歌安可曲所戴的袖章是什么?还有阿酱的胸前也戴来两个章是什么章?: beginner 每人的特殊道具这里有详细介绍http://tieba.baidu.com/f?kz=923347710 ...

    379条评论 4977人喜欢 2967次阅读 843人点赞
  • 2018年泰州医保交多少钱

    1992年农历7月12号下午3点零5分出生,五行缺什么?应该带什么饰品转运?女: 公历:1992年 08月 10日 15点5分 农历:壬申年 七月 十二 申时 八字:壬申 戊申 戊午 庚申 五行:水金 土金 土火 ...

    473条评论 3102人喜欢 1337次阅读 239人点赞
  • dnf天才厨师在哪

    请懂耳机的高手进~~索尼MDR-NC22和森海塞尔CX300-II哪个好~~回答好的话加分哦~~: 个人感觉这两个塞子都有点打劫的味道……要森海的话CX200性价比还高点,送个手电还299。卖入耳的还有舒尔AKG天龙之类的,要是只考虑防噪的话挑个便宜的吧。小耳塞自己琢磨来琢磨去很劳神的LX的我是说相对的,CX200...

    526条评论 2213人喜欢 1062次阅读 988人点赞