mfc怎么样
我的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类里面:
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如何添加事件处理函数: 在按钮上右键 添加事件处理函数 选择类 完成
-
昆明云南有几个区
那个耳机好一点,索尼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人点赞
最新热搜榜单
随机推荐榜单
- 你好,E63硬格后要锁码,12345不对怎么办呀?
- 16和24的最小公倍数是多少
- even the wise are not free from error是什么意思
- clannad的ons版要怎么玩 求大神啊!
- 手机QQ聊天记录太久了 图片裂了怎么恢复
- 怎么快速熟悉公司Android源码,我是Android实习僧
- s8铂金局怎么玩好lol
- QQ朋友圈朋友发的位置怎么点不开
- 马字旁一个必 是什么字?
- 纳拉辛的学识之书在哪里,逛了好久都没找到
- 足球场上红牌可以改判吗
- 新福克斯、新科鲁兹、新英朗,选哪个?
- hear,hare,spar,care读音不同的
- 如何用kindle学习日语
- lte-advanced 采用哪些关键技术
- BB霜,CC霜跟粉底有什么区别
- windows8.1企业版如何安装CAD2006?
- 什么软件能够把cad图中点坐标快速导出 有什么插件吗
- 求大神,帮我把Feng.在起时做成花体,或藤体字能复制那种,感谢
- 我是一个汽车美容工,就会洗车,抛光打蜡漆面护理之类的,贴膜,在沿海城市大概可以拿多少钱一个月?