- Mugen-Hive
-
如果找不到,建议看纸质版,感觉不一样。
相关推荐
深入浅出MFC的内容简介
《深入浅出MFC》分为四大篇。第一篇提出学习MFC程序设计之前的必要基础,包括Windows程序的基本观念以及C++的高阶议题。“学前基础”是相当主观的认定,不过,基于我个人的学习经验以及教学经验,我的挑选应该颇具说服力。第二篇介绍Visual C++整合环境开发工具。本篇只不过是提纲挈领而已,并不企图取代 Visual C++使用手册。然而对于软件使用的老手,此篇或已足以让您掌握Visual C++整合环境。工具的使用虽然谈不上学问,但在视觉化软件开发过程中扮演极重角色,切莫小觑它。 第三篇介绍application framework的观念,以及MFC骨干程序,所谓骨干程序,是指Visual C++的工具AppWizard所产生出来的程序码。当然,AppWizard会根据你的选项做出不同的程序码,我所据以解说的,是大众化选项下的产品。 第四篇以微软公司附于Visual C++光碟片上的一个范例程序Scribble为主轴,一步一步加上新的功能。并在其间深入介绍Runtime Type Information(RTTI)、Dynamic Creation、Persistence(Serialization)、Message Mapping、Command Routing等核心技术。这些技术正是其他书籍最缺乏的部分。此篇之最后数章则脱离Scribble程序,另成一格。2023-07-23 18:35:091
深入浅出MFC 基础
1.c++语法要掌握.2.windows程序设计是必需的,特别是象单文档程序,如果不了解消息处理细节,你直接上mfc的封装类,光一个CFrameWnd就可以让你深陷其中,云里雾里.一些简单内容,直接跳过去就是了.3.mfc学习,一本是李久近的,还是有一个国外的<深入解析mfc>.而侯俊杰的就省省吧.1.c++法法掌握,主要是一本书<深入探索c++对象模型>.看完这本,神马语法都是浮云.rtti,为类维护一个static类,由于static对于类的多个实例来说仍然只有一个,这样就可以通过static记录类继承信息来判断父子关系.c++编译器自动实现,只要关心相应的函数就行了.mfc,刚好就是明显提供了这种类似的实现,主要用于消息映射表遍历.象com类,它是用128位数,也就是uuid用来表达一个类名称,然后通过字符串比较,来判断到底要返回嘛类,这个体会一下.2023-07-23 18:35:238
《深入浅出MFC》第一个程序问题“nmake不是内部命令或外部命令,也不是可运行程序”什么意思啊?
原因:没有配置环境方法:1.搭建环境,将下面代码保存成一个BAT 文件,例如var.bat ,便于一次性配置好编译环境(下面代码中Microsoft Visual Studio 9.0根据VS版本更改):@echo offset INCLUDE=< 你的安装位置>Microsoft Visual Studio 9.0VCinclude;< 你的安装位置>Microsoft SDKsWindowsv6.0AIncludeset LIB=< 你的安装位置>Microsoft Visual Studio 9.0VClib;< 你的安装位置>Microsoft SDKsWindowsv6.0ALibset PATH=< 你的安装位置>Microsoft Visual Studio 9.0VCin;< 你的安装位置>Microsoft Visual Studio 9.0Common7IDE;%path%echo on2.命令行下切换到var.bat 所在目录输入var 执行环境配置2023-07-23 18:35:371
MFC入门书籍
两本书我都看完了VC++深入详解主要则重于实际的项目开发,学完后马上就可能用得到。而深入深入浅出MFC主要针对MFC的底层代码、WINDOWS、消息等这里面说的比较深、比较抽象,很难理解。但是这些学会后其他的书看这就简单了。建议先学VC++深入详解,工作一段时间后再看深入浅出MFC。两本书对于软件开发界或VC++开发界都有“革命”性的作用。如果学通了,其实两本书一样。2023-07-23 18:35:474
深入浅出MFC,第148页,下图,关于命令传递仿真。
这书上说的是没有重写CMyFrameWnd::WindowProc的情况吧。因为没有定义CMyFrameWnd::WindowProc,所以直接调用父类的CFrameWnd::WindowProc函数了。如果你有定义CMyFrameWnd::WindowProc函数的话,应该是会调用CMyFrameWnd::WindowProc的。2023-07-23 18:36:101
深入浅出MFC的作者是侯捷还是候俊杰?
侯捷即就是侯俊杰, 侯捷是他的笔名.写书评时常用这个名;侯俊杰是他的原名,写书时常用这个名。不过侯捷在评那本书居然写道:“侯俊杰先生邀请我为这本书做无责任书评……”真有意思,都是台湾式的幽默惹的祸……如果古人都是有台湾式的幽默。只怕考古学家的工作也不易做。2023-07-23 18:36:185
《深入浅出MFC》《windows程序设计第五版(北京大学)》《windows核心编程第五版(清华大学)》
怎么说呢,我觉得你学得太杂乱了,你最好先确定你到你是学c++ java还是C#,这是集中完全不同的东西。不知道你的c++水平怎么样,能不能跳过很难说。这三本书讲的东西是一样的,都是MFC,而只是难度不一样,《深入浅出MFC》适合入门,建议看看已确定自己的水平。我也是学计算机的,我的账号就是我的QQ,交流交流吧.2023-07-23 18:36:312
深入浅出MFC开发环境
书是98年完稿的,是针对VC5.0&MFC4.2环境的不过这没关系,不一定要用VC5.0来学习这本书,用VC6.0或者2005、2008都可以,大同小异!2023-07-23 18:36:382
在MFC深入浅出里,在运行时类型识别里,这个CRuntimeClass* GetRuntimeClass() const 是什么意义?
CRuntimeClass* GetRuntimeClass() const 解释:调用GetRuntimeClass这个函数,返回一个CRuntimeClass指针常量CRuntimeClass是一个类,类型,当然你要说结构也勉强可以2023-07-23 18:36:471
推荐一本MFC的书
1.《精通MFC程序设计》出版社:人民邮电出版社 作者:姚领田 全书由浅入深、循序渐进地介绍了Visual C++开发环境厂MFC库的具体使用方法。全书分9篇共30章,内容涵盖了Windows-VC-MFC、MFC框架及消息处理机制、MFC通用控件和对话框编程、文档-视结构、MFC数据库编程、MFC网络编程、注册表编程、进程线程和DLL、异常与调试以及.NET MFC应用等,其中的大部分内容都配有较为丰富的实现代码。 本书的最大特色是内容丰富翔实、讲解细腻2.《深入解析MFC》 MFC Internals:Inside the Microsoft Foundation Class Architecture 出版社:中国电力出版社 作者:[美]George Shepherd,Scot Wingo著 赵剑云等译 这是一本填补“使用向导”类的VisualC++书籍、产品文档以及MFC源代码之间空隙的MFC书籍。本书是了解MFC内幕的向导,提供了关于那些没有文档记录的MFC类、实用函数和数据成员的独一无二并且透彻的信息,介绍了有用的编码技巧,并对MFC各个类之间的协作方式进行了重要的分析。 本书的第一部分包含了核心的MFC图形用户界面类以及支持它们的类,第二部分包含了像OLE这种扩展...3. 《精通MFC》 出版社:电子工业出版社 作者:刘晓华 等编著 全书共分为16章。书中介绍了掌握MFC必须具备的C++和面向对象的基础知识;详细阐述了MFC应用框架、窗口的原理、文档视图结构、消息处理机制和技术及相关实现,对于每一个技术难点,在进行理论阐述的同时,都给出了典型例子,以提高大家开发MFC应用的实践水平,拓宽程序设计思路;除了介绍传统的GDI编程接口外,还详细讲解了最新的GDI+编程接口,通过对比两种编程接口,想念读...其中第二本目前最火。2023-07-23 18:37:063
学习VC++看点什么书好?
深入浅出 MFC 第二版 (24)侯俊杰 / 1997.05 / 松岗 / 16 章,942 页 VC++深入详解(附光盘)/孙鑫作品系列 (10)余安萍 / 孙鑫 / 2006-6-1 / 电子工业出版社 / 89.0 / 平装 Programming Microsoft Visual C++6.0技术内幕(第5版修订版附光盘) (3)David J.Kruglinski, Scot Wingo, George Shepherd / 1999-12-1 / 北京希望电子出版社 / 95.0 / 平装 / 朱继满 蒋方帅 懂柱 周巍松 深入浅出MFC(第2版)(附光盘) (2)侯俊杰 / 2001-1-2 / 华中科技大学出版社 / Dissecting MFC 2nd Edition——using Visual C++5.0 & MCF4.2 / 80.0 / 平装 Visual C++ 6轻松进阶 (2)(美)(S.霍尔兹纳)Steven Holzner著 / 1999-02-01 / 电子工业出版社 / 48.0 Visual C++软件项目开发实例(软件项目开发实例丛书) (1)尹立民 / 2004-11-1 / 电子工业出版社 / 28.0 / 平装 Windows 程式设计 / Programming Windows (5/e) (1)Charles Petzold / 文魁 / 余孟学Visual C++6 教学手册 / Beginning Visual C++ 6 (1)Ivor Horton / 碁峰 / 蔡明志 Visual C++2005编程实例精粹(附光盘) (1)罗斌 / 2007-01-01 / 中国水利水电出版社 / 68.0 / 平装 Visual C++2005入门经典 / Ivor Horton"s Beginning Visual C++ 2005 (1)Ivor Horton / 2007-1-1 / 清华大学出版社 / 118.0 / 平装 / 李颂华 / 康会光 Visual C++.NET2003程序设计/高等学校21世纪计算机教材 (1)何炜 / 2004-04-01 / 冶金 / 49.0 / 平装 Essential C++ 中文版 (1)2001-8-1 / 华中科技大学出版社 / 39.8 / B. / [美]Stanley / Lippman著侯捷 Microsoft Visual C++ .NET Step by Step--Version 2003 (Step By Step (Microsoft)) (1)Julian Templeman / Andy Olsen / 2003-04-23 / Microsoft Press / USD 39.99 / Paperback2023-07-23 18:37:131
学习MFC,要装什么工具软件
一本C++语法书(如果熟悉语言可以忽略)一本win32编程的书(经典《win32核心编程》这个可以后看,稍难,主要是了解窗口、消息和线程的概念)一本MFC的书(简单入门推荐《Visual C++从入门到精通》深入学习推荐《深入浅出MFC》)根据教学需要和环境需要,下载安装VC6(多数教程的标准环境)或者VS2012(最新版本,win7下适合版本)编程环境。对应编程环境的MSDN。这个很重要,是最权威的帮助和教程。编程助手。不是必须,但大量编程很方便,注意也是对应版本的Visual Assistant X2023-07-23 18:37:233
学IT要买什么书
首先,我觉得你需要明确自己的发展方向,你想学习的课程起码串联起来是个完整的体系,以后能够帮助你就业书籍整理如下:C++开发1.《C++ Primer》:全面学习C++的必备书籍2.《Thinking in C++》:了解C++背后的一些机bai制3.《深度探索C++对象模型》:深入了解C++,也是学习COM的必经之路Windows平台入门1.《Windows程序设计》:这本书主要讲的是Windows API的使用,是Windows编程入门书籍。上册涉及到的知识基本上就够用了,时间不充裕的话阅读上册即可。2.《Win32多线程程序设计》:Windows下多线程编程必备3.《Windows核心编程》:Window平台基础知识:消息机制,内存管理,多线程,动态链接库等4.《Windows网络编程》:介绍Windows下各种网络协议的开发和并发处理模型。进阶1.《深入浅出MFC》:Windows下编程,MFC虽然有些过时,但其机制还是有学习的价值。重点学习书中提到的MFC 6大机制2.《COM本质论》:COM是Windows构建用户态的重要技术之一,Windows开发必修课,本书对COM的设计动机作了深入阐述3.《深入解析ATL》:ATL全名Active Templete Library,是用C++的模版封装了COM,这本书主要讲的是对源码分析4.《WTL White Paper》:WTL源自微软,基于ATL的一套开源模版库,主要用于界面编程和工具类的使用5.《代码大全》:这边书主要讲的是工程编码规范高级1.《深入解析Windows操作系统》:Windows大牛书籍,讲的主要是Windows操作系统的内核原理调试技术1.《软件调试》2.《Windows高级调试》3.《windows用户态程序高效排错》Linux平台Linux内核1.《Linux Kernel Development》/《Linux内核设计与实现》:Robert Love的著作,不厚的一本书,深入浅出地将Linux内核娓娓道来Linux使用和Shell编程1.《sed & awk》/《sed与awk》:sed与awk都是Linux下常用的日志分析利器Linux编程1.《Beginning Linux Programming》/《Linux程序设计》:老牌的Linux编程入门书2.《Advanced Programming in the Unix Environment》/《Unix环境高级编程》:对Unix编程环境做了细致的总结,涵盖了进程间通讯、网络通讯、文件系统等各方面的知识网络编程1.《TCP/IP Illustrated, Volume I》/《TCP/IP详解,卷一》:对理解TCP/IP协议的设计理念和协议细节有显著的帮助。2.《Unix Network Programming》/《Unix网络编程》,卷一、卷二:网络编程方面难以逾越的著作,事无巨细、深入浅出,强烈推荐对这些书目抱有100%的信心,全部掌握,融会贯通,即可打通奇经八脉,天下无双。对了,你没有基础最好从c与c++基础开始。找些基础书开始看。[C语言入门经典(第四版)].(美)霍顿.扫描版,《C++ Primer》就不错。2023-07-23 18:37:323
mfc是什么?请帮忙回答一下,谢谢。怎么才能学好?
MFC是微软出的一个图形化界面类库,是用C++对系统的API重新封装的一个库。微软的API都是用C写的,如果你了解C的话,就应该知道,面向过程的语言写的函数,都是全局的,随时都可以使用任何一个函数。但是面向过程的语言,只有对象才能调用自身内部的成员函数,比如A类对象是不能调用B类对象的成员函数一样。对于做底层开发的话,面向过程的语言比较灵活,不受到对象的限制。但是如果你要做一个大型软件的话,对象、函数之间的关系会比较混乱,不方便管理和使用,开发效率比较低效。可以说现在的软件基本都是用面向对象的语言为主体的。正是这个原因,微软从新将API进行封装,利用C++的特性封装成了一个第三方库。把面向过程的库转成了一个面向对象的库,通过加入一些可复用的框架,大大减轻了开发负担。但是因为是浅层封装,简单的说就是封装到C++的类中,然后这个类的成员再间接调用这些函数,所以有些比较复杂的东西,最后还是要回到这些API的问题上。如果你只是想运用的话,单单学MFC就可以了,了解MFC的框架,就可以写一些不错的图形界面软件。但是如果你想深入,把一个图形界面的软件做得更好,更完善,就必须回到API的学习上,了解windows程序的原理,调用机制等等,MFC主要学的还是可复用的框架。不用了解API本身,是了解API的工作机制,API的功能都可以在MSDN上查到,没必要去记API是做什么的如果要学好MFC,建议你先看看《windows程序设计(第五版)》,先了解windows程序原理。这本书的作者是微软的核心职员,对windows程序设计的剖析非常独特,这本书被称为是windows程序设计的圣经。不过可惜作者已经投入到C#的怀抱,已经十多年没更新了,但windows的核心原理还是一直不变的。看完这本,你就可以开始看关于MFC的书,推荐看《深入浅出MFC》。如果你看了前面一本,你会发现最开始讲windows程序设计的原理时都是上门那本里出现过的。不过嘛MFC是建立在C++基础上的,如果你对C++的类机制(继承,虚函数等等)不是很了解的话,就暂时不要学MFC了,先去把C++基础看熟了再来。MFC大量运用了这些特性,特别是虚函数什么的。如果没有扎实的基础,很容易搞晕。2023-07-23 18:37:405
关于台湾技术作家侯捷老师的书籍
译著作品 《无责任书评一、二、三》、 《深入浅出MFC》、 《多型与虚拟》、 《Word排版艺术》 《STL源码剖析》 翻译 《Inside the C++ Object Model》 《Inside Visual C++》 《Windows 95 System Programming Secrets》 《System Programming for Windows 95》 《Essential COM》、《ActiveX controls Inside Out》 《Multithreading Applications in Win32》 《The Java Programming Language, 4/e》 《Refactoring: Improving The Design of Existing Code》 《C++ Coding Standards: 101 Rules, Guidelines, and Best Practices》 《Refactoring to Patterns》 《C++ Primer, 4/e 》 《The Art of C++》 《The Art of Java》 《Exceptional C++》 《C++ Templates: The Complete Guide》 《Practical Java Programming Language Guide》 《Modern C++ Design》 《The C++ Standard Library: A Tutorial and Reference》麻烦采纳,谢谢!2023-07-23 18:37:551
侯俊杰的著作
《虚拟内存: 观念, 设计, 与实作》、 《Windows 程式设计》、 《内存管理与多工》、 《深入核心 - Windows 操作系统》、 《Windows 内存管理 - 系统篇》、 《DOS/Windows 虚拟机器作业环境》、 《Windows DDE 动态资料交换》、 《Visual C++ 面向对象 MFC 程式设计(基础篇)》、 《Visual C++ 面向对象 MFC 程式设计(实用篇) 《多型与虚拟 -- 面向对象的精髓》、 《无责任书评一、二、三》、 《深入浅出MFC》、 《多型与虚拟》、 《Word排版艺术》、 《STL源码剖析》2023-07-23 18:38:021
推荐visual C++学习用书
要学vc++的话,建议你看《Visual C++2008入门经典》。《Visual C++2008入门经典》系编程语言先驱者Ivor Horton的经典之作,是C++编程方面最畅销的图书品种之一。不仅涵盖了Visual C++ 2008编程知识,还全面介绍了标准C++语言和C++/CLI。《Visual C++2008入门经典》延续了Ivor Horton讲解编程语言的独特方法,从中读者可以学习Visual C++ 2008的基础知识,了解如何使用MFC进行本地ISO/ANSI C++ Windows应用程序开发以及如何使用Windows Forms进行C++/CLI Windows应用程序开发,并全面掌握在MFC和Windows Forms中访问数据源的技术。《Visual C++2008入门经典》各章后面的习题将有助于读者温故而知新,并尽快成为C++高效程序员。 ===ps:其实你说觉得看vc++比较辛苦,很重要的原因也是你的c/c++基础不好。恰好这本书也有很好的教c/c++。希望回答可以帮到你。2023-07-23 18:38:164
我现在是一名刚上研二的研究生,现在在学校C++编程,我只是把c++的基本知识看了遍,想以后走软件这条路,
我同意第一个人的回答,请选择他,但是因为你是研究生,所以我特意补充一下:我是计算机专业的,大学基本学了c,学了非常非常基础的c++,学了数据结构。如果你要学c++的话,我的建议是语言做起,mfc就不要深入了解了,那个东西是框架,直接拿来用比较适合,不太建议深入研究,耗时,而且效果可能不大。我所说的语言做起就是你是在学c++,学它的思想,而不是在学c++语法。1,先找一本最基础的c++语法书,例子抄抄,习题做做,大概了解各什么东西。2,其次看c++ premier,书前面部分深入的看,后面高级特性粗略的看,了解c++的各种特性,它的概况面非常广,很多特性你可能记不住,不过没关系,用的时候知道在哪里去书中找就可以了,那个基本搞定了建议看些c++技巧的书,effective c++, more effective c++,这两个讲述的是技巧,是写c++代码应该遵奉的一些规范,当前你可以不遵守,不过有很多规范还是有 很大的借鉴意义,前人走过的路总结的经验可以让我少走一些弯路。3,再次,看你是选择windows还是linux平台,如果选择windows平台,那么肯定离开不了mfc了,对于mfc,我是深入了解过的,深入浅出mfc,详述mfc的rtti,message map等等特性,它对宏的运用真是让我叹为观止,不过即使我很仔细的理解完了,我还是没能很好的运用宏,对于界面那就更容易了,api记不住没有关系,上网查,等用的多了你就记住了。对于界面的东西不用过多的关注,最重要的是运行的逻辑,而不在乎界面的呈现,那个如何呈现是设计的工作。选择linux平台,有qt和gtk可以选用,也框架,也有非框架的直接的api。我现在做的主要是服务器开发,很少涉及到界面,我们的做的程序界面只用来测试使用,不会部署到服务器上,客户端才会需要很多的界面,不用担心那些界面的各种api,有帮助文档,百度,google,它们都是小菜。做几个简单的界面程序,了解一下基本步骤,基本界面单元的使用,像什么button,textview,scrollview,dialog等等就可以了,没有必要在这个方面下功夫,真的有面试人员问你,会mfc吗,你也可以告诉他你会,这足够了,因为没有公司会强迫让你了解界面框架的机制,我们是框架使用者。4,忘了说一点,不管怎么样,数据结构要会,它独立于语言,链表,树,栈,队列的思想都要有,图用的少,就不必了。常用的算法要知道,当你学数据结构的时候,应该会有所涉及,有一本c++数据结构与算法描述,可以看看,东西很多,不求全部,但求精特定的几个方面。5,再高层次点可以学习设计模式,那个是真正的思想,独立于语言。计算机网络上层的ip,传输层和应用层一定要懂,不懂网络,现在基本没法玩。数据库的基本sql要会一点,不求你了解什么叫第一,第二,第三范式,但是要会select,update基本sql操作。6,说了很多,希望没有打击你,书籍太多了,不想一下子都涌给你,在你提高的过程中,你就会慢慢感觉很多语言知识都溶于一点,万变不离其宗,以后java,客户端的android和ios,都不会难倒你。2023-07-23 18:38:383
谁能给我解释一下这句话是什么意思啊?
这句话大意是:天地做了很多好事,但,从来都不用人们去赞赏它,在它的眼里,自己的所做都是应该的,世界上的万物都是平等的,这万物中,当然也包括了“人”。所以,它认为,做好事应不求回报,人也一样。但是,我们人,做好事,大都是需要一定的条件的,真正是心甘情愿帮助他人的人很少。这句话,是老子根据他自己对“道”的感悟,而说的一句话。老子希望,我们人,都能有做好事不求回报的广大胸襟,真正做到“海纳百川,有容乃大”。2023-07-23 18:38:462
请问要想学计算机编程,首先需要学什么?
毫无疑问是先C语言,一般都是C精通了之后再继续深造java、C++或者其他的。C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。扩展资料:编程是编写程序的中文简称,就是让计算机代为解决某个问题,对某个计算体系规定一定的运算方式,使计算体系按照该计算方式运行,并最终得到相应结果的过程。为了使计算机能够理解人的意图,人类就必须将需解决的问题的思路、方法和手段通过计算机能够理解的形式告诉计算机,使得计算机能够根据人的指令一步一步去工作,完成某种特定的任务。这种人和计算体系之间交流的过程就是编程。编程:设计具备逻辑流动作用的一种“可控体系”【注:编程不一定是针对计算机程序而言的,针对具备逻辑计算力的体系,都可以算编程。】参考资料:百度百科——C语言2023-07-23 18:39:0713
如何自学编程
要熟悉编程范式,尤其是面向过程及面向对象这两种;要广泛阅读,多用编译器及IDE(网上有许多免费的)练习编程。选择一种编程语言。初学者一定要从主流语言开始学习,比如中级语言C和C++。这两种语言是任何一名合格、专业的程序员都必须掌握的,因为它们称得上是软件开发界的主流。但是最好不要从高级语言开始学,如Java,因为这些语言对于初学者来说难度未免太高(高级语言可以以后再学,但是C语言和C++应该作为你的基础)。然而对于完完全全的门外汉的来说,可能C和C++都有点困难,那么你也可以从Python开始学,这种语言被大家广泛认为是适合初学者的。2023-07-23 18:40:104
介绍几本windows编程经典书籍,VC 方面的,或者Platform SDK方面的
1.Charles Petzold 著,方敏 译,清华大学出版社出版的《windows程序设计》。2.Jeffrey Richter著,葛子昂 译,清华大学出版社出版的《Windows核心编程》。3.Jeff Prosise著,北京博彦科技有限责任公司 译,清华大学出版社出版的《MFC Windows程序设计》。上面3本书结合着看:第1本是用Windows API编程,有助于了解Windows程序框架,以及许多重要的API,个人认为是学习windows程序设计的很好入门书籍,此书知名度和评价都非常之高。第3本是MFC程序设计的经典书籍。学windows程序设计,MFC不可不学,此书可以结合第1本书互相理解。第2本是讲windows程序设计的核心技术,像进程线程、内存管理、DLL、内核对象。可以用来查阅参考,是一本需要用时间和经验去消化的书。2023-07-23 18:40:534
请教MFC制作常规DLL的过程
找了一个,讲得还可以:一般的,在介绍Windows编程的书中讲述DLL的有关知识较多,而介绍MFC的书则比较少地提到。即使使用MFC来编写动态链接库,对于初步接触DLL的程序员来说,了解DLL的背景知识是必要的。另外,MFC提供了新的手段来帮助编写DLL程序。所以,本节先简洁的介绍有关概念。DLL的背景知识 静态链接和动态链接 当前链接的目标代码(.obj)如果引用了一个函数却没有定义它,链接程序可能通过两种途径来解决这种从外部对该函数的引用:静态链接 链接程序搜索一个或者多个库文件(标准库.lib),直到在某个库中找到了含有所引用函数的对象模块,然后链接程序把这个对象模块拷贝到结果可执行文件(.exe)中。链接程序维护对该函数的所有引用,使它们指向该程序中现在含有该函数拷贝的地方。动态链接 链接程序也是搜索一个或者多个库文件(输入库.lib),当在某个库中找到了所引用函数的输入记录时,便把输入记录拷贝到结果可执行文件中,产生一次对该函数的动态链接。这里,输入记录不包含函数的代码或者数据,而是指定一个包含该函数代码以及该函数的顺序号或函数名的动态链接库。当程序运行时,Windows装入程序,并寻找文件中出现的任意动态链接。对于每个动态链接,Windows装入指定的DLL并且把它映射到调用进程的虚拟地址空间(如果没有映射的话)。因此,调用和目标函数之间的实际链接不是在链接应用程序时一次完成的(静态),相反,是运行该程序时由Windows完成的(动态)。这种动态链接称为加载时动态链接。还有一种动态链接方式下面会谈到。动态链接的方法 链接动态链接库里的函数的方法如下:加载时动态链接(Load_time dynamic linking) 如上所述。Windows搜索要装入的DLL时,按以下顺序:应用程序所在目录→当前目录→Windows SYSTEM目录→Windows目录→PATH环境变量指定的路径。运行时动态链接(Run_time dynamic linking) 程序员使用LoadLibrary把DLL装入内存并且映射DLL到调用进程的虚拟地址空间(如果已经作了映射,则增加DLL的引用计数)。首先,LoadLibrary搜索DLL,搜索顺序如同加载时动态链接一样。然后,使用GetProcessAddress得到DLL中输出函数的地址,并调用它。最后,使用FreeLibrary减少DLL的引用计数,当引用计数为0时,把DLL模块从当前进程的虚拟空间移走。输入库(.lib): 输入库以.lib为扩展名,格式是COFF(Common object file format)。COFF标准库(静态链接库)的扩展名也是.lib。COFF格式的文件可以用dumpbin来查看。输入库包含了DLL中的输出函数或者输出数据的动态链接信息。当使用MFC创建DLL程序时,会生成输入库(.lib)和动态链接库(.dll)。输出文件(.exp) 输出文件以.exp为扩展名,包含了输出的函数和数据的信息,链接程序使用它来创建DLL动态链接库。映像文件(.map) 映像文件以.map为扩展名,包含了如下信息:模块名、时间戳、组列表(每一组包含了形式如section::offset的起始地址,长度、组名、类名)、公共符号列表(形式如section::offset的地址,符号名,虚拟地址flat address,定义符号的.obj文件)、入口点如section::offset、fixup列表。lib.exe工具 它可以用来创建输入库和输出文件。通常,不用使用lib.exe,如果工程目标是创建DLL程序,链接程序会完成输入库的创建。更详细的信息可以参见MFC使用手册和文档。链接规范(Linkage Specification ) 这是指链接采用不同编程语言写的函数(Function)或者过程(Procedure)的链接协议。MFC所支持的链接规范是“C”和“C++”,缺省的是“C++”规范,如果要声明一个“C”链接的函数或者变量,则一般采用如下语法:#if defined(__cplusplus)extern "C"{#endif//函数声明(function declarations)…//变量声明(variables declarations)#if defined(__cplusplus)}#endif所有的C标准头文件都是用如上语法声明的,这样它们在C++环境下可以使用。修饰名(Decoration name) “C”或者“C++”函数在内部(编译和链接)通过修饰名识别。修饰名是编译器在编译函数定义或者原型时生成的字符串。有些情况下使用函数的修饰名是必要的,如在模块定义文件里头指定输出“C++”重载函数、构造函数、析构函数,又如在汇编代码里调用“C””或“C++”函数等。修饰名由函数名、类名、调用约定、返回类型、参数等共同决定。调用约定 调用约定(Calling convention)决定以下内容:函数参数的压栈顺序,由调用者还是被调用者把参数弹出栈,以及产生函数修饰名的方法。MFC支持以下调用约定:_cdecl 按从右至左的顺序压参数入栈,由调用者把参数弹出栈。对于“C”函数或者变量,修饰名是在函数名前加下划线。对于“C++”函数,有所不同。如函数void test(void)的修饰名是_test;对于不属于一个类的“C++”全局函数,修饰名是?test@@ZAXXZ。这是MFC缺省调用约定。由于是调用者负责把参数弹出栈,所以可以给函数定义个数不定的参数,如printf函数。_stdcall 按从右至左的顺序压参数入栈,由被调用者把参数弹出栈。对于“C”函数或者变量,修饰名以下划线为前缀,然后是函数名,然后是符号“@”及参数的字节数,如函数int func(int a, double b)的修饰名是_func@12。对于“C++”函数,则有所不同。所有的Win32 API函数都遵循该约定。_fastcall 头两个DWORD类型或者占更少字节的参数被放入ECX和EDX寄存器,其他剩下的参数按从右到左的顺序压入栈。由被调用者把参数弹出栈,对于“C”函数或者变量,修饰名以“@”为前缀,然后是函数名,接着是符号“@”及参数的字节数,如函数int func(int a, double b)的修饰名是@func@12。对于“C++”函数,有所不同。未来的编译器可能使用不同的寄存器来存放参数。thiscall 仅仅应用于“C++”成员函数。this指针存放于CX寄存器,参数从右到左压栈。thiscall不是关键词,因此不能被程序员指定。naked call 采用1-4的调用约定时,如果必要的话,进入函数时编译器会产生代码来保存ESI,EDI,EBX,EBP寄存器,退出函数时则产生代码恢复这些寄存器的内容。naked call不产生这样的代码。naked call不是类型修饰符,故必须和_declspec共同使用,如下:__declspec( naked ) int func( formal_parameters ){// Function body}过时的调用约定 原来的一些调用约定可以不再使用。它们被定义成调用约定_stdcall或者_cdecl。例如:#define CALLBACK __stdcall#define WINAPI __stdcall#define WINAPIV __cdecl#define APIENTRY WINAPI#define APIPRIVATE __stdcall#define PASCAL __stdcall表7-1显示了一个函数在几种调用约定下的修饰名(表中的“C++”函数指的是“C++”全局函数,不是成员函数),函数原型是void CALLTYPE test(void),CALLTYPE可以是_cdecl、_fastcall、_stdcall。表7-1 不同调用约定下的修饰名调用约定 extern “C”或.C文件 .cpp, .cxx或/TP编译开关 _cdecl _test ?test@@ZAXXZ _fastcall @test@0 ?test@@YIXXZ _stdcall _test@0 ?test@@YGXXZ MFC的DLL应用程序的类型 静态链接到MFC的规则DLL应用程序 该类DLL应用程序里头的输出函数可以被任意Win32程序使用,包括使用MFC的应用程序。输入函数有如下形式:extern "C" EXPORT YourExportedFunction( );如果没有extern “C”修饰,输出函数仅仅能从C++代码中调用。DLL应用程序从CWinApp派生,但没有消息循环。动态链接到MFC的规则DLL应用程序 该类DLL应用程序里头的输出函数可以被任意Win32程序使用,包括使用MFC的应用程序。但是,所有从DLL输出的函数应该以如下语句开始:AFX_MANAGE_STATE(AfxGetStaticModuleState( ))此语句用来正确地切换MFC模块状态。关于MFC的模块状态,后面第9章有详细的讨论。其他方面同静态链接到MFC的规则DLL应用程序。扩展DLL应用程序 该类DLL应用程序动态链接到MFC,它输出的函数仅可以被使用MFC且动态链接到MFC的应用程序使用。和规则DLL相比,有以下不同:它没有一个从CWinApp派生的对象; 它必须有一个DllMain函数; DllMain调用AfxInitExtensionModule函数,必须检查该函数的返回值,如果返回0,DllMmain也返回0; 如果它希望输出CRuntimeClass类型的对象或者资源(Resources),则需要提供一个初始化函数来创建一个CDynLinkLibrary对象。并且,有必要把初始化函数输出。 使用扩展DLL的MFC应用程序必须有一个从CWinApp派生的类,而且,一般在InitInstance里调用扩展DLL的初始化函数。 为什么要这样做和具体的代码形式,将在后面9.4.2节说明。MFC类库也是以DLL的形式提供的。通常所说的动态链接到MFC 的DLL,指的就是实现MFC核心功能的MFCXX.DLL或者MFCXXD.DLL(XX是版本号,XXD表示调试版)。至于提供OLE(MFCOXXD.DLL或者MFCOXX0.DLL)和NET(MFCNXXD.DLL或者MFCNXX.DLL)服务的DLL就是动态链接到MFC核心DLL的扩展DLL。其实,MFCXX.DLL可以认为是扩展DLL的一个特例,因为它也具备扩展DLL的上述特点。DLL的几点说明 DLL应用程序的入口点是DllMain。 对程序员来说,DLL应用程序的入口点是DllMain。DllMain负责初始化(Initialization)和结束(Termination)工作,每当一个新的进程或者该进程的新的线程访问DLL时,或者访问DLL的每一个进程或者线程不再使用DLL或者结束时,都会调用DllMain。但是,使用TerminateProcess或TerminateThread结束进程或者线程,不会调用DllMain。DllMain的函数原型符合DllEntryPoint的要求,有如下结构:BOOL WINAPI DllMain (HANDLE hInst, ULONG ul_reason_for_call,LPVOID lpReserved){switch( ul_reason_for_call ) {case DLL_PROCESS_ATTACH:...case DLL_THREAD_ATTACH:...case DLL_THREAD_DETACH:...case DLL_PROCESS_DETACH:...}return TRUE;}其中:参数1是模块句柄;参数2是指调用DllMain的类别,四种取值:新的进程要访问DLL;新的线程要访问DLL;一个进程不再使用DLL(Detach from DLL);一个线程不再使用DLL(Detach from DLL)。参数3保留。如果程序员不指定DllMain,则编译器使用它自己的DllMain,该函数仅仅返回TRUE。规则DLL应用程序使用了MFC的DllMain,它将调用DLL程序的应用程序对象(从CWinApp派生)的InitInstance函数和ExitInstance函数。扩展DLL必须实现自己的DllMain。_DllMainCRTStartup 为了使用“C”运行库(CRT,C Run time Library)的DLL版本(多线程),一个DLL应用程序必须指定_DllMainCRTStartup为入口函数,DLL的初始化函数必须是DllMain。_DllMainCRTStartup完成以下任务:当进程或线程捆绑(Attach)到DLL时为“C”运行时的数据(C Runtime Data)分配空间和初始化并且构造全局“C++”对象,当进程或者线程终止使用DLL(Detach)时,清理C Runtime Data并且销毁全局“C++”对象。它还调用DllMain和RawDllMain函数。RawDllMain在DLL应用程序动态链接到MFC DLL时被需要,但它是静态的链接到DLL应用程序的。在讲述状态管理时解释其原因。DLL的函数和数据 DLL的函数分为两类:输出函数和内部函数。输出函数可以被其他模块调用,内部函数在定义它们的DLL程序内部使用。虽然DLL可以输出数据,但一般的DLL程序的数据仅供内部使用。DLL程序和调用其输出函数的程序的关系 DLL模块被映射到调用它的进程的虚拟地址空间。DLL使用的内存从调用进程的虚拟地址空间分配,只能被该进程的线程所访问。DLL的句柄可以被调用进程使用;调用进程的句柄可以被DLL使用。DLL使用调用进程的栈。DLL定义的全局变量可以被调用进程访问;DLL可以访问调用进程的全局数据。使用同一DLL的每一个进程都有自己的DLL全局变量实例。如果多个线程并发访问同一变量,则需要使用同步机制;对一个DLL的变量,如果希望每个使用DLL的线程都有自己的值,则应该使用线程局部存储(TLS,Thread Local Strorage)。输出函数的方法 传统的方法 在模块定义文件的EXPORT部分指定要输入的函数或者变量。语法格式如下:entryname[=internalname] [@ordinal[NONAME]] [DATA] [PRIVATE]其中:entryname是输出的函数或者数据被引用的名称;internalname同entryname;@ordinal表示在输出表中的顺序号(index);NONAME仅仅在按顺序号输出时被使用(不使用entryname);DATA表示输出的是数据项,使用DLL输出数据的程序必须声明该数据项为_declspec(dllimport)。上述各项中,只有entryname项是必须的,其他可以省略。对于“C”函数来说,entryname可以等同于函数名;但是对“C++”函数(成员函数、非成员函数)来说,entryname是修饰名。可以从.map映像文件中得到要输出函数的修饰名,或者使用DUMPBIN /SYMBOLS得到,然后把它们写在.def文件的输出模块。DUMPBIN是VC提供的一个工具。如果要输出一个“C++”类,则把要输出的数据和成员的修饰名都写入.def模块定义文件。在命令行输出 对链接程序LINK指定/EXPORT命令行参数,输出有关函数。使用MFC提供的修饰符号_declspec(dllexport) 在要输出的函数、类、数据的声明前加上_declspec(dllexport)的修饰符,表示输出。MFC提供了一些宏,就有这样的作用,如表7-2所示。表7-2 MFC定义的输入输出修饰符宏名称 宏内容 AFX_CLASS_IMPORT __declspec(dllexport) AFX_API_IMPORT __declspec(dllexport) AFX_DATA_IMPORT __declspec(dllexport) AFX_CLASS_EXPORT __declspec(dllexport) AFX_API_EXPORT __declspec(dllexport) AFX_DATA_EXPORT __declspec(dllexport) AFX_EXT_CLASS #ifdef _AFXEXTAFX_CLASS_EXPORT#elseAFX_CLASS_IMPORT AFX_EXT_API #ifdef _AFXEXTAFX_API_EXPORT#elseAFX_API_IMPORT AFX_EXT_DATA #ifdef _AFXEXTAFX_DATA_EXPORT#elseAFX_DATA_IMPORT AFX_EXT_DATADEF 像AFX_EXT_CLASS这样的宏,如果用于DLL应用程序的实现中,则表示输出(因为_AFX_EXT被定义,通常是在编译器的标识参数中指定该选项/D_AFX_EXT);如果用于使用DLL的应用程序中,则表示输入(_AFX_EXT没有定义)。要输出整个的类,对类使用_declspec(_dllexpot);要输出类的成员函数,则对该函数使用_declspec(_dllexport)。如:class AFX_EXT_CLASS CTextDoc : public CDocument{…}extern "C" AFX_EXT_API void WINAPI InitMYDLL();这几种方法中,最好采用第三种,方便好用;其次是第一种,如果按顺序号输出,调用效率会高些;最次是第二种。在“C++”下定义“C”函数,需要加extern “C”关键词。输出的“C”函数可以从“C”代码里调用。2023-07-23 18:41:002
自学计算机编程应该看些什么书
一:第一阶段 C语言-------《C语言设计》 作者:谭浩强 大多数人都推荐谭浩强这本书,谭浩强的C语言程序设计,我觉得更适合当教科书,主要是篇幅没有那么大,书本的内容不是很全,由老师带入门是最好的。 《C Primer Plus》第五版 作者:Stephen Prata 这本书比较厚,内容也比较基础,扩展的也比较广,自学容易上手,唯一的缺陷在于它是外国人编写,而国内的翻译往往让人难以满意,如果你有较好的英语水平,最好阅读英文版的。 《C语言入门经典》第四版 作者:Ivor Horton 二:第二阶段 这一阶段看个人主攻的方向了,安卓一般就JAVA,PC游戏、软件C++,也有推荐C#,这些都是主流语言,其他语言要看个人爱好与发展。 面向对象的语言,一般懂一门,之后要转其他语言也很容易的,其实思想都差不多,主要的不同在于语法。C#容易上手,一个月入门,一年精通,而C++却有点难,一年入门,二十年也未必敢说自己精通。如果有时间,可以了解一下汇编语言。 C++ Primer, 4rd Edition (入门类: C++ Primer, 4rd Edition Thinking in C++, 2nd Edition The C++ Standard Library: A Tutorial and Reference 进阶类: The C++ Programming Language, Special Edition The Design and Evolution of C++ Inside C++ Object Model C++ Templates: The Complete Guide STL 源码剖析 Generic Programming and the STL Modern C++ Design: Generic Programming and Design Patterns Applied 应用技巧类: Effective C++, 2nd Editon More Effective C++ Exceptional C++ More Exceptional C++ Effective STL Ruminations on C++) 三:第三阶段 API/SDK------------- 《windows程序设计》(Jeff Prosise) 这书主要是开发Windows软件要深入研读的,毕竟是WindowsAPI。如果是主攻C++,那么这本书你可以大概略读一遍,不用过多的深入追究,QT才是C++主要深入思虑的关键。 四:第四阶段 MFC----《VC++技术内幕》、《深入浅出MFC》及视频教程孙鑫 VC++6.0 如果是C++,QT是要重点学习的对象。 五:第五阶段 COM/DCOM/ATL/COM+---------《COM技术内幕》 未知阶段: 《数据结构》,《算法导论》这些基本是编程的核心了,编程的很大情况都依赖于算法的实现,这个两门基本要深入研究,这是决定编程能力的核心标准。 如果不弄底层的话,《操作系统原理》可以简单地了解。2023-07-23 18:41:091
我想学习编程,要从哪开始学起?
学习编程可以从c语言开始学,方法如下。零基础自学编程入门指南:一:确定一个方向,编程语言太多了:java、C++、python、PHP、C等,需要确定方向,从基础学起,建议零基础学编程的小伙伴从C语言开始学起,C语言入门比较简单,会提升自信心。二:自学编程入门一定要阶段性的看到成果,这个“成果”并不是在“黑匣子”里面实现,要在用户展现界面呈现,很容易提升信心。三:视频和图书同步查阅,网上的是鱼龙混珠,建议找一些免费的学编程入门的初级视频进行学习,最好是成套视频,如果条件允许也可以购买一套编程入门的视频资料。四:计算机编程入门一定要理论和实践相结合只有这样才能真正学好五:如果你有会编程的好朋友,多请教请教他,能让他带带你就是最好不过的了。首先确定学习什么、从什么学起,然后配置好电脑编译环境,这样为我们接下来的学习和动手实践会带来方便。现在基础的编程语言是C语言,建议把C语言学习作为基础语言。在学习计算机编程语言的时候需要在网上找到相应的课程,网上有很多免费的C语言课程,建议选择一套进行学习,阶段性的回顾复习。其次,多学多练,计算机编程只有多打代码,才能从中找到规律。期初的时候可以不明白只要跟着老师一起打代码一起多练习,慢慢就会由记住理解,如果是想从事编程的同学,可以把写过的代码存到自己的文本文档里,这也就能知道我们的代码量,为以后找工作做准备。学编程入门很关键,如果你找到一个好方法入门学习很轻松,如果方法错了,很容易半途而废,C语言编程学会后,完全可以在学习python、java等新的编程语言也无所谓,它们有很多相通之处,可以相互借鉴,互相拿来应用。2023-07-23 18:41:2013
深入学习C语言的具体步骤
①、对于你能写这么长的问题描述,说明你很认真。②、你的目的性较强,但是你也想有更加明确的目标,我可以给你讲一下怎么自己去寻找目标和路线以及怎样学习。③、计算机专业领域一共有几个大方向,十几个分支方向,而每个分支方向又有几十个小方向,每一个方向的深入学习与熟练到一定火候都不是一朝一夕,互相之间也不是完全没联系的,但是你现在就应该选择一个大方向并在其中的一个小方向内深入(为什么要这么早就选择具体的分支方向?后面说)。④、这里列出计算机的几个大方向(非编程开发类的我就不说了): 基本方向: 1、单片机、嵌入式方向 2、网络编程:涉及到服务器程序、客户端开发、脚本设计等。 3、系统编程:基础API开发、桌面开发、系统程序开发、服务程序 4、图形学:3D、2D、图像识别、人脸识别 5、音频:语音识别、音频解码、音频软件 6、编译原理:编译器设计、脚本解释器、虚拟机、非自然语言翻译系统 7、应用层开发:利用高层语言去开发表层应用 8、安全:反工程、病毒、反病毒、木马、反木马、软件破解、软件加壳 附加方向: 8、人工智能:遗传算法、神经网络、灰色系统等等 9、游戏设计:各种游戏引擎设计以及业务逻辑设计等⑤、基本方向是你一定要选的,附加方向只是基于基本方向的一些锦上添花,但是不管你怎么选,最开始某些东西一定要深入而不是只是懂就够(当然你对自己要求似乎不会很低),我把这个列出来: 数据结构:下面其他理论的基础。 操作系统原理:理解操作系统的架构和细节,你才能对以后关于多线程、文件管理、内存管理、指令优先级等有一个正确理解和运用。 编译原理:能够升华你对计算机编程语言的理解,对以后出现的各种编译、解释、兼容、移植、优化、并发与并行算法等有一个深入理解。 数据库系统原理:这个是进入公司都要会的,也是大型软件开发的基础。 软件工程:这个是你能够在经验不足还能保证大项目正常完成的理论基础。 网络技术:这个是必须学的,因为目前几乎没有一款装几率很高的软件或者平台跟网络无关。 数学的话,主要是:离散数学、线性代数、高等数学、计算机图形学、概率论以上几个基础就是你成为一个融汇各个主要分支牛人必须学的(当然不是指理论,而是理论+实践编码能力)⑥以上都是大的基础,要一一攻破并深入学习,虽然网络时代计算机专业知识爆炸式的增长,但是以上几个基础掌握后,会发现,以后的什么新的理论和技术都是基于这些大基础,你就很容易理解了。⑦我为什么开头不讲你要具体学什么怎么顺序学呢?因为那些技术你要掌握的话,根本可以自己解决,但是如果你由于兴趣,沉迷于一些自己可见的小范围技术的话,那么毕业后虽然也能找到不错的工作,薪水也可能高,但是不能成为一个大牛。现在才开始讲学习顺序,虽然你说不要推荐书,不过我还是要用书来做顺序。 C语言是可以写很多核心和高级的东西,而不只是小东西,但是从你代码来看,居然用到了 goto,我不是说你那些程序用到GOTO有什么不好,而是一定要避免用GOTO,goto是错误之源,如果你有什么内容非要用到goto才能写到,说明你的编码技巧还有不少提高空间。 你的学习顺序应该是: C:做一个超级马里奥出来,并能够读取文本脚本来更新关卡。 C++:写一个2D图形引擎,封装掉细节,实现面向对象设计和可复用设计,并且用到《设计模式》中提到的一些设计模式,这样才能算对C++有一个很好的掌握。 MFC:MFC技术虽然近期已经冷下来了,但是你能熟练掌握它,才能证明你的C++OO技术够纯熟,严格证明你掌握了MFC很简单,你只要用MFC做出一个杀毒引擎就差不多了。推荐的书有《深入浅出MFC》。 《Windows程序设计》:和MFC不同的是,用的是windows核心SDK,也就是API,这本书学完后,你才能从操作系统层面上算掌握了win32 平台下的机理(其实win64和win32大部分机理类似)。 C#:C#里集合了当代和前沿计算机科学里最先进的一些语法(虽然执行效率一直被人质疑),但是你学完C#并深入后,至少能够算是对计算机语言有一个更加深刻的理解了。如何证明你C#学的不错了?也很简单,再次写一个随便什么游戏,比如俄罗斯方块。如果更加证明自己呢?用它写一个P2P网络对战游戏。 (如果你注意的话,会发现我说的学习顺序都是沿着语言和某些技术的,为什么呢?因为这些语言和技术涉及到特定的领域技术和计算机理论思想,比如【真正】学完了C#的话,就不单指学完了C#,而是把多种语言范式都学习了一遍,以及现代的程序开发思维(因为里面用到了很多让你一劳永逸的技术)) 以上5个步骤都是基础大步骤,要解决的话要没1-2年应该不够。 与此同时,要尽快选出文中你感兴趣的方向作为3-5年的长期方向,不要担心过早选择分支方向会有什么损失,因为计算机很多分支是相通的,只有你把分支方向深入进去,才能真正理解很多理论的实践意义。并且一旦你在某个分支领域形成了较强的优势(比如,到公司里只有你这方面最强),那么你就是稀缺人才。 关于大方向的步骤就不说了,你主要就是要把我说的这几个基础步骤先解决,同时平时要注重大方向理论结合实际去编码和开发。2023-07-23 18:42:429
怎样成为计算机高手
看看这个,你就明白了,希望对你有帮助!一、为何要学编程?每个人的动机不一样。大致有:1、为了找个好工作;或为了有更好的机会和更好的发展。 2、看到别人超厉害,所以也想学。 3、实际工作中很多场合需要。 4、从小就立志做个程序员,做软件工程师。 5、振兴中国的软件事业。 。。。。。。================================================二、如何学编程?1、多看好书。 差书误人子弟,不但浪费时间和精力,而且打击人的信心,差书使人很久都不会,让会让人怀疑自已的学习能力。 现在的书很多,但好书很少,特别是被大家公认很有价值的好书,更是少之又少。历经多年时间考验和市场风雨不残酷洗礼而仅存的巨著,更是极其稀少。中国历史上文学小说类书本多如牛毛,但仅存的巨著,也只不过<<红楼梦>>等四本名著而已,编程方面也是如此。2、多动手。 这一点很重要。而且特别重要。“纸上得来终觉浅,绝知此事要躬行。”陆游的千古名句说的就是这个道理,并且同样适合于编程方面。================================================三、用什么语言最好?这主要取决于应用领域,每种语言都有自已的长处和不足。1、汇编语言和C语言在单片机及工控领域用较多。另外C语言也是一种通用语言,是学C++/c#的起点。 2、C++系统编程等多个方面,最常用的编译器是VC。 3、C#/java网络编程方面新兴的。 4、VB通用。 5、还有Delphi等。。。。。。个人建议:从未编过程的,就从学vb开始。有基础的可直接学c++/VC。===================================================四、有什么好书?几年前,台湾著名技术作家侯捷先生曾经写过一篇影响很大的书评文章,叫做《MFC四大天王》。文章的意思是说在MFC的浩瀚书海中,只要认真研读和学习其中四本,就可以“五岳归来不看山”。侯先生虽以MFC为例,但是这个道理却同样适合于MFC之外的很多具体技术领域,这不能不说是一个有趣的统计现象。 通常在某一个具体细分的技术领域,会自然而然地出现3-5本顶级著作,它们彼此互相配合,形成一个完整的体系。对于学习者来说,只需要认真研读这几本书,就足以升堂入室。我乐于将这种现称为“四书五经现象”。对于读者来说,如果能够找到该领域中的“四书五经”,则无论在时间上还是金钱上都是最经济的选择。好书几本,胜过烂书几捆,这个体会想必大家都有。在此,帮助大家遴选各个技术领域里的“四书五经”。 编程的书可谓汗牛充栋,其中经典也是不泛其数,但绝大多数的过来人,都一致认为,要想很快的入门并尽快的投入到编程实践中,只要其中的四到五本也就够了,即只看经典中的经典,圣经级的书就可以了。 所谓活到老学到老,程序员是个终身学习的职业,要不断的看书,直到放弃编程的那一天。所以,您要读的好书也绝非以下推荐的这些书哟,呵呵。 一句话,由于我们的时间、精力、金钱都是有限的,如何以最小的代价换得最大的收获。================================================================五、经典好书分类热销榜1、java java编程语言(第三版)---java四大名著----James Gosling(java之父) java编程思想(第2版)----java四大名著----Bruce Eckel java编程思想(第3版)----java四大名著----------------Bruce Eckel java 2核心技术 卷I:基础知识(原书第7版)---java四大名著-----Cay Horstmann java 2核心技术 卷II:高级特性(原书第7版)----java四大名著-----Cay Horstmann Effective java中文版------java四大名著--------Joshua Bloch 精通Struts:基于MVC的java Web设计与开发---孙卫琴 精通Hibernate:java对象持久化技术详解---孙卫琴 Tomcat与java Web开发技术详解------------孙卫琴 java与模式------------------------------阎宏2、c# C#程序设计-------Charles Petzold“windows编程泰山北斗”---C#语言“倚天屠龙双剑” C# Primer中文版--------Stanley B.Lippman---C#语言“倚天屠龙双剑” .NET框架程序设计(修订版)--------Jeffrey Richter“windows编程泰山北斗”---.NET平台四大天王 C# Windows程序设计----------Charles Petzold“windows编程泰山北斗”------.NET平台四大天王 .NET程序设计技术内幕-------------Jeff Prosise---.NET平台四大天王 .NET本质论--第1卷:公共语言运行库(中文版)--------Chris Sells---.NET平台四大天王3、C++ C++程序设计语言(特别版)---c++八大金刚----Bjarne Stroustrup“C++之父” C++ Primer (第3版)中文版----c++八大金刚---Stanley B.Lippman C++ Primer (第4版)中文版----c++八大金刚---Stanley B.Lippman C++标准程序库—自修教程与参考手册--c++八大金刚--Nicolai M.Josuttis C++语言的设计和演化-----c++八大金刚----Bjarne Stroustrup“C++之父” 深度探索C++对象模型---c++八大金刚----Stanley B.Lippman Essential C++中文版---c++八大金刚---Stanley B.Lippman Effective C++中文版 2nd Edition-----c++八大金刚------Scott Meyers More Effective C++中文版----c++八大金刚------Scott Meyers C++编程思想(第2版) 第1卷:标准C++导引--------Bruce Eckel C++编程思想(第2版)第2卷:实用编程技术 --------Bruce Eckel C++程序设计--------------------------谭浩强 C++ 程序设计教程(第2版)--------------钱能 C++ Primer Plus(第五版)中文版---Stephen Prata 广博如四库全书The c++ programming language、c++ Primer 深奥如山重水复Inside the c++ object model 程序库大全The c++ standard libray 工程经验之积累Effective c++、More Effective c++、Exceptional c++c++八大金刚: 1、Essentital c++---lippman---C++之父,旁枝暂略,主攻核心,轻薄短小,初学者 2、The c++ programming language----C++之父,技术权威,用词深峻,思想深远,c++百科全书代表,圣经。 3、c++ Primer----lippman---纵横书市十数年,c++最佳教本,c++百科全书代表。 4、Inside the c++ object model-----lippman----揭示c++底层,非常好,非常难。 5、Effective c++-----通过50个编程实例,展示专家经验,行文有趣,深处浅出。 6、More Effective c++----通过35个编程实例,展示专家经验,行文有趣,深处浅出。 7、The c++ standard libray---c++标准库的百科全书。 8、设计模式:可复用面向对象软件的基础------good!4、c C程序设计语言(第2版·新版)---C语言“倚天屠龙双剑”---Brian W.Kernighan“C语言之父” C Primer Plus中文版(第五版)--------C语言“倚天屠龙双剑”---Stephen Prata C程序设计(第三版)---------------------------谭浩强 C语言大全(第四版)---------------------------HERBERT SCHILDT C语言接口与实现:创建可重用软件的技术-------------DAVID R.HANSON C语言参考手册(原书第5版)--------------------------Samuel P.Harbison C程序设计教程---------------------------------H.M.Deitel/P.J.Deitel C陷阱与缺陷-----------------------------------Andrew Koenig5、VB Visual Basic .NET技术内幕-----VB编程三剑客-----------Francesco Balena“vb首席大师” Windows程序设计-Visual Basic.NET语言描述--VB编程三剑客-----Charles Petzold“windows编程泰山北斗”--- .NET框架程序设计:Visual Basic.NET语言描述--VB编程三剑客--Jeffrey Richter“windows编程泰山北斗”--- Visual Basic 6编程技术大全------------------------Francesco Balena“vb首席大师” Visual Basic.NET 从入门到精通-------------------------Petroutsos,E. 高级VISUAL BASIC编程-----------------------------------MATTHEW CURLAND6、Delphi Inside VCL(深入核心——VCL架构剖析)----------李维 Delphi 7高效数据库程序设计--------------李维 面向对象开发实践之路(Delphi版)----------李维7、VC Windows 程序设计(第5版)-----Charles Petzold“windows编程泰山北斗”--- Windows核心编程----------Jeffrey Richter“windows编程泰山北斗”--- Windows高级编程指南---------Jeffrey Richter“windows编程泰山北斗”--- 深入浅出MFC(第二版)-----“MFC四大天王”-------侯捷 MFC Windows程序设计(第2版)---MFC四大天王”---------Jeff Prosise Visual C++ 技术内幕(第4版)--MFC四大天王”--------David Kruglinski 深入解析MFC-------------MFC四大天王”-----------George Shepherd Visual C++.NET 技术内幕(第6版)-MFC四大天王”------------David Kruglinski8、vf Visual Foxpro程序设计参考手册-------------------张洪举 专家门诊——Visual FoxPro开发答疑160问-------------------张洪举 Visual FoxPro 6.0/9.0解决方案与范例大全-------------------张洪举 Visual FoxPro软件开发模式与应用案例-------------------张洪举9、黑客 应用密码学(协议算法与C源程序-----------Bruce Schneier 网络信息安全的真相-----------Bruce Schneier 黑客大曝光:网络安全机密与解决方案(第5版)--------STUART MCCLURE 软件加密技术内幕------------看雪学院 加密与解密——软件保护技术与完全解决方案------------看雪学院 加密与解密(第二版)--------段钢10、汇编 Intel微处理器结构、编程与接口(第六版)---------Barry B. Brey 80*86、奔腾机汇编语言程序设计---------Barry B. Brey Windows环境下32位汇编语言程序设计(第2版)-----------罗云彬 IBM-PC汇编语言程序设计(第2版) 本书是国内优秀教材--------沈美明 温冬婵 IBM PC汇编语言程序设计(第五版) 这本书籍是国外优秀教材-------PETER ABEL著,沈美明 温冬蝉译11、驱动开发 Windows WDM设备驱动程序开发指南------------------------------------ Chris Cant Windows 2000/XP WDM设备驱动程序开发(第2版)--------------------------武安河 WINDOWS 2000/XP WDM设备驱动程序开发-------------------------------- 武安河12、网络 计算机网络第四版中文版----网络编程三剑客--------------Andrew S.Tanenbaum TCP/IP详解3卷本--------------------Richard Stevens----网络编程三剑客 UNIX网络编程2卷本--------------------Richard Stevens----网络编程三剑客 用TCP/IP进行网际互联-----------Douglas E. Comer 高级TCP/IP编程-------------------Jon C. Snader C++网络编程-----------------------Douglas Schmidt UNIX环境高级编程(第2版)--------------------Richard Stevens13、算法 计算机程序设计艺术-------Donald.E.Knuth----------算法“倚天屠龙”双剑 算法导论-----------------Thomas H. Cormen--------算法“倚天屠龙”双剑 离散数学及其应用----------Kenneth H.Rosen 具体数学—计算机科学基础--------Donald.E.Knuth14、图形编程 Windows 图形编程----------------FENG YUAN --图形编程界的Charles Petzold之书15、数据结构 数据结构 C++语言描述》58.00(Data Structures C++) William Ford,William Topp 刘卫东 沈官林 数据结构算法与应用-C++语言描述》49.00Sartej Sahni 汪诗林 孙晓东等机械工业出版社16、软件工程 设计模式--可复用面向对象软件的基础 重构—改善既有代码的设计17、操作系统 深入理解计算机系统(修订版)-------RANDAL E.BRYANT18、Unix UNIX 网络编程 卷I 套接字联网API(英文版 第三版 UNIX 编程艺术 UNIX环境高级编程(英文影印第2版-----UNIX编程“圣经 UNIX环境高级编程(英文影印版)(第2版) UNIX环境高级编程(第2版) UNIX环境高级编程(第2版)---UNIX编程“圣经 UNIX网络编程 第1卷:套接口API(第3版) UNIX网络编程卷2:进程间通信(第2版)(英文影印版) UNIX 网络编程(第二版)第2卷:进程间通信 UNIX编程环境 UNIX 网络编程 卷I 套接字联网API(英文版 第三版 UNIX系统编程 UNIX环境高级编程 UNIX 网络编程 卷I 套接字联网API(英文版 第三版) UNIX网络编程 第1卷:套接口API(第3版) UNIX 网络编程(第二版)第2卷:进程间通信 UNIX网络编程卷2:进程间通信(第2版)(英文影印版) UNIX 网络编程(第2版)第1卷:套接口API和X/Open 传输接口API UNIX网络编程(卷1):连网的APLS:套接字与XTI(第二版)(英文影印版) UNIX环境高级编程 Unix技术手册19、Linux Linux内核设计与实现 Linux内核完全注释 LINUX内核分析及编程 GNU/Linux 编程指南(第二版) Linux设备驱动程序(第三版) 嵌入式设计及Linux驱动开发指南——基于ARM 9处理器 Linux设备驱动程序 第三版(英文影印版) Linux内核设计与实现(第2版) Linux内核设计与实现(英文影印版)(第2版) linux技术手册20、游戏编程 Windows游戏编程大师技巧(第二版 游戏之旅--我的编程感悟 OpenGL超级宝典:第三版 OpenGL编程指南(第四版) java 游戏高级编程 J2ME手机游戏编程入门 游戏之旅——我的编程感悟 游戏开发中的人工智能(英文影印版) 3D游戏:卷2 动画与高级实时渲染技术 面向对象的游戏开发 java 游戏高级编程 3D游戏编程大师技巧 游戏编程精粹 面向对象的游戏开发 3D游戏 卷1:实时渲染与软件技术 3D游戏:卷2 动画与高级实时渲染技… J2ME手机游戏编程入门 Direct3D游戏编程入门教程(第二版…21、移动开发 Windows Mobile手机应用开发 SYMBIAN OS C++手机应用开发 Windows Mobile手机应用开发--傅曦 齐宇 徐骏 SYMBIAN OS C++手机应用开发 (第2卷)------------------RICHARD HARRISON著,周良忠 王伯欣译 SYMBIAN OS C++手机应用开发---------------RICHARD HARRISON著,周良忠译 Windows CE.net内核定制及应用程序开发---------周毓林 宁杨 陆贵强 付林林 嵌入式系统Windows CE 开发技巧与实例--傅曦 Palm OS编程实践---绝版22、单片机 单片机轻松入门----------------------------------周坚(平凡老师) 单片机典型模块设计实例导航-----------------------求是科技 例说8051----------------------------------------张义和 陈敌北 KEIL CX51 V7.0单片机高级语言编程与ΜVISION2应用实践-----徐爱钧 单片机应用程序设计技术(修订版)--------------------周航慈 8051单片机实践与应用-------------------------------吴金戎 MCS-51系列单片机实用接口技术---------------------李华23、串并口通讯 Visual C++/Turbo C串口通信编程实践------------------龚建伟 VISUAL BASIC与RS-232串行通信控制(最新版)----------范逸之24、电子 无线电识图与电路故障分析轻松入门(第二版) -------------------胡斌 无线电元器件检测与修理技术轻松入门(第二版) -------------------胡斌 图表细说电子技术识图-------------------胡斌 图表细说电子元器件-------------------胡斌 图表细说元器件及实用电路-------------------胡斌 ================================================================ 六、怎样成为一名程序员通过以下4个阶段的训练, 没有任何编程基础人就可以成为一名普通的程序员。第一阶段:掌握一种编程语言 学习内容:学习任意一种主流的编程语言。例如C++语言。 学习目标:熟练掌握一种语言的语法和基本的编程技巧。 学习时间:3个月左右 注意事项:编程语言和编程工具是两回事情,编程语言是指C++、Basic、Object Pascal等程序设计语言,它们是像汉语、英语一样的抽象的语法规则,编程工具是指Visual C++ 6.0、Visual Basic 6.0、Delphi 7.0等包括了源代码编辑器、程序编译器在内的集成化、可视化的软件开发工具。C++源程序可以在Visual C++ 6.0里编写,也可以在记事本里编写,而同一个C++源程序可以用Visual C++ 6.0编译、执行,也可以用C++ Builder 5.0 编译、执行,所以: C++ 不等于 Visual C++ 6.0第二阶段:掌握一种编程工具 学习内容:学习任意一种主流的编程工具。注意编程工具要和第一阶段学习的编程语言一致,例如你学习的编程语言是C++,那么编程工具要选Visual C++ 6.0或者C++ Builder 5.0。 学习目标:熟练掌握这种编程工具基本用法,例如:菜单、组件、程序跟踪调试、编写Windows程序等。 学习时间:3个月左右 注意事项:这个阶段侧重编程工具的使用,同时进一步熟习编程语言,最后达到能熟练编写各种基本的Windows程序。第三阶段:掌握“算法与数据结构”这门课程 学习内容:算法与数据结构,推荐许卓群的《数据结构》,高等教育出版社出版。 学习目标:熟练掌握各种常用的算法与数据结构 学习时间:4个月左右 注意事项:这是一门不可或缺的软件开发课程,曾经有一本经典计算机专业书籍叫做《数据结构+算法=程序》,这说明了数据结构和算法的重要性。它能帮我们建立良好的程序分析与设计能力。第四阶段:实现一个模拟的小型软件项目 学习内容:软件项目的开发过程 学习目标:掌握软件项目的基本开发过程和方法 学习时间:4个月左右 注意事项:自己完成一个模拟的小型软件项目,强烈推荐做一个MIS(管理信息系统)软件,参考用书推荐“中小型信息管理系统开发实例系列丛书”,人民邮电出版社,它的例子详实有效,以它为基础再加以扩展,就可以做出实用的MIS软件来。此丛书包括多种开发工具,大家可以选择适合自己的:《VISUAL FOXPRO6.0 数据库系统开发实例导航》 《java数据库系统开发实例导航》 《VISUAL BASIC数据库系统开发实例导航》《VISUAL C++6.0数据库系统开发实例导航》 《ASP.NET数据库管理系统开发实例导航》 《DELPHI数据库系统开发实例导航》《POWERBUILDER 8.0数据库系统开发实例导航》。 最后将完成的模拟软件刻成光盘,作为自己的作品去面试,以此踏上自己光辉的职业程序员之路!2023-07-23 18:43:029
从零开始成为一个程序员,你真的准备好了吗
1、 程序员意味着要编程序。(如果你仅仅想得到一份高薪水的工作,喝喝咖啡就等老板发薪水,我奉劝你还是另找一份更合适的工作,譬如练摊,真的,兄弟,这份工作不适合你)2、你是学文的还是学理的,编程序也许需要浪漫,但更需要逻辑和严谨。(说坦白点就是,在你没有找到乐趣以前,它很枯燥)3、你有对新技术追求的热情吗?你有刨根问底的探索精神吗?(热情绝对是最重要的!你仔细思考一下自己的性格适合当程序员吗?)4、当程序员决不是什么好差事,时刻需要学习,需要思考。(直到你成为那个可以引导别人去学习和思考的人,你才可以偷偷的嘿嘿笑,又一群傻蛋)5、程序员的未来很迷茫。(但我认为关键看你自己!我希望你是一个有追求的人,不仅仅是混碗饭吃。因为真正的乐趣在于创造;如果你能改变软件业的历史,那才是英雄;不想成为Bill Gates,不想成为Dennis Ritchie和 Bjarne Stroustrup,我会说你没有追求。有个关于程序员未来的笑话,也许你还没听过,你该听一听,摘抄如下:一个程序员对自己的未来很迷茫,于是去问上帝。“万能的上帝呀,请你告诉我,我的未来会怎样?”上帝说“我的孩子,你去问Lippman,他现在领导的程序员的队伍可能是地球上最大的”于是他去问Lippman。Lippman说“程序员的未来就是驾驭程序员”这个程序员对这个未来不满意,于是他又去问上帝。“万能的上帝呀,请你告诉我,我的未来会怎样?”上帝说“我的孩子,你去问Gates,他现在所拥有的财产可能是地球上最多的”于是他去问Gates。Gates说“程序员的未来就是榨取程序员”这个程序员对这个未来不满意,于是他又去问上帝。“万能的上帝呀,请你告诉我,我的未来会怎样?”上帝说“我的孩子,你去问侯捷,他写的计算机书的读者可能是地球上最多的”于是他去问侯捷。侯捷说“程序员的未来就是诱惑程序员”这个程序员对这个未来不满意,于是他又去问上帝。“万能的上帝呀,请你告诉我,我的未来会怎样?”上帝摇摇头“唉,我的孩子,你还是别当程序员了”)6、当程序员还是很有乐趣的。(当你学到新知识时,当你有新的思想见解时,当你有新的产品问世时,和知己探讨你的成果时…我问你,觉得这些是乐趣吗?)7、当程序员不易也不难。(世间事有难易乎?为之…;不为…。你有决心和信心吗?)8、你真的要当程序员?是你自己的想法?9、你舍得花钱买书吗?(读好书绝对是学习编程的最佳捷径。你一定会说,现在电脑书籍真他XX的贵,没法子,谁让知识和技术在人家的脑袋,在人家的书里呢;等你写书时可以把价格定低一点,记着还有好多没钱但想买书的兄弟很困难呀。要舍得买书,买好书,不好的的书不如不读,其害大于其益,关于买什么书,你可以问高手或看候捷的书评;准备一个小本子记录你想买的书的名字,逛书店时看看,如果好就买下,记住要读,别光买不看。) 10、我告诉你,程序就是:任何有目的的、预想好的动作序列,它是一种软件。11、编程序就是编写程序。12、你想好了吗?(如果你想好了还是决定要当程序员,可以继续往下读;否则,你可以继续寻找别的出路了。)(三) 一个程序员应该具备的基础知识和概念1、计算机是有什么组成的,CPU是什么东西,其工作原理是什么。(对于这些以及下面将要提到的概念我不会告诉你什么答案,你可以看相应的教材,关于教材我会在下一部分详述,记住理解最重要!)2、机器语言和微指令集的概念。3、程序的概念。4、汇编语言是低级语言但不是机器语言。5、高级语言主要有那些?(C,C++,Basic,Pascal,Fortran,C#,Java等等;如果你是中国软件业的英雄,你也写一门语言,最好不用英语) 6、编译程序和解释程序的概念和其原理。(编译器是高手和专家编写的)7、HTML、XML等是标识性语言。8、Prolog是人工智能语言。9、操作系统OS的概念和原理。(Windows98,Windows2000,Windows NT,UNIX,Linux,等等都是OS,还有一些实时OS,嵌入OS,编这些的绝对是高手)10、Windows编程说白了就是Windows API的调用。(中国的程序员很多只是会编windows程序,用的是VB,我的建议是这些程序员顶多只是低级编码员,我称其是coder)11、VC++、VB、BC、BCB、Delphi、VF等都只是编程的工具和环境,不是编程语言。12、面向结构的设计概念。13、面向对象的概念。(好好理解,兄弟,这个东西还是很重要的)14、软件工程的概念和原理。(如果你想当老总就需要好好研究了,系统分析员比编码员要高一个等级,薪水也高哟)15、数据库的概念。(要熟悉一些著名的数据库系统和语言的名字,如Orcle,SQL,DB2,DyBase等)16、了解网络概念。17、了解多媒体概念。18、熟悉和掌握数据结构和基本算法。19、是不是要求太高了,别着急慢慢来,进步在不知不觉之中。(一旦开始学习,一个月以后你就会有一个基本的概念;两个月以后你就会感觉自己有了全面的基础知识;当你知道编程序是怎么回事时,说明你已经入门了。也有很多人编了很多年程序还没有入门呢,你不会希望自己步其后尘吧。要有信心和耐心。沉不住气怎么能成大事?!)(四) 教材推荐――-推荐的教材主要还是针对概念来的,最好选用名校的教学用书。1、《计算机组成原理》(熟悉)2、《数据结构》(掌握)3、《操作系统》(了解->熟悉)4、《The C language》(掌握)5、《编译原理》(了解原理)6、《汇编语言》(了解)7、《计算机网络》(了解)8、《软件工程》(了解)9、《关系数据库》(熟悉)10、《The C++Languege 》(掌握)11、《面向对象设计》(掌握;结合C++学习)(五)一些经验和体会1、真正的程序员用C++;(一位专家说的)2、动手去编程序;3、动脑去思考;4、要有良好的编程风格;5、读书,读好书,尽量读原版书!(我反复强调这一点,读书要有选择,坚持读好书,名家出的经典书,不要浪费实践在一些粗制滥造的书上面;坚持博览群书)6、有自己的学习计划;7、总结自己的经验教训;(准备一个笔记本,记录错误和心得)8、不要怕学新东西;9、要有软件工程的思想;10、善于发现问题,然后去寻找答案;11、向高手请教;(要虚心直到你成为高手)12、和同行交流;(不善于交流肯定不行)13、懂得软件的实质,不要被千变万化的表象所迷惑;14、真正要学习用的是编程语言和方法,不是什么库,什么类,什么工具;(学用那些什么库都比较简单,但光会这些库,我觉得还远远不够)15、学习wiodows编程主要是学习windows OS和win32 API;16、有空了解一下嵌入式开发;17、有空了解一下PDA软件开发;18、了解一下.NET框架和C#语言,也许它是你新的衣食父母;19、要有耐心,不要作浮躁的人; 20、对程序加注释,并保留你的老程序;21、学到的东西越多,了解的越多,你就越接近专家;22、有空去逛逛CSDN,那里有你很多知己;23、要有信心成为一个优秀的程序;(六)一些好书的推荐1、《The C Programming language》 (Keinighan & Dennis Ritchie 1988)2、《The C++ Programming Languague》(Bjarne Stroustrup 1997)3、《Inside The C++ Object Model》 (lippmans)4、《Effective C++》 (同上)5、《More Effective C++》 (同上)6、《Exceptional c++》7、《C++面向对象高效编程》8、《设计模式》9、《Thinking In C++》10、《The Standard C++ Bible》(一般推荐)11、《The Art of Computer Programming 》12、《Programming Windows》 (Charles Petzold)13、《VC++5.0技术内幕》14、《MFC 深入浅出》15、《软件需求》16、《Advanced Windows》17、《C++ primer》18、《win32程序员参考手册》19、《用TCP/IP进行网际互连》20、《COM 本质论》(七)学习计划――-这个学习计划是我个人定的,也共享给大家参考一下,共同进步吧。 1、《计算机组成原理》2、《操作系统》3、《数据结构》4、《汇编语言》5、《 C 》6、《 C++ 》7、《VC 技术内幕》8、《Programming Windows》9、《深入浅出MFC》10、《Advanced Windows》11、《Inside The C++ Object Model》12、《Thinking in C++》13、《Effective C++》14、数据库15、网络16、嵌入式OS和编程17、硬件单片机18、.NET和C#19、软件工程20、UNIX和Linux2023-07-23 18:43:381
我想学编程,应该学哪一类,求助
先学c和c++2023-07-23 18:43:481
怎么成为计算机高手
问题一:怎样成为计算机高手 看看这个,你就明白了,希望对你有帮助! 一、为何要学编程? 每个人的动机不一样。大致有: 1、为了找个好工作;或为了有更好的机会和更好的发展。 2、看到别人超厉害,所以也想学。 3、实际工作中很多场合需要。 4、从小就立志做个程序员,做软件工程师。 5、振兴中国的软件事业。 。。。。。。 ================================================ 二、如何学编程? 1、多看好书。 差书误人子弟,不但浪费时间和精力,而且打击人的信心,差书使人很久都不会,让会让人怀疑自已的学习能力。 现在的书很多,但好书很少,特别是被大家公认很有价值的好书,更是少之又少。历经多年时间考验和市场风雨不残酷洗礼而仅存的巨著,更是极其稀少。中国历史上文学小说类书本多如牛毛,但仅存的巨著,也只不过>等四本名著而已,编程方面也是如此。 2、多动手。 这一点很重要。而且特别重要。“纸上得来终觉浅,绝知此事要躬行。”陆游的千古名句说的就是这个道理,并且同样适合于编程方面。 ================================================ 三、用什么语言最好? 这主要取决于应用领域,每种语言都有自已的长处和不足。 1、汇编语言和C语言在单片机及工控领域用较多。另外C语言也是一种通用语言,是学C++/c#的起点。 2、C++系统编程等多个方面,最常用的编译器是VC。 3、C#/java网络编程方面新兴的。 4、VB通用。 5、还有Delphi等。。。。。。 个人建议:从未编过程的,就从学vb开始。有基础的可直接学c++/VC。 =================================================== 四、有什么好书? 几年前,台湾著名技术作家侯捷先生曾经写过一篇影响很大的书评文章,叫做《MFC四大天王》。文章的意思是说在MFC的浩瀚书海中,只要认真研读和学习其中四本,就可以“五岳归来不看山”。侯先生虽以MFC为例,但是这个道理却同样适合于MFC之外的很多具体技术领域,这不能不说是一个有趣的统计现象。 通常在某一个具体细分的技术领域,会自然而然地出现3-5本顶级著作,它们彼此互相配合,形成一个完整的体系。对于学习者来说,只需要认真研读这几本书,就足以升堂入室。我乐于将这种现称为“四书五经现象”。对于读者来说,如果能够找到该领域中的“四书五经”,则无论在时间上还是金钱上都是最经济的选择。好书几本,胜过烂书几捆,这个体会想必大家都有。在此,帮助大家遴选各个技术领域里的“四书五经”。 编程的书可谓汗牛充栋,其中经典也是不泛其数,但绝大多数的过来人,都一致认为,要想很快的入门并尽快的投入到编程实践中,只要其中的四到五本也就够了,即只看经典中的经典,圣经级的书就可以了。 所谓活到老学到老,程序员是个终身学习的职业,要不断的看书,直到放弃编程的那一天。所以,您要读的好书也绝非以下推荐的这些书哟,呵呵。 一句话,由于我们的时间、精力、金钱都是有限的,如何以最小的代价换得最大的收获。 ================================================================ 五、经典好书分类热销榜 1、java java编程语言(第三版)---java四大名......>> 问题二:如何成为一名电脑高手!??要详细! 首先明确你学电脑的动机,你要成为高手必须要对计算机有感情,没有兴趣的学习是坚持不常的,当然要成为高手还要付出很多的努力。 没有电脑的话就多看点书,特别是一些基础的书籍(比如Windows的基本操作,DOS的运用,学一些基本的计算机语言如:FOXBASE),然后到网吧、图书馆等地方找电脑实际操作一下,验证你的所学,对弄不明白的地方找身边懂电脑的人问,也可以上网查,要谦虚。 有电脑的话就方便多了,边看书边操作,学习完基础的计算机知识后就可以深入一些,上网找一些软件(如下载用的FLASHGET、看电影用的金山影霸、播放MP3用的WINAMP、杀毒用的KV2005等等),自己下载、安装、试用,养成习惯,对不懂的不明白的都点“取消”这样就不用担心弄坏电脑,然后学习卸载,这样你的电脑就开始脱离了单纯的windows功能限制,开始“活”起来,等你对基础工具软件的运用及理解熟悉之后,就可以学习一些编辑软件了(如编辑网页用的frontpage、深一些的Dreamweaver,编辑图片用的Photoshop,编辑flash用的FLASH MX),当然还有学习一些深层次的语言(如VB,C,C++等――如果你看书仔细的话应该知道这些是什么,以及它们的作用),你还可以锻炼重装系统,格式化硬盘、格式化C盘等,甚至还可以对硬盘重新分区等等。还有就是学习一下注册表编辑器regedit的知识,学习其的备份。 以上都会了,你可以拆开你的主机箱了,看看你机箱里都有些什么,弄明白它们的作用,特别是一些小的组件,如硬盘跳线,BIOS的FLASH芯片及CMOS知识,对于其所有组件都要有一定的认识,当然你可以在网上,在报纸上及书籍上看到它们的详细介绍及分类和区别,可以的话,你可以试着拆掉它们再原样安上,最好有懂的人在场。 等你软硬件都学的差不多的时候,你可以试着自己组装电脑,你可以到太平洋电脑网的“DIY配件-教你买电脑( pconline/diy/salon/)”上学习一下别人的经验。 呵呵,你要是组装好了一台电脑,并安装完系统以及基础的运用软件后,你已经算半个高手了,为什么呢,因为在你身边还有“黑客”,网络高手,语言运用、软件编写高手,游戏开发高手等等,你说我要成为真正的高手,对不起,我也不知道那个是怎样练成的,因为我也不是,但是,我知道你如果考个好的大学读个好的计算机专业,不久你肯定是真正的高手... ... 问题三:怎样成为一名计算机高手 想成为计算机高手,需要有很强的动手能力,以及拓展能力,高手的定位很不明确的。到底什么是高手呢?OK ,高手可以再最初的时候理解为,就是熟手,熟手就是用手疯狂敲代码敲出来的。然后呢,高手的定位,可以定位为创新比较强的,谁说代码没有创新?一个新的功能,增强用户体验的效果是非常明显的。谁的逻辑思维更强大,谁的脑洞开的更大谁就是高手。再然后高手就是运筹帷幄,对整个行业熟知,并能预测技术发展趋势以及及早的做出相应的定位。 问题四:怎样才能成为一个电脑高手 现如今随着DIY一族的阵容不断壮大,涌现出了一个又一个电脑高手。这时,一些正在成长中的电脑爱好者(上至准电脑高手,下至菜鸟)不禁要发出疑问:我们如何才能成为一名真正的电脑高手??做为一名老鸟我想给各位一点点供参考的建议。 首先,要树立起信心。相信自己能够成为电脑高手是真正成为高手的前提和保证。如果各位读者现在还认为自己和老鸟差得很远,那就不必看这篇文章了。怎么样?准备好了吗?准备好就往下看。 其次,要选择自己的主攻方向。要知道老鸟也不是什么都会,比如网络方面的专家,在图形处理上就不一定懂多少;相反,动画制作大师也不一定知道什么是BIOS。如此可见,选择自己的主攻方向是十分重要的。想要样样皆通,其结果往往是样样皆松。 再次,应选择合适的书籍。这一点看似容易,其实真正做起来很难。现在的书,琳琅满目,而真正适合你学习的却并不是很多。如果想入门,千万别买“实例”,因为看这种书的前提是得具备相当的知识后用以提高,如果还没入门,是根本看不懂的。建议买书的时候最好身边有一个精通这一内容的人来帮你购买,当然,如果你的money多得烧手的话,多买点我也不反对,反正看累了还有多余的书可以当枕头睡觉。对于教电脑的教学软件,我看一定要买“名牌”,还得是正版,比如洪恩。这样不但教学效果有保证,而且升级方便(谁都知道电脑的发展速度是惊人的)。 而后,多搜集一些使用技巧上的小知识。无论是硬件还是软件,其使用上的小技巧都还是不少的,如果想成为高手,没有点特殊的东西是不行的。诸如《家用电脑》之类的报纸常看看是很有帮助的,里面总有一些不易了解的小知识。 最后,要重视实际操作。其实这一点人人都清楚,任何知识如果只停留在理论上而落实不到实际,那恐怕你还是什么都不会。尤其是想在硬件上成为高手的人更应如此,多动动手,多试着自己解决遇到的问题,会使你更快地成为老鸟。 好了,如果你做到了以上五点,你就已经成功了一半(怎么才一半???)。另一半就是慢慢增长的经验了。怎么样?成为高手不难吧! 大家都是从菜鸟成长起来的,这一点毋庸置疑。如果没有各位高手的支持,也就不会有一代一代的成长。可大家总是抱怨为什么高手们不愿意教大家,不是么?我现在问你一点,如果有外国人想流利地读中文,却不愿意去积累词汇,在还看不明白汉语拼音的时候就要学诗词,向你求教,你如何办?一定也是一脸无奈的。 劝告大家几句: 1 学习是自己的事情,任何人帮不了你,不要指望别人能教你什么,或者说教会你什么。如果你需要辅导,书可能是一个很好的选择,并且你可以根据需要选择实例型、理论型或结合型。 2 如果你一定要学习,又抱怨看不懂书,一定要人给你讲的话,你必须知道:书都看不懂又有谁能给你讲明白?只怪自己积累还不够而已了。很多问题都是要积累的,为什么语文从小就学,学十几年以后还要学?因为要积累。你只有有了一定的词汇量,才可以看得懂书,这时你就拥有了主动获取书本知识的能力。积累的过程是艰苦的,但是一旦积累足够,之后的学习会容易很多。 3 你QQ里的高手只是字典,不是秘书。 4 真的想学是好事,但是一定不要满足于一点皮毛,不要满足于会模仿,要知道原理;不要满足于用工具,要深入底层。如我一直强调的那样,不是说有了枪炮就不用学拳脚了。否则,要被人鄙视了。业内精英少,掌握核心技术的少,所以中国,至少在信息技术方面还是落后的。 5 不是没人愿意教你,而是你提出这样的要求,就证明你基础还不行,而要学习这些是需要很多基础的,不要求精通,至少要达到熟悉的程度,如计算机的工作原理、系统核心、脚本、数据库、TCP......>> 问题五:怎么快速成为计算机高手? 首先,支持你! 要想成为电脑高手,首先要对电脑报以极大的兴趣和热爱! 不要以为学习电脑是多么难的事,不要以为成为高手是高不可攀,所谓的电脑高手 问题六:如何才能成为电脑高手? 首先,支持你! 要想成为电脑高手,首先要对电脑报以极大的兴趣和热爱! 不要以为学习电脑是多么难的事,不要以为成为高手是高不可攀,所谓的电脑高手: 他只是比别人更执着 他只是更喜欢思考 他只是善于总结经验 他只是动手能力很强 他只是把电脑玩的更彻底 一、提倡自学 对初学者,老师引进门很重要,但以后就要靠自学。自学能力对于计算机学习尤为重要,原因就是计算机发展奇快,掌握了自学方法,具备了自学能力,才能应付计算机日新月异的发展形势。有人说,自学,谈何容易!我说别的学科自学可能较难,而计算机却相对容易一些。为什么这样说呢?因为计算机越来“平易近人,让人能够看得见、摸得着。能够让人动的东西就好学,比如几岁的娃娃就敢去开电视机和调台,能够去控制VCD等,难道电视机和VCD机不是高科技产品吗?计算机作为学习对象,理论知识和实践环境是统一的,学习内容和进度自己可以掌握,自学当中有弄不懂的东西,大多可以通过上机加以解决。因此,我说它易于自学、便于自学。当然,有一本便于自学的指导书就更好了。 二、强调动手 计算机这个学科实践性特强,不动手是学不会的。计算机从诞生那天起就被人蒙上了神秘的面纱,许多专著像天书,让初学者望而生畏。但是,很多小孩子为什么能把计算机用得那么好呢?窍门在哪儿呢?动手!一动手就会感?原来如此!没有什么了不得!这样,就会越学越轻松、越学越有兴趣。边动手边动脑是计算机学习的基本模式,可以自然而然地摈弃那种死记硬背、纸上谈兵的学习模式,既动手又动脑,形成生动活泼的学习氛围。动手,还能强化理论联系实际的优良学风、培养实干精神。 三、注重应用 在学习计算机知识与技能的过程中,要想到用,用到自己的学习、工作和生活中。作为智力工具,作为人脑的延伸物,让计算机帮助我们思维、论证、决策,以提高分析问题和解决问题的能力。人们常说熟能生巧,泛指学用一般工具,对学用计算机这种智力工具,就不仅仅是生巧了,而且还益智,即有利于开发智力。计算机中浓缩着人类智慧的结晶,集成着现代人的思维方式和科学方法,通过人脑指挥电脑、电脑帮助人脑的过程,会使人越来越聪明,越来越能干。在新世纪大智大勇,富有创造才能的人,一定是会使用电脑帮自己工作的人。 四、上网 计算机教育不仅仅是学科教育,更重要的是一种文化教育。目前,分布在五大洲的几千万台计算机已经联到了互联网上,形成了一种新的文化氛围;会不会使用网络成为衡量现代人文化水准的一个新尺度。在网络文化氛围中,获取信息、处理信息、交流信息的能力十分重要?庖彩窍执?说囊恢只?灸芰Γ? 五、有益的考试 是学习电脑的技术还是学习专业知识?是学习操作还是学习应用?是仅仅和电脑交朋友还是要熟练地掌握?不同的层次、不同的要求就有不同的回答。对于绝大多数人来说,学习电脑不是为了成为一名计算机专家,而是为了应用。电脑是高科技的产品,它的内部结构、工作原理,硬件的制造技术极其复杂,是科学的象牙之塔。但是它的使用又是那么方便、简单,学习电脑的基本操作要比学开汽车,或学习一个学科知识容易得多。这是其他机器所根本不能相比的。现在一些所谓自动洗衣机、傻瓜相机等机器很容易使用,就是因为它们内部安装了微型电脑的缘故。正是由于电脑的这种特殊性,因此学习电脑从初级到高级有多个层次。这与照相一样,可......>> 问题七:怎样成为电脑高手呢?大神求解 第一,就是要确定自己的自学方向。通过自学想达到什么样的水平,是仅仅为了应用还是为了考级;如果是为了应用那得分清楚是在硬件方面还是在软件方面有所发展,或是纯粹为了办公;如果是为了过级也得分清是考教育类还是劳动部门的,或是考程序员这一类的。因为现在的计算机行业发展的门类相当多,也相当杂,所以这之前最好与一些懂行的朋友交流一下,选择适合自己的发展之路,这是极为重要的。 第二,选择一套好的教材。教材的好坏是自学是否成功的又一关键,如果你是为了过级,可购买相关的过级教材及辅导材料;如果是为了一般的应用,则应选择相关应用软件的操作手册,或是《XX从入门到精通》类的书籍,而且是先溅后深,先可学习《XX速成》之类的书,但千万不要以为学完速成教材就什么都懂了,还得在这方面进一步加深,再学《精通XX》类的书,此后,还需学习一些《XX技巧》,《XX应用X例》类的书籍,当你对每一应用软件都经历过这些过程后,你才会对这个软件达到得心应手的地步。 第三,保证足够的学习时间。对于自学来说,足够的学习时间是必不可少的。一般来说自学时间与正常面授的时间比为1.5~2。当然这不是绝对,但至少说明自学比必须正常面授花的时间要多,因为毕竟没辅导老师,什么都得靠自己去理解,花费的时间肯定不会少。不过自学时间不象正规的面授非得要安排正规的学习时间,这可以是平时的上班时间,也可以是业余时间。其实这也仅仅是自学,所有学习时间都是靠自己挤出时间来的。一定得记住,对于某一个人来说,学习的成绩是与你所下功夫的多少成正比的。 第四,注意合适的学习方法。对于不同学习内容学习方法是不同的,例如你是学习考级的有关内容,因为有些科目它的理论性很强,如《数据结构》、《离散数学》等,没有什么可上机实践的,那么这些还得老老实实坐下来认真啃书本,并适当完成一些练习,而对于一些操作性很强的科目,如《程序设计》完全可以在电脑上进行实际地编程,判断正确与否只要看运行结果即可。如果你是为了学会某一应用软件的作用,不妨多上机摸索,有问题了再去看书本,这样实践不断长进,会取得比较明显的效果。另外无论你是为了哪种目的的自学,如果你的电脑能上网的话,最好利用QQ在网上找一位辅导教师,在网上有很多朋友愿意帮助别人的,如果你能找到一位好的辅导老师,无疑给你的自学会给予极大的帮助。 总的来说,自学是一个长期而艰巨的任务,持之以恒是自学成功的保证,努力吧!衷心祝愿朋友你通过自学走出一条适合自己的发展之路! 问题八:怎样成为一名电脑高手黑客? 其实没有人一下子成为黑客或是电脑高手,都需要我们一点点的积累和学习.几年前我和你情况一样,什么都不会,只有电脑天天坏的境遇,我从那以后就开始学习电脑知识了.有很多人说去一些论坛看教程,可是,我一点基础也没有,根本也看不会.后来,我的一个朋友向我推荐的黑基,(我在这声明:我不是黑基的托,只是帮LZ解决问题的.)我感觉上面的教程很好,真的是从零基础开始的,先讲电脑的硬件结构,再见软件系统,最后是一些黑客技术和编程语言.但是价格太高了以前银牌会员(基础的课程)的课程要498元,现在却598元了.如果LZ想去学的话,不如去淘宝网或拍拍网去购买30元就够了,学完了银牌的学金牌的,就算学到钻石的课程也不过100多元,效果真的很好.现在我已经学完了金牌会员的课程才用了80元,但因为我已经高二了,要把更重要的精力放在学习上了,所以就没继续学习.但真的很好 以上是本人原创,禁止抄袭!希望对楼主有帮助! 问题九:如何成为编程高手 【一】如何成为电脑高手 要掌握的知识包括: 电脑基础----对计算机硬件、体系结构不了解是不行的。另外像二进制、十六进制、补码、位运算(与、或、非、移位) 编程语言----有人你说 C/C++,有人说 Java,还有人说别的。还是要看将来会用什么。数据类型、顺序控制、子程序、函数等概念,多数编程语言(高级语言)都类似的,精通一门后可以触类旁通。 网络知识----现在的电脑没有独立运行的了,信息孤岛时代已经过去了。很多软件都是在网络上运行的。其中对 TCP/IP 协议一定要熟悉。如果你将来专门做网络编程,那就根据需要进一步学习了。 数据库----数据库应用是软件中非常重要的部分。就算你不搞数据库应用开发,也要对数据库要了解。 数据结构----光会程序语言是不够的,“算法”就像程序的灵魂,会解决问题才能写出好的程序来。 UML、软件工程等----做“编程高手”,不是光靠自己聪明的脑瓜来写程序的,现在是信息爆炸的时代,做软件经常是很大的项目,需要很多人来做。开始就算你做写代码的最底层的程序员,也要根据设计人员的文档来写;等你层次提高了,设计的任务归你了,你就要能写出各种文档来:需求分析、模块设计、详细设计、测试用例.... 数学----“算法”是哪里来的?最终归结为数学模型! 英语----少不了要看一些英语资料。虽说现在多数软件工具都汉 化了,但最简单你也要认识“if”“else”“for”“do”“while”“case”“this”“botton”“text”“list”等等吧。 学习方法方面提示一点: 一要能吃苦,要有专劲,要耐得住寂寞。 二要有人指点,尤其是在入门的时候。 三是实践很重要。纸上谈兵永远也不会把你变成高手的,除了自己练习,做好事学的差不多了就赶紧找一个程序员的工作,从底层做起,接触到了团队开发最好。 【二】电脑编程的基础知识 1:如果你能够熟练的使用Windows 的话,你就可以开始你的程序生涯了! 2:首先从C 语言开始。有的朋友可能认为C 语言太难了,应该从VB 开始。虽然,对于一个初学者来说,用一些控件堆砌成一个小软件,是有一些成就感,但是,基础才是最重要的!C 语言对于数据类型的描叙,远比VB 里面说的更为全面,清楚,明白,而这些却是编程中的根本! 3:学C 语言,从数据类型,基本表达式,再到条件语句,循环语句,然后学习函数,再加上一些简单的数组知识,就可以了!一句 话,到现在为止,你只要理解结构化程序设计的思想也就够了! 4:有了以上的基础,就要开始学 5:有了汇编的基础,再来学习 C 语言中的精华部分----指针,可谓如鱼得水了。现在你要对 C 语言全全面面的学一遍了,谭版的教材要从头到尾认认真真的看两遍以上。 6:学完以上的内容,有必要研究一下数据结构了,线性表,堆栈,队列,树,图,二叉树,等等,都要滚瓜烂熟!(最好是清华严蔚敏老师的那本教材) 7:请时刻记住:浮躁是学习编程的大忌! 8:现在,你应该学习一些数据库的知识,还有一些常用的算法了! 9:如果以上的知识你都学精通的话,就可以开始C++的课程了,找本C++上手的书,用一个星期的时间大概了解一下C++,然后找一本VC 上手的书,再花一个星期的时间学习VC 的界面和用法,就可以做一些简单的应用了! 10:要想学好VC,没有扎实的C++知识是不行的,以下书籍是 VC 程序员必须翻的烂熟的:C++Primer,Effective C++,Thinking in C++,More Effective C++ 深入浅出MFC。 11:......>> 问题十:如何才能成为一名电脑高手 分为硬件软件高手吧。 首先是硬件。 第一步学习基本常识。 第二步自己diy ,电脑城做工。 第三步主板专业维修。 第四步,bga焊接笔记本维修。 软件方面。 第一步,学习Windows系统基本操作常识。 第二步学习局域网。 第三步故障排除。 第四步学习Linux 第五步学习服务器配置。 第六步学习软件开发JAVA入门。 第七步做项目。 第八步做游戏开发。2023-07-23 18:44:031
MFC程序中,鼠标响应事件为何要在VIEW类里面处理?
1.你说的肯定是文档视图结构了。你想想,框架类(MainFrame)好比是墙,视图好比是一张墙纸,当你鼠标点击时,是贴在墙上的墙纸感觉到鼠标被点击。相当与消息被view拦截了。这个时候在MainFrame里处理是没办法响应的。2.第二个问题:你注释的代码是CMouseGetMsgView类的父类CView的代码。它里面会做一些相应的鼠标处理。而默认情况下基类可能对鼠标按下没做什么事情,所以注释掉没关系。但如果父类做了相应处理,效果就会体现。比如你做的对话框中的处理确定按钮消息OnOK()函数,他也是调用了父类的CDialog的OnOK()方法,如果注释父类的方法将无法获取父类赋予该函数的那部分功能。2023-07-23 18:44:091
使用sizeof计算类的大小
类的sizeof大小一般是类中的所有成员的sizeof大小之和,这个就不用多说。不过有两点需要注意:1)当类中含有虚成员函数的时候,例如:class B{ float a;public: virtual void fun(void);}此时sizeof(B)的大小为8,而不是4。因为在类中隐藏了一个指针,该指针指向虚函数表,正因为如此,使得C++能够支持多态,即在运行时绑定函数的地址。2)另一个要注意的是,当类中没有任何成员变量,也没有虚函数的时候,该类的大小是多少呢?例如:class B2{ void fun(void);}此时sizeof(B2)的值是多少呢?在C++早期的编译器中,这个值为0;然而当创建这样的对象时,它们与紧接着它们后面的对象有相同的地址。比如:B2 b2;int a;那么对象b2与变量a有相同的地址,这样的话对对象b2地址的操作就会影响变量a。所以在现在大多数编译器中,该值的大小为1。如果有虚函数,则sizeof值为类的数据成员的大小加上VTBL(指针,4字节),再加上其基类的数据成员的大小。如果是多重继承,还得加上各基类的VTBL。这个问题很麻烦.. 下面有更详细的自己看下http://rkfang.cnblogs.com/archive/2004/10/10/50599.aspx2023-07-23 18:44:209
C语言如何API编程
用C调用API 就不能在是简单的tubroc了需要用到vc工具一般用的是vc++ 6.0直接用c就是windows SDK编程 这种编程相对与MFC来说更加接近底层学习纯C的SDK编程可以让你更加了解windows编程的机制和原理学习完SDK编程 再来学习MFC就会容易的多~~ 关于书籍 windows编程很好的书籍并不是特别的多但是有一本是可以说是windows编程界的圣经:Windows 程序设计(第5版)(上、下册) 网上有电子版 源代码的话petzold大师的个人主页 http://www.charlespetzold.com/books.html上好像有关于petzold这个人 你也应该了解 windows编程泰斗~~http://baike.baidu.com/view/1466188.html2023-07-23 18:45:257
《深入浅出MFC》第一个程序问题 “nmake不是内部命令或外部命令,也不是可运行程序”什么意思啊?
原因:没有安装vc或者没有选择环境变量。 解决方法:安装vc,并选择环境变量;没有正确设置环境变量的,按以下方法: . 在我的电脑 > 属性 > 高级 > 环境变量中设置“include”“lib”“path”变量的值, . include:D:Program FilesMicrosoft Visual Studio .NETVc7include . lib:D:Program FilesMicrosoft Visual Studio .NETVc7lib . 找到Microsoft Visual Studio .NETVc7incl.exe的动态链接库mspdb70.dll, 将mspdb70.dll的 路径加入到path的值。 cl.exe 是 the Microsoft Visual Studio的编辑执行文件,只要正确设置环境变量后,你才能看到以下信息: Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8804 for 80x86 Copyright (C) Microsoft Corp 1984-1998. All rights reserved. usage: cl [ option... ] filename... [ /link linkoption...2023-07-23 18:45:413
如何成为一个程序员
1、 程序员意味着要编程序。(如果你仅仅想得到一份高薪水的工作,喝喝咖啡就等老板发薪水,我奉劝你还是另找一份更合适的工作,譬如练摊,真的,兄弟,这份工作不适合你)2、你是学文的还是学理的,编程序也许需要浪漫,但更需要逻辑和严谨。(说坦白点就是,在你没有找到乐趣以前,它很枯燥)3、你有对新技术追求的热情吗?你有刨根问底的探索精神吗?(热情绝对是最重要的!你仔细思考一下自己的性格适合当程序员吗?)4、当程序员决不是什么好差事,时刻需要学习,需要思考。(直到你成为那个可以引导别人去学习和思考的人,你才可以偷偷的嘿嘿笑,又一群傻蛋)5、程序员的未来很迷茫。(但我认为关键看你自己!我希望你是一个有追求的人,不仅仅是混碗饭吃。因为真正的乐趣在于创造;如果你能改变软件业的历史,那才是英雄;不想成为Bill Gates,不想成为Dennis Ritchie和 Bjarne Stroustrup,我会说你没有追求。有个关于程序员未来的笑话,也许你还没听过,你该听一听,摘抄如下:一个程序员对自己的未来很迷茫,于是去问上帝。“万能的上帝呀,请你告诉我,我的未来会怎样?”上帝说“我的孩子,你去问Lippman,他现在领导的程序员的队伍可能是地球上最大的”于是他去问Lippman。Lippman说“程序员的未来就是驾驭程序员”这个程序员对这个未来不满意,于是他又去问上帝。“万能的上帝呀,请你告诉我,我的未来会怎样?”上帝说“我的孩子,你去问Gates,他现在所拥有的财产可能是地球上最多的”于是他去问Gates。Gates说“程序员的未来就是榨取程序员”这个程序员对这个未来不满意,于是他又去问上帝。“万能的上帝呀,请你告诉我,我的未来会怎样?”上帝说“我的孩子,你去问侯捷,他写的计算机书的读者可能是地球上最多的”于是他去问侯捷。侯捷说“程序员的未来就是诱惑程序员”这个程序员对这个未来不满意,于是他又去问上帝。“万能的上帝呀,请你告诉我,我的未来会怎样?”上帝摇摇头“唉,我的孩子,你还是别当程序员了”)6、当程序员还是很有乐趣的。(当你学到新知识时,当你有新的思想见解时,当你有新的产品问世时,和知己探讨你的成果时…我问你,觉得这些是乐趣吗?)7、当程序员不易也不难。(世间事有难易乎?为之…;不为…。你有决心和信心吗?)8、你真的要当程序员?是你自己的想法?9、你舍得花钱买书吗?(读好书绝对是学习编程的最佳捷径。你一定会说,现在电脑书籍真他XX的贵,没法子,谁让知识和技术在人家的脑袋,在人家的书里呢;等你写书时可以把价格定低一点,记着还有好多没钱但想买书的兄弟很困难呀。要舍得买书,买好书,不好的的书不如不读,其害大于其益,关于买什么书,你可以问高手或看候捷的书评;准备一个小本子记录你想买的书的名字,逛书店时看看,如果好就买下,记住要读,别光买不看。) 10、我告诉你,程序就是:任何有目的的、预想好的动作序列,它是一种软件。11、编程序就是编写程序。12、你想好了吗?(如果你想好了还是决定要当程序员,可以继续往下读;否则,你可以继续寻找别的出路了。)(三) 一个程序员应该具备的基础知识和概念1、计算机是有什么组成的,CPU是什么东西,其工作原理是什么。(对于这些以及下面将要提到的概念我不会告诉你什么答案,你可以看相应的教材,关于教材我会在下一部分详述,记住理解最重要!)2、机器语言和微指令集的概念。3、程序的概念。4、汇编语言是低级语言但不是机器语言。5、高级语言主要有那些?(C,C++,Basic,Pascal,Fortran,C#,Java等等;如果你是中国软件业的英雄,你也写一门语言,最好不用英语) 6、编译程序和解释程序的概念和其原理。(编译器是高手和专家编写的)7、HTML、XML等是标识性语言。8、Prolog是人工智能语言。9、操作系统OS的概念和原理。(Windows98,Windows2000,Windows NT,UNIX,Linux,等等都是OS,还有一些实时OS,嵌入OS,编这些的绝对是高手)10、Windows编程说白了就是Windows API的调用。(中国的程序员很多只是会编windows程序,用的是VB,我的建议是这些程序员顶多只是低级编码员,我称其是coder)11、VC++、VB、BC、BCB、Delphi、VF等都只是编程的工具和环境,不是编程语言。12、面向结构的设计概念。13、面向对象的概念。(好好理解,兄弟,这个东西还是很重要的)14、软件工程的概念和原理。(如果你想当老总就需要好好研究了,系统分析员比编码员要高一个等级,薪水也高哟)15、数据库的概念。(要熟悉一些著名的数据库系统和语言的名字,如Orcle,SQL,DB2,DyBase等)16、了解网络概念。17、了解多媒体概念。18、熟悉和掌握数据结构和基本算法。19、是不是要求太高了,别着急慢慢来,进步在不知不觉之中。(一旦开始学习,一个月以后你就会有一个基本的概念;两个月以后你就会感觉自己有了全面的基础知识;当你知道编程序是怎么回事时,说明你已经入门了。也有很多人编了很多年程序还没有入门呢,你不会希望自己步其后尘吧。要有信心和耐心。沉不住气怎么能成大事?!)(四) 教材推荐――-推荐的教材主要还是针对概念来的,最好选用名校的教学用书。1、《计算机组成原理》(熟悉)2、《数据结构》(掌握)3、《操作系统》(了解->熟悉)4、《The C language》(掌握)5、《编译原理》(了解原理)6、《汇编语言》(了解)7、《计算机网络》(了解)8、《软件工程》(了解)9、《关系数据库》(熟悉)10、《The C++Languege 》(掌握)11、《面向对象设计》(掌握;结合C++学习)(五)一些经验和体会1、真正的程序员用C++;(一位专家说的)2、动手去编程序;3、动脑去思考;4、要有良好的编程风格;5、读书,读好书,尽量读原版书!(我反复强调这一点,读书要有选择,坚持读好书,名家出的经典书,不要浪费实践在一些粗制滥造的书上面;坚持博览群书)6、有自己的学习计划;7、总结自己的经验教训;(准备一个笔记本,记录错误和心得)8、不要怕学新东西;9、要有软件工程的思想;10、善于发现问题,然后去寻找答案;11、向高手请教;(要虚心直到你成为高手)12、和同行交流;(不善于交流肯定不行)13、懂得软件的实质,不要被千变万化的表象所迷惑;14、真正要学习用的是编程语言和方法,不是什么库,什么类,什么工具;(学用那些什么库都比较简单,但光会这些库,我觉得还远远不够)15、学习wiodows编程主要是学习windows OS和win32 API;16、有空了解一下嵌入式开发;17、有空了解一下PDA软件开发;18、了解一下.NET框架和C#语言,也许它是你新的衣食父母;19、要有耐心,不要作浮躁的人; 20、对程序加注释,并保留你的老程序;21、学到的东西越多,了解的越多,你就越接近专家;22、有空去逛逛CSDN,那里有你很多知己;23、要有信心成为一个优秀的程序;(六)一些好书的推荐1、《The C Programming language》 (Keinighan & Dennis Ritchie 1988)2、《The C++ Programming Languague》(Bjarne Stroustrup 1997)3、《Inside The C++ Object Model》 (lippmans)4、《Effective C++》 (同上)5、《More Effective C++》 (同上)6、《Exceptional c++》7、《C++面向对象高效编程》8、《设计模式》9、《Thinking In C++》10、《The Standard C++ Bible》(一般推荐)11、《The Art of Computer Programming 》12、《Programming Windows》 (Charles Petzold)13、《VC++5.0技术内幕》14、《MFC 深入浅出》15、《软件需求》16、《Advanced Windows》17、《C++ primer》18、《win32程序员参考手册》19、《用TCP/IP进行网际互连》20、《COM 本质论》(七)学习计划――-这个学习计划是我个人定的,也共享给大家参考一下,共同进步吧。 1、《计算机组成原理》2、《操作系统》3、《数据结构》4、《汇编语言》5、《 C 》6、《 C++ 》7、《VC 技术内幕》8、《Programming Windows》9、《深入浅出MFC》10、《Advanced Windows》11、《Inside The C++ Object Model》12、《Thinking in C++》13、《Effective C++》14、数据库15、网络16、嵌入式OS和编程17、硬件单片机18、.NET和C#19、软件工程20、UNIX和Linux2023-07-23 18:45:529
《深入浅出MFC》第一个程序问题“nmake不是内部命令或外部命令,也不是可运行程序”什么意思啊?
原因:没有配置环境x0dx0a方法:x0dx0a1.搭建环境,将下面代码保存成一个BAT 文件,例如var.bat ,便于一次性配置好编译环境(下面代码中Microsoft Visual Studio 9.0根据VS版本更改):x0dx0a@echo offx0dx0aset INCLUDE=< 你的安装位置>Microsoft Visual Studio 9.0VCinclude;< 你的安装位置>Microsoft SDKsWindowsv6.0AIncludex0dx0aset LIB=< 你的安装位置>Microsoft Visual Studio 9.0VClib;< 你的安装位置>Microsoft SDKsWindowsv6.0ALibx0dx0aset PATH=< 你的安装位置>Microsoft Visual Studio 9.0VCin;< 你的安装位置>Microsoft Visual Studio 9.0Common7IDE;%path%x0dx0aecho onx0dx0a2.命令行下切换到var.bat 所在目录输入var 执行环境配置2023-07-23 18:46:301
深入浅出MFC(第二版,简体)在武汉哪有卖吗?网上有卖请发个网址
这里有电子版下载,深入浅出MFC 第二版: http://www.soft000.com/Down/MrHou_MFC.rar 1、当当网的购买地址: http://product.dangdang.com/product.aspx?product_id=8943870 2、淘宝网的一些购买地址: http://item.taobao.com/auction/item_detail-0db2-2308a4110fca65d5918d24931402ead6.jhtml http://item.taobao.com/auction/item_detail-0db1-a7e0f00e81d0a42e626c01c510786010.jhtml http://item.taobao.com/auction/item_detail-0db2-186f961df6d671a774585772a07a2434.jhtml http://item.taobao.com/auction/item_detail-0db1-01d2945d4c1b1caa8b0246df6466e4e3.jhtmlhttp://item.taobao.com/auction/item_detail-0db2-90473a3b736148824ca7ee1f6d4a9a7f.jhtmlhttp://item.taobao.com/auction/item_detail-0db1-744ff43f4ccf5c27fd7922648b270ed1.jhtmlhttp://item.taobao.com/auction/item_detail-0db2-a0cee7042a3a77337515385c7091dd7d.jhtmlhttp://item.taobao.com/auction/item_detail-0db2-d65a25f2a36f595144a3a9c38ee48260.jhtmlhttp://item.taobao.com/auction/item_detail-0db2-30d13f1c33187a4952051585e40cfbcd.jhtmlhttp://item.taobao.com/auction/item_detail-0db2-1d6e59d89d94e8b8ea1cd2b0cf153c2a.jhtmlhttp://item.taobao.com/auction/item_detail-0db2-e301ca23dab8fb1735bf7fdc7573eb24.jhtml2023-07-23 18:46:572
如何学习MFC呢?
学习MFC的前提是掌握Windows编程,对Windows编程可以了解得不深但一定要掌握一些重要的概念。这是因为VC++开发的目标是Windows程序,Windows编程是MFC编程的基础,MFC本质上是以面向对象的方式对WindowsAPI进行封装,如果不理解Windows编程的一些重要原理,比如API调用、消息处理机制等等,仅学习MFC必然只能理解得很片面,模棱两可,即使知道怎样做也不知道为什么这样做。下面列出一些公认的经典书:The C Programming Language----------Brian W.Kernighan,Dennis M.Ritchie“介绍标准C语言及其程序设计方法的权威性经典著作”---C++ Primer----------Stanley B. Lippman“帮助全球无数程序员学会C++”---Windows 程序设计(第5版)-----Charles Petzold“windows编程泰山北斗”---Windows核心编程----------Jeffrey Richter“windows编程泰山北斗”---Windows高级编程指南---------Jeffrey Richter“windows编程泰山北斗”---深入浅出MFC(第二版)-----“MFC四大天王”-------侯捷MFC Windows程序设计(第2版)---MFC四大天王”---------Jeff ProsiseVisual C++ 技术内幕(第4版)--MFC四大天王”--------David Kruglinski深入解析MFC-------------MFC四大天王”-----------George ShepherdVisual C++.NET 技术内幕(第6版)-MFC四大天王”------------David Kruglinski这些书籍包括其作者都是响当当的。如果你不打算深入研究编程,而只是作为临时任务的工具的话,看一些应用方面,有很多例子代码的书就行,比如孙鑫的《VC++深入详解》,或者一些其他的大部头工具书。如果想研究编程,深入理解MFC的工作机制,首先要精通Windows编程。《Windows 程序设计》是较为基础的,实例代码很多,《Windows核心编程》和《Windows高级编程指南》就比较拔高了,涉及很多操作系统的知识。掌握Windows编程后再研究MFC就轻松多了,它就是对WindowsAPI的封装,侯捷的《深入浅出MFC》讲得蛮细致深入。2023-07-23 18:47:043
学习MFC有什么好书么?
1.《精通MFC程序设计》出版社:人民邮电出版社 作者:姚领田 全书由浅入深、循序渐进地介绍了Visual C++开发环境厂MFC库的具体使用方法。全书分9篇共30章,内容涵盖了Windows-VC-MFC、MFC框架及消息处理机制、MFC通用控件和对话框编程、文档-视结构、MFC数据库编程、MFC网络编程、注册表编程、进程线程和DLL、异常与调试以及.NET MFC应用等,其中的大部分内容都配有较为丰富的实现代码。 本书的最大特色是内容丰富翔实、讲解细腻2.《深入解析MFC》 MFC Internals:Inside the Microsoft Foundation Class Architecture 出版社:中国电力出版社 作者:[美]George Shepherd,Scot Wingo著 赵剑云等译 这是一本填补“使用向导”类的VisualC++书籍、产品文档以及MFC源代码之间空隙的MFC书籍。本书是了解MFC内幕的向导,提供了关于那些没有文档记录的MFC类、实用函数和数据成员的独一无二并且透彻的信息,介绍了有用的编码技巧,并对MFC各个类之间的协作方式进行了重要的分析。 本书的第一部分包含了核心的MFC图形用户界面类以及支持它们的类,第二部分包含了像OLE这种扩展...3. 《精通MFC》 出版社:电子工业出版社 作者:刘晓华 等编著 全书共分为16章。书中介绍了掌握MFC必须具备的C++和面向对象的基础知识;详细阐述了MFC应用框架、窗口的原理、文档视图结构、消息处理机制和技术及相关实现,对于每一个技术难点,在进行理论阐述的同时,都给出了典型例子,以提高大家开发MFC应用的实践水平,拓宽程序设计思路;除了介绍传统的GDI编程接口外,还详细讲解了最新的GDI+编程接口,通过对比两种编程接口,想念读...其中第二本目前最火2023-07-23 18:47:211
mfc 程序入口点 孙鑫老师
应该再类(或其父类)的构造函数中调用的吧。2023-07-23 18:47:271
想学习vc++6.0,按照什么方法学习比较好啊?希望各位大神帮帮忙,说一下学习的先后顺序,谢谢了!
VC++的编译语言是C++,开发目标是Windows程序,使用的基础类库是MFC。所以要学会使用VC++编程,下面的几项课程是必须掌握的:C++语言、Windows编程、MFC。我建议的顺序是C++语言---->Windows编程---->MFC,这是因为:学习MFC的前提是掌握Windows编程,对Windows编程可以了解得不深但一定要掌握一些重要的概念。这是因为VC++开发的目标是Windows程序,Windows编程是MFC编程的基础,MFC本质上是以面向对象的方式对WindowsAPI进行封装,如果不理解Windows编程的一些重要原理,比如API调用、消息处理机制等等,仅学习MFC必然只能理解得很片面,模棱两可,即使知道怎样做也不知道为什么这样做。下面列出一些公认的经典书:The C Programming Language----------Brian W.Kernighan,Dennis M.Ritchie“介绍标准C语言及其程序设计方法的权威性经典著作”---C++ Primer----------Stanley B. Lippman“帮助全球无数程序员学会C++”---Windows 程序设计(第5版)-----Charles Petzold“windows编程泰山北斗”---Windows核心编程----------Jeffrey Richter“windows编程泰山北斗”---Windows高级编程指南---------Jeffrey Richter“windows编程泰山北斗”---深入浅出MFC(第二版)-----“MFC四大天王”-------侯捷MFC Windows程序设计(第2版)---MFC四大天王”---------Jeff ProsiseVisual C++ 技术内幕(第4版)--MFC四大天王”--------David Kruglinski深入解析MFC-------------MFC四大天王”-----------George ShepherdVisual C++.NET 技术内幕(第6版)-MFC四大天王”------------David Kruglinski这些书籍包括其作者都是响当当的。如果你不打算深入研究编程,而只是作为临时任务的工具的话,看一些应用方面,有很多例子代码的书就行,比如孙鑫的《VC++深入详解》,或者一些其他的大部头工具书。如果想研究编程,深入理解MFC的工作机制,首先要精通Windows编程。《Windows 程序设计》是较为基础的,实例代码很多,《Windows核心编程》和《Windows高级编程指南》就比较拔高了,涉及很多操作系统的知识。掌握Windows编程后再研究MFC就轻松多了,它就是对WindowsAPI的封装,侯捷的《深入浅出MFC》讲得蛮细致深入。2023-07-23 18:47:341
请问学MFC之前一定要学什么吗? 我学过C++ 可不可以直接学MFC 那大家推介下好的MFC书籍哦 !!O(∩_∩)O谢
学习MFC之前要学习Windows编程的,可以了解得不深但一定要掌握一些重要的概念,因为Windows编程是MFC编程的基础,MFC本质上是以面向对象的方式对WindowsAPI进行封装。下面列出一些公认的经典书:Windows 程序设计(第5版)-----Charles Petzold“windows编程泰山北斗”---Windows核心编程----------Jeffrey Richter“windows编程泰山北斗”---Windows高级编程指南---------Jeffrey Richter“windows编程泰山北斗”---深入浅出MFC(第二版)-----“MFC四大天王”-------侯捷MFC Windows程序设计(第2版)---MFC四大天王”---------Jeff ProsiseVisual C++ 技术内幕(第4版)--MFC四大天王”--------David Kruglinski深入解析MFC-------------MFC四大天王”-----------George ShepherdVisual C++.NET 技术内幕(第6版)-MFC四大天王”------------David Kruglinski这些书籍包括其作者都是响当当的。 如果你不打算深入研究编程,而只是作为临时任务的工具的话,看一些应用方面,有很多例子代码的书就行,比如孙鑫的《VC++深入详解》,或者一些其他的大部头工具书。如果想研究编程,深入理解MFC的工作机制,首先要精通Windows编程。《Windows 程序设计》是较为基础的,实例代码很多,《Windows核心编程》和《Windows高级编程指南》就比较拔高了,涉及很多操作系统的知识。掌握Windows编程后再研究MFC就轻松多了,它就是对WindowsAPI的封装,侯捷的《深入浅出MFC》讲得蛮细致深入。2023-07-23 18:47:425
学VC++前要有什么基础
一、以下是我个人初学是的感悟:1.你要学习C++,就要先学会C语言,C语言与C++的书很多,随便都行,只要搞懂语法就行。2.你要学习MFC,首先得会C++,如果你有C语言的基础,那这部分很快的,C++比C语言多的内容也就类与对象,继承,多态,1天时间完全可以搞定。3.你要学MFC必须先学API,推荐《Windows程序设计 第五版》,不过你要是主攻MFC的话,推荐你大致学习下原理,不必细究,因为这本书虽是好书,但是讲解深奥,不适合初学者。4.学习MFC(VC++),推荐两本书,《VC++深入详解 孙鑫》、《深入浅出MFC 侯俊杰》。前一本注重于实践,如果只是业余爱好,看这一本就足够了,如果想专业学习,第二本是必须的,因为这本注重于理论,它可以帮助你了解MFC原理,不过不建议首先看它,因为不适合初学者,所以你可以先看第一本的前几章,了解什么是MFC,然后你就可以两本一起看,相互映证,你一定会感慨良多。最后说一句,学编程所谓的速成在我看来都是骗人的,你想要有所成就就要做好长久战斗的打算二、以下是我复制的在让我感觉触动很大的别人的解答:VC++是一个C++语言程序的编译器,因此学习VC++首先要学会C++ 。而C++又需要较好的C基础,所以C语言也要学。如果主要目标是VC++ ,学C可以不学它的C标准库,但是C的语法一定要学好,否则C++也不能学的很扎实,因为C++是遵从C的语法的,如果对C的语法尤其是一些细节不是很清楚,也必然不能很好得理解并编写C++代码。学完C和C++之后要学习学习VC++大量使用的微软基础类库(MFC)。而学习MFC的同时要学习Windows编程,对Windows编程可以了解得不深但一定要掌握一些重要的概念,因为VC++开发的目标是Windows程序,Windows编程是MFC编程的基础,MFC本质上是以面向对象的方式对WindowsAPI进行封装,如果不理解Windows编程的一些重要原理,比如API调用、消息处理机制等等,仅学习MFC必然只能理解得很片面,模棱两可,即使知道怎样做也不知道为什么这样做。下面列出一些公认的经典书:Windows 程序设计(第5版)-----Charles Petzold“windows编程泰山北斗”---Windows核心编程----------Jeffrey Richter“windows编程泰山北斗”---Windows高级编程指南---------Jeffrey Richter“windows编程泰山北斗”---深入浅出MFC(第二版)-----“MFC四大天王”-------侯捷MFC Windows程序设计(第2版)---MFC四大天王”---------Jeff ProsiseVisual C++ 技术内幕(第4版)--MFC四大天王”--------David Kruglinski深入解析MFC-------------MFC四大天王”-----------George ShepherdVisual C++.NET 技术内幕(第6版)-MFC四大天王”------------David Kruglinski这些书籍包括其作者都是响当当的。 如果你不打算深入研究编程,而只是作为临时任务的工具的话,看一些应用方面,有很多例子代码的书就行,比如孙鑫的《VC++深入详解》,或者一些其他的大部头工具书。如果想研究编程,深入理解MFC的工作机制,首先要精通Windows编程。《Windows 程序设计》是较为基础的,实例代码很多,《Windows核心编程》和《Windows高级编程指南》就比较拔高了,涉及很多操作系统的知识。掌握Windows编程后再研究MFC就轻松多了,它就是对WindowsAPI的封装,侯捷的《深入浅出MFC》讲得蛮细致深入。 修改回答2023-07-23 18:49:133
有什么好的C语言教材
锐英源的C语言视频非常好,全面能力、综合教材、海量源码和因人施教,保证掌握工作能力,打开项目经理和系统分析之门,欢迎郑州、河南和全国的朋友来学。2023-07-23 18:49:361
MFC学习过程
你学的天花乱坠,也只会在找工作的时候自我感叹:原来我还这么菜。学基础是最重要的。不需要什么都会,但是基础要懂。基础①:c/c++基础②:会用vc工具,会用mfc,熟悉mfc框架,几大关键技术,各个框架的使用情况。基础③:使用mfc开发多个软件,使用不同的技术点,掌握一些调试技巧,有较好的代码质量。会了以上三点,请不要骄傲,因为,你找工作的时候只会写上:熟悉c++,熟悉mfc。而公司不一定要你这“熟悉mfc”,更不会看重你熟悉c++。除非你很NB。算法?数据库?网络?多线程设计?别想着全部搞定,学点概念先放着吧。要在windows学得有点成绩,mfc只是一个工具,你研究了多年,它还是工具,学习windows编程是基础的。掌握内核编程,了解驱动或者直接着手,你会“发财”的。以上属个人见解。另外关于你这本孙鑫的书,把它当提起兴趣的书籍吧,简单学点就行了,全部模仿完,没意义。侯杰的那本《深入浅出MFC》是不错的选择,曾经也有老外写过的一些书很好,搜一搜也行。2023-07-23 18:49:473
MFC有哪些机制
MFC程序运行机制 学MFC,竟然还不知道MFC的MAIN函数在什么地方?怎么运行的?实在不高明。看过候捷(JJHOU)老师的《深入浅出MFC》的,对它一定很熟悉。呵呵,本文是献给没有看过那本书,但是又很希望学习MFC程序设计的朋友的。(没有看过那本书的朋友还不赶快去买?)其实本文,主要是对《深入浅出MFC》第六章的一个总结和补充罢了!(本文有该书不同的地方,也有一些笔者自己的见解!)言归正传。假如你用AppWizard一步一步NEXT下来,然后在CLASSVIEW中去找寻WINMAIN函数,那么你只有失望。MFC最大的特点是什么?封装!MFC的确封装的太好了,以至于很多想学习MFC的人都望而却步。闲话少说,还是继续我们今天的话题,MAIN函数!实话告诉你吧,即使你搜索所有的MFC生成的文件,都无法发现WINMAIN的字眼,那么它就近在什么地方呢?我相信你已经想到,MAIN函数应该在主要的应用程序文件中。难道是“您定义的程序名.cpp”这个文件?不错就是它。再Crtl+F一下,看有没有我们要找的WINMAIN函数?看来你又要失望了,但是你注意有这样一句://///////////////////////////////////////////////////////////////////////////// The one and only CMyApp object CMyApp theApp; //本人建立的工程名为My。是不是很特别,再注意一下那句注释“The one and only CMyApp object”,每个应用程序有且只用一个CMyApp对象。我想你应该想到了,WinMain函数每个程序也只能有一个,那么这个全局对象跟WinMain函数肯定有莫大的关系?没错,相信你的直觉。特别注意:深晓C++细节的人一定知道,全局对象优先于MAIN函数执行的道理。如果你不知道也没关系,那么我在这里告诉你:“全局对象优先于MIAN函数执行,且构建于栈中,切记,切记!”现在,我们该深入WinMain运行机制了,确切的说,应该是MFC的机制!首先,看看MFC的库文件把,它能给我们带来许多惊喜。(vc6的相应的目录是Microsoft Visual StudioVC98MFCSRC;VC7相应的目录是Microsoft Visual Studio .NET 2003Vc7atlmfcsrcmfc)现在我们就从这个全局下手,开始今天的旅途。CMyApp theApp; 此时,系统会执行CMyApp的父类(CWinApp)构造函数,再执行CMyApp的构造函数。(先有老爹,再有儿子!),此时就会调用CWinApp的构造函数。CWinApp的构造函数(在VC提供的MFC代码中以“文中的一个字或词组”的方式查询关键字,此时打开APPCORE.CPP,以下使用相同搜索方式,不再复述。)找到以下内容:CWinApp::CWinApp(LPCTSTR lpszAppName){ if (lpszAppName != NULL) m_pszAppName = _tcsdup(lpszAppName); else m_pszAppName = NULL; // initialize CWinThread state AFX_MODULE_STATE* pModuleState = _AFX_CMDTARGET_GETSTATE(); AFX_MODULE_THREAD_STATE* pThreadState = pModuleState->m_thread; ASSERT(AfxGetThread() == NULL); pThreadState->m_pCurrentWinThread = this; ASSERT(AfxGetThread() == this); m_hThread = ::GetCurrentThread(); m_nThreadID = ::GetCurrentThreadId(); // initialize CWinApp state ASSERT(afxCurrentWinApp == NULL); // only one CWinApp object please pModuleState->m_pCurrentWinApp = this; ASSERT(AfxGetApp() == this);... ...}OK,就到这里就可以了,仔细看上面代码,它已经完成了应用程序线程额的启动,它给予了我们程序的生命。现在请注意: pThreadState->m_pCurrentWinThread = this;pModuleState->m_pCurrentWinApp = this; 这两行代码其实都是做的一件事儿。 这段代码的意思是,获得了CMyApp的全局对象的this指针。(此时你肯定要疑问,为什么是CMyApp的指针?this目前是在CWinApp中啊? 对此我的答案是,可是你是由CMyApp的对象引发的CWinApp的构造啊!!)这个指针可非一般的人物,稍后我们的很多工作都要靠它完成。 CWinApp之中的成员变量将因为theApp这个全局对象的诞生而获得配置和初始值。构造完父类,现在构造子类。可是我们看到,AppWizard给我们的子类里它什么也没做?是的,这一切都听从你的安排! CMyApp::CMyApp() {// TODO: add construction code here,// Place all significant initialization in InitInstance}接下来就是今天的主角儿了,搜索关键字“WinMain”,出现很多文件。别急,因为现在我们应该先看看WinMain的声明。打开appmodul.cpp: _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,LPTSTR lpCmdLine, int nCmdShow){// call shared/exported WinMainreturn AfxWinMain(hInstance, hPrevInstance, lpCmdLine, nCmdShow);}这里_tWinMain是为了支持UNICODE而命名的一个宏,真正起作用的是AfxWinMain,注意看看它的参数,是不是和SDK的WinMain函数一样?现在再搜索下AfxWinMain,其实在winmain.cpp中:int AFXAPI AfxWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,LPTSTR lpCmdLine, int nCmdShow){ASSERT(hPrevInstance == NULL);int nReturnCode = -1;CWinThread* pThread = AfxGetThread();CWinApp* pApp = AfxGetApp();// AFX internal initializationif (!AfxWinInit(hInstance, hPrevInstance, lpCmdLine, nCmdShow)) goto InitFailure;// App global initializations (rare)if (pApp != NULL && !pApp->InitApplication()) goto InitFailure;// Perform specific initializationsif (!pThread->InitInstance()){ if (pThread->m_pMainWnd != NULL) { TRACE(traceAppMsg, 0, "Warning: Destroying non-NULL m_pMainWnd "); pThread->m_pMainWnd->DestroyWindow(); } nReturnCode = pThread->ExitInstance(); goto InitFailure;}nReturnCode = pThread->Run();... ...}此段代码注意五个细节:CWinApp* pApp = AfxGetApp(); 意为获得对象指针,其实就是刚才那个THIS。不记得了?指向CMyApp的那个!还值得注意的是,Afx意是全局的,随时你都可以调用它。(AFX就是MFC开发小组的开发代号,意为Application Framework 传说X只是为了好看,没实在意思?!)if (!AfxWinInit(hInstance, hPrevInstance, lpCmdLine, nCmdShow))AfxWinInit完成了线程的初始化和窗框类的注册。具体参看appinit.cpp中的定义。if (pApp != NULL && !pApp->InitApplication())其实pApp和pThread是同一个指针,都是指向CMyApp的指针,这里因为CMyApp中没有定义InitApplication,实际上就调用的CWinApp::InitApplication(),完成了MFC的内容管理。if (!pThread->InitInstance())因为CMyApp中改写了它,所以调用CMyApp中的,其实它也是初始化工作。此时也完成了默认窗口类的定义。假如你熟悉SDK编程的话,一定不会忘记窗口类的设计、注册、创建、现实及更新的步骤,此时MFC以为你设计好了默认的窗口类。现在你不禁要疑问,InitApplication()和InitInstance()有何不同?答案是,假如你执行一个程序,于是两个函数都会被调用;当你在不关闭前一个程序的前提下,再执行一个程序,那么就只执行后一个函数。nReturnCode = pThread->Run();这个一步骤在《深入浅出MFC》中被成为程序的活水源头,在我看来它就是你开车踩油门的步骤。待会我们会具体阐述!在设计窗口类以后,就应该是注册,MFC自动调用(跳转到)AfxEndDeferRegisterClass(WINCORE.CPP中),为你注册了五个窗口类,分别是:AfxWnd,AfxCreateBar,AfxMDIFrame,AfxFrameOrView,AfxOleControl以上窗口类MFC将自动转化成独立无二的类名,供其调用。在窗口的注册以后,就应该是窗口的创建工作,此时会调用CFrameWnd::Create(),该代码位于WINFRM.Cpp中BOOL CFrameWnd::Create(LPCTSTR lpszClassName,LPCTSTR lpszWindowName,DWORD dwStyle,const RECT& rect,CWnd* pParentWnd,LPCTSTR lpszMenuName,DWORD dwExStyle,CCreateContext* pContext){HMENU hMenu = NULL;if (lpszMenuName != NULL){ // load in a menu that will get destroyed when window gets destroyed HINSTANCE hInst = AfxFindResourceHandle(lpszMenuName, RT_MENU); if ((hMenu = ::LoadMenu(hInst, lpszMenuName)) == NULL) { TRACE(traceAppMsg, 0, "Warning: failed to load menu for CFrameWnd. "); PostNcDestroy(); // perhaps delete the C++ object return FALSE; }}m_strTitle = lpszWindowName; // save title for laterif (!CreateEx(dwExStyle, lpszClassName, lpszWindowName, dwStyle, rect.left, rect.top, rect.right - rect.left, rect.bottom - rect.top, pParentWnd->GetSafeHwnd(), hMenu, (LPVOID)pContext)){ TRACE(traceAppMsg, 0, "Warning: failed to create CFrameWnd. "); if (hMenu != NULL) DestroyMenu(hMenu); return FALSE;}return TRUE;}其中完成了窗口的创建工作,里面还涉及扩展风格的调用CreateEx,具体细节请参看MSDN。此时你不禁要问,我们的事儿都让MFC做完了?工业化生产出来的窗口都是千篇一律啊,我要有我自己的风格!别急,MFC给用户提供了一个修改窗口设计的机会那就是:PreCreateWindow(CREATESTRUCT& cs) 你在MSDN中查询一下CREATESTRUCT这个结构体,你会发现它和我们的CreateWindow几乎是一模一样,这个就是MFC留给你修改窗口的一个机会。在PreCreateWindow时,会跳到CWnd::PreCreateWindow,里面有一个宏:AfxDeferRegisterClass,它的作用是:如果该窗口类没有被注册,那么就注册它;如果注册了,就什么也不管!窗口类的设计、注册、创建都已经完成,现在只剩下更新和显示了。这些工作都交由 CMyApp::InitInstance()完成: m_pMainWnd->ShowWindow(SW_SHOW); m_pMainWnd->UpdateWindow();现在if (!pThread->InitInstance())的工作已经完成,按照MAIN函数的内容,接下来该:nReturnCode = pThread->Run()了此时应该调用CMyApp的Run()函数,但是在CMyApp类中,根本没有声明或定义这样一个函数,根据多态性的原来,指针迁升,指向CWinApp::Run(),其代码位于APPCORE.CPP中:int CWinApp::Run(){ if (m_pMainWnd == NULL && AfxOleGetUserCtrl()) { // Not launched /Embedding or /Automation, but has no main window! TRACE(traceAppMsg, 0, "Warning: m_pMainWnd is NULL in CWinApp::Run - quitting application. "); AfxPostQuitMessage(0); } return CWinThread::Run();}最后你会发现,它由调用了一个CWinThread::Run(),此时你就看不到CWinThread::Run()的代码了(至少笔者没有找到,因为微软只提供了部分MFC代码。)但是你可以在MSDN中找到CWinThread::Run()的描述:Run 控制线程的函数。包含消息泵。一般不重写。 再具体点就是:Run acquires and dispatches Windows messages until the application receives a WM_QUIT message. If the thread"s message queue currently contains no messages, Run calls OnIdle to perform idle-time processing. Incoming messages go to the PreTranslateMessage member function for special processing and then to the Windows function TranslateMessage for standard keyboard translation. Finally, the DispatchMessage Windows function is called. Run is rarely overridden, but you can override it to implement special behavior.This member function is used only in user-interface threads.原来它把消息循环包装了一下,在MFC中称为消息映射(message map)的东西!至于消息映射的具体细节本人会另写文章说明!OK,MFC不再神秘,掌握了它的来龙去脉,再看其他的MFC书籍的时候,就知道我该怎么做?为什么我要这样做?起到了知其然又知其所以然的效果,这就是我所追求的技术境界2023-07-23 18:50:012
学习MFC的书籍推荐
同意楼上的!基础可以的话,看《深入浅出MFC》基础一般,就找本国人写的MFC教程看看,先熟悉下,这个百度搜索下很多;没什么基础,强烈推荐看看《windows程序设计》--Charles Petzold写的,看完这个学习MFC很轻松,你已经知道MFC是怎么实现的了!!-------------------------------------------------------------------------------Over!2023-07-23 18:50:172
基于MFC编程实例书籍
不推荐直接看MFC,要是想学扎实些,还是先看看WIN32的知识先,推荐经典书Programming Windows,书虽然有点厚,但不用全看完,主要了解下Windows下的消息机制先。接下来可以选择候俊杰的《深入浅出MFC》(第二版),虽然书介绍的是VC5.0但是作者也专门再网上说明因为和6.0差别不大,不会初第三版,本书是学MFC的绝对经典,可以看看。要是侯捷(候俊杰)那本不太对胃口,可以选择VisualC++6.0技术内幕(第五版),别被名字吓到,这也是一本经典的入门书,前身是大名顶顶的Inside Visual C++,例子多,全面。经典的书可以读很多遍,建议你购买,不过可以先去CSDN或是迅雷里下电子版读一读,对胃口了,再去买~再给你推荐十二本与MFC相关的书籍,有些跟上面的重复了。1、C++程序设计教程(钱能主编) 本书可以说是C++的入门教程!不仅对C++的基础知识的说明很到位,对C不是很过硬的人来说,还可以好好复习一下!我学习到MFC时,都还有时没时的看看这本书,看一下以前的一些问题!作为C程序员,基础很重要,所以这本书不可不看! 难度:3* 推荐:9* 2、Visual C++.net完全手册(Chris H.Pappas/William H.Murray著) 不要被.net吓到了,本书和上面的差不多,但更多的是说明一些细节的语法问题!很多的理论知识,不能做为教材,只是作为一个全面了解从c到C++再到C#的过程,书中说明的一些历史性的东西还是很有意思的!最后也说到了一些VC方面的东西,但都是点水似的过了。本书能做一般性的参考书。 难度:4* 推荐:5* 3、Visual C++程序设计培训教程(熊歆斌著) 难得的一本VC入门好书(是我从二手书店找到的)。正如书中说的:读好书,不求甚解!其中所讲的例子很是生动实用,对初学者的心理把握的很新人准,十分适合从C++到VC的学习!本书也是中央电视台电视教学的教材!绝对的难得一见的入门经典好书!(不是这本书的入门,我可能就不会学MFC了!) 难度:5* 推荐:10* 4、Visual C++6.0技术内幕(第五版)(David J.Kruglinski/Geerge Shepherd著) 本书适合VC的各个级别的学习者,内容丰富,例子全面,也很到位!读这书有时候有一种得来不费功夫的感觉!本书也是全世界程序员(VC)学习的一本好书,含盖面广,见解独到精辟!可惜作者已故!(目前本人没能看完) 难度:7* 推荐:8* 5、精通MFC(刘晓华) 本书结构安排的不是很合理!有些感觉是路虎!但知识点深入,讲解穿插着API及windwos底层的些知识。不难看出,本书是作者自己的一些学习经验的总结!回路有些跳跃,对.net也有些说明!例子比较深入,适合中及入门者。(目前正在学习) 难度:6* 推荐:8* 6、Visual C++6.0MFC类库参考手册 如其名,程序员的必备参考手册!本书其实就是VC的MSDN的中文文档。但简单一些,也有一些偷工减料的嫌疑!不怎样,作为一本难得的参考手册,特别是身边没有电子文档的时间,这可就成了救命稻草了!还少了开快译的麻烦了! 难度:5* 推荐:6* 7、深入浅出MFC(本人手头没有的书) 我没有这本书,但为什么写上来呢?其实我很想要这本书,上次在二手书店回为价格问题没有买下来的!后来在网上看到关于本书的简介,说是一本不错的MFC学习的书。而且作者是华人。所以觉得这本书应该不错,有空把它找回来看看! 难度:?* 推荐:?* 8、MFC windows程序设计(第2版)(Ieff Prosise著) "在32位windows平台上进行面向对象程序设计的首选参考书","要理解如何利用MFC库中提供的成千上万个预编译,预测试的代码的优点,本书--及其作者--将是您独一无二的选择"。这是本书的封面和封底上的原文,多的我就不说了!确实不错,目前正在学习!!! 难度:8* 推荐:9* 9、Windows API for 2000/XP实例精解(王强等著) 不用说,学习一段时间的MFC,不知道API是什么那才怪了!想知道AIP到底是什么吗??还有它与MFC到底是什么关系呢?这本书做了很好的解答!在多媒体编程时,这本书可就是老大了!不过有个电子版的PAI全解,相信那个更好!但这本书还有些实例,也很不错! 难度:7* 推荐:7* 10、windows环境下32位汇编语言和程序设计(罗云彬 著) 本书是难得一见的好书!正如书中说的,汇编过实了吗?针对这个问题书中作了深入的说明!就我个人而言,并不是说要学什么汇编!但如果了解一下程序的运行底层关系,是不是很有意思呢!书中的一些编程思想很值得学习!作者也是专心的说明了一些学习经验和编程体会! 难度:8* 推荐:5* 11、MS的一套(五本)培训教程(目前我只有三本,英方版) 想考一下自己学的怎样了吗?这几本书够你受的了,每一节后的练习都是针对性很强的东西!没有看完,主要是英文不很好! 难度:8* 推荐:5* 12、其它的书 有几本我很想要,但由于目前还没有学习到那一步,也没有时间看,所以没收集相关的书!以上这些书都只是学习很有用的!至于再深入的学习体具到某些专业性很强的方面(如网络,图象等)那就另当别论了!有一本专业MFC图象编程的书,主要说的是一些算法,而且很多有错误,也没仔细看了! 祝你学习愉快~2023-07-23 18:50:383
学过C语言之后,想学MFC应该看什么教程
《深入浅出MFC》理由1:该书能让你更加了解C++,前面几张会让你发现c++尽然可以这样写。。。理由2:该书能让你看到更多的代码,不是十几行,几十行,别怕读不懂,慢慢来!理由3:价格不是很贵,因为是老书,所以很多都打折,如果能找到熟人,买到二手的,更好,不过一般是自己买的,都舍不得买,毕竟是侯捷大师的经典之作!理由4:这本书很难弄懂,特别是对于刚刚接触C++,刚刚学完C++的人,可以练习自己的耐心!理由5:侯捷大师的力作,有些地方要反复阅读,不能看小说!2023-07-23 18:50:547
求MFC经典入门
看书吧,mfc从入门到精通。。深入浅出mfc 这两本是介绍MFC的。。另外两本, 一本是老罗的 win32汇编程序设计 一本是windows程序设计 第五版。 为什么看windows程序设计第5版呢,因为它是C语言直接调用API函数的,这方便你理解MFC, 另外为什么看老罗的WIN32汇编程序设计,不是让你学汇编,是让你对于资源 消息机制等等 更多的了解。。2023-07-23 18:51:312