各位编程高手:
你们好,我是学工商管理的学生,但是高度热爱编程,已自学了C/C++,想编一个Windows程序,但一碰VC,顿时傻了眼,太难了,特别是MFC那些代码,怎么也搞不清楚.C#倒是很容易,但我又不想困在框框架架里面.现在我的问题是:在VC方面,我是进又不能,退又不想.我是选择C#方面发展还是继续搞VC?搞VC又如何突破,望高手指教.
你们好,我是学工商管理的学生,但是高度热爱编程,已自学了C/C++,想编一个Windows程序,但一碰VC,顿时傻了眼,太难了,特别是MFC那些代码,怎么也搞不清楚.C#倒是很容易,但我又不想困在框框架架里面.现在我的问题是:在VC方面,我是进又不能,退又不想.我是选择C#方面发展还是继续搞VC?搞VC又如何突破,望高手指教.
所以跳过基础去学高级别的东西,你会觉得都是些模棱两可的东西.如果不是计算机专业毕业的,最好还是学好汇编,数据结构,算法等等知识
再来使用VC,MSDN是一个现学现卖的东西,如果基础好,初次接触VC你就完全可以
写出自己想要的东西.
#include <cstring>
using namespace std;//father class
class CEmployee
{
public:
CEmployee();
CEmployee(const char * nm)
{
strcpy(m_name, nm);
}
//core virtual function
virtual float computePay() = 0;
private:
char m_name[50];
};//d1
class CWage:public CEmployee
{
public:
CWage(const char * nm):CEmployee(nm)
{
m_hours=250.0;
m_wage=40.0;
}
void setWage(float wage)
{
m_wage=wage;
}
void setHours(float hours)
{
m_hours=hours;
} //virtual function-------有“底薪”的销售员的工资这样计算出来
virtual float computePay()
{
cout<<"CWage: "<<(m_wage * m_hours)<<endl;
}
private:
float m_wage;
float m_hours;
};//d11
class CSale : public CWage
{
public:
CSale(const char * nm): CWage(nm)
{
m_sales=m_comm=0;
}
void setCommission(float comm)
{
m_comm= comm;
}
void setSales(float sales)
{
m_sales=sales;
} //virtual func-------无“底薪”的销售员的薪水这样计算出来
virtual float computePay()
{
cout<<"CSales: "<<(CWage::computePay() + (m_comm * m_sales))<<endl;
}
private:
float m_comm, m_sales;
};//d2
class CManager : public CEmployee
{
public:
CManager(const char * nm) : CEmployee(nm)
{
m_salary = 15000.0;
}
void setSalary(float salary)
{
m_salary = salary;
} //virtuanl function
virtual float computePay()
{
cout<<"CManager: "<<m_salary<<endl;
}
private:
float m_salary;
};
//////////////////////////////////////////////////////////////////////////
int main()
{
CWage awage("我啊");
CSale asale("我啊");
CManager amanager("还是我啊"); //////////////////////////////////////////////////////////////////////////
//开一个基类型的指针数组
CEmployee * pEmployee[3]=
{
&awage,
&asale,
&amanager
};
for (int i=0; i<3; i++)
{
pEmployee[i]->computePay();
}
cin.get();
return 0;
}
比如说:virtual void--------------这里必须是void类型,MFC中与文档有关的virtual void Serialize()和与视图有关的virtual void OnDraw()都用的是:void 我上面改写成float的会输出一个奇怪的问题!!不知是为什么??非常想知道
不要以为会弄几个窗口就算学会,
C#和VC一样的难,
想学就的努力
我也不是软件或是计算机专业的,我的想法应该能给你启发!----------------------------------
搞不懂VC?那里越是要学VC!!学习MFC,你就当是打基础.
学了MFC,你对C++就有更深的领悟,这些领悟是绝非能够在C++的教程中能学到的!!我们学习繁复的东西不一定是为了应用,可全当作思维训练.
我相信很多人都学过8086,但后来却是用高级语言,而很少碰汇编!
你果你觉得"C#倒是很容易",我说C#不会容易.
我想你只是像摆弄积木玩具一样在拼装控件和.NET类,而并未深入!不要以为搞IT搞软件就崇高!
从本质上看,很多人与机械厂装配线上拧螺丝的工人并无异处.
我想你不会希望成为其中一员!---------------------------------
要学习MFC,我认为有些东西是应该先学学的!一、数据结构与算法
学编程,又怎能不学数据结构与算法!
编程不是用什么变量,不是定义什么函数,不是用什么分支循环.
而是要找到解决问题的方法,这个方法是完全可以用你的自然语言描述的.
写中文也是在编程,说话也是在编程,这真是让人觉得伟大!
但也不是找到方法就行了,而是要找到更好的,这就离不开数据结构与算法.
MFC里面应用了各种数据结构,
你可以看看MFC中RTTI的实现,链表贯穿其中!
只是用天才般的宏就能把结点串起来。二、windows程序设计当看到大量莫名其妙的API函数,或是分不出哪是API的时候,
当以为窗口类是C++类的时候,或是以为API中有C++类的时候,
当搞不懂什么叫句柄,弄不清消息从哪来到哪去的时候,
你就要投入到windows程序设计怀抱中。
下面这些东西尽可能的学一下,
操作系统,数据库原理,计算机组成原理,计算机系统与结构。惭愧的是这四门我没学过(只学过类似课程,因为所学专业的关系),汗。最后说一句,我不是什么高手,我仍在入门阶段。---------------------------------此篇也送给更多在MFC门口徘徊的人!
目前我是这样学的。学了四个月感觉有点门路了,当然VC是繁杂的,要不断的反复操练。
看了
wzb13(Zee)
大哥的帖子,
从现在开始抓紧时间学专业课!
当以为窗口类是C++类的时候,或是以为API中有C++类的时候,
当搞不懂什么叫句柄,弄不清消息从哪来到哪去的时候,
你就要投入到windows程序设计怀抱中。也许在这里你能找到答案!~~~~~