visualcmfc編程實例
① Visual C++網路編程經典案例詳解的目錄
第1篇 Visual C++網路編程基礎
第1章 Visual C++網路編程概述(教學視頻:21分鍾)
1.1 網路基礎知識
1.1.1 OSI七層網路模型
1.I.2 TCP/IP協議
1.1.3 C/S編程模型
1.2 網路編程基礎
1.2.1 Sockets套接字
1.2.2 網路位元組順序
1.3 WindowsSockets介紹
1.3.1 CAsyncSocket類
1.3.2 CSocket類
1.4 小結
第2章 Socket套接字編程(教學視頻:73分鍾)
2.1 定址方式和位元組順序
2.1.1 定址方式
2.1.2 位元組順序
2.1.3 Socket相關函數
2.2 Winsock網路程序開發流程
2.2.1 VC中創建工程的步驟
2.2.2 Winsock編程流程
2.2.3 基於UDP的Sockets編程
2.2.4.基於UDP的Sockets編程
2.3 網路程序實例應用
2.3.1 TCP客戶端程序
2.3.2 TCP伺服器程序
2.4 小結
第3章 多線程與非同步套接字編程(教學視頻:116分鍾)
3.1 多線程技術
3.1.1 基本概念
3.1.2 創建線程
3.2 實現線程同步
3.2.1 臨界區對象
3.2.2 事件對象
3.2.3 互斥對象
3.3 進程間通信
3.3.1 郵槽
3.3.2 命名管道
3.3.3 匿名管道
3.3.4 小結
3.4 設置I/O模式
3.4.1 非同步I/O模式
3.4.2 WSAAsyncSelect方法
3.5 小結
第2篇 Visual C++網路編程典型應用
第4章 FTP瀏覽器(教學視頻:95分鍾)
4.1 FTP工作原理
4.1.1 FTP數據結構
4.1.2 FTP數據傳輸模式
4.1.3 伺服器進行連接
4.1.4 登錄驗證
4.1.5 關閉數據連接
4.1.6 FTP常用命令
4.1.7 數據校驗與重發控制
4.2 登錄FTP伺服器
4.2.1 連接FTP伺服器
4.2.2 登錄FTP伺服器
4.3 FTP文件處理
4.3.1 CSocketFile類的使用
4.3.2 使用CArchive類進行串列化
4.3.3 獲取FTP伺服器文件信息
4.3.4 上傳文件
4.3.5 下載文件
4.4 創建客戶端
4.4.1 建立工程
4.4.2 定義CFtp類
4.4.3 使用CFtp類編程
4.5 小結
第5章 網頁瀏覽器(教學視頻:72分鍾)
5.1 HTTP請求
5.1.1 GET方式
5.1.2 POSI方式
5.1.3 請求消息
5.2 HTTP響應
5.2.1 響應狀態信息
5.2.2 響應標題欄位信息
5.2.3 實體標題欄位信息
5.2.4 實體數據
5.3 製作個性化界面
5.3.1 工具欄編程
5.3.2 添加消息響應
5.3.3 如何實現收藏夾的功能
5.5.4.使用MicrosoftWeb瀏覽器控制項
5.4.1 建立MFC工程
5.4.2 添加控制項
5.4.3 控制項對象屬性方法
5.5 CHtmlView類
5.5.1 CHtmlView類
5.5.2 建立繼承關系
5.5.3 地址欄消息響應
5.5.4 實現查看源文件功能
5.5.5 實現刷新功能
5.6 小結
第6章 網路通信器(教學視頻:58分鍾)
6.1 通信原理
6.1.1 通信連接
6.1.2 發送接收
6.2 發送端程序
6.2.1 創建連接套接字
6.2.2 創建發送套接字
6.2.3 實現發送功能
6.3 接收端程序
6.3.1 監聽埠
6.3.2 接收數據
6.4 界面美化編程
6.4.1 界面初始化
6.4.2 設置伺服器窗口圖標
6.4.3 顯示伺服器啟動時間
6.4.4 伺服器狀態欄編程
6.5 ,J、結
第7章 郵件收發器(教學視頻:107分鍾)
7.1 調用Windows自帶的郵件發送程序
7.1.1 調用Windows進程
7.1.2 CreateProcess(1函數
7.2 SMTP會話過程
7.2.1 怎麼連接伺服器
7.2.2 SMTP命令
7.2.3 發送命令與接收響應
7.3 發送郵件
7.3.1 界面設計
7.3.2 界面初始化代碼
7.3.3 添加伺服器設置對話框
7.3.4 使用伺服器設置對話框
7.3.5 記錄程序配置信息
7.3.6 設置並連接伺服器
7.3.7 構造郵件
7.3.8 發送郵件
7.3.9 發送郵件實例
7.4 接收郵件
7.4.1 POP3簡介
7.4.2 接收郵件實例界面
7.4.3 使用接收郵件對話框
7.4.4 接收郵件
7.4.5 實現接收郵件功能
7.4.6 封裝客戶端發送與接收功能
7.4.7 顯示郵件數據
7.4.8 代碼分析
7.5 小結
第8章 網路文件傳輸器(教學視頻:87分鍾)
8.1 CFile類
8.1.1 構造函數
8.1.2 讀寫文件
8.1.3 文件關閉
8.1.4 文件定位
……
第9 實用播放器(教學視頻:120分鍾)
第10 P2P網路播放器(教學視頻:107分鍾)
第11 Q版聊天軟體(學視頻:60分鍾)
第3篇 Visual C++串口通信
第12 串口通信基礎(教學視頻:22分鍾)
第13 串口通信編程應用(教學視頻:69分鍾)
第14 VC發送手機簡訊(教學視頻:73分鍾)
② 基於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圖象編程的書,主要說的是一些演算法,而且很多有錯誤,也沒仔細看了!
祝你學習愉快~
③ 我是學VC6.0的
VC6從入門到精通-基礎篇 VC6從入門到精通-VC與INTERNET Visual C++ 使用指南
Visual C++知識庫 Visual C++ MFC入門教程 Visual C++ 6 參考大全
跟我學 VISUAL C++ 6.0 Visual C++ 6.0語言參考手冊 Visual Lisp開發人員手冊
Visual C++ 從入門到精通 Visual J++ 6.0 WFC 類庫手冊 Visual InterDev 從入門到精通
Visual C++ 6.0用戶開發手冊 VC編程指南 VC++6.0 類庫參考手冊
VC++database編程大全 VC6.0 運行庫參考手冊 Visual C++6.0運行庫參考手冊
VC++6.0模板庫手冊 VC++面向對象入門 VC新手學堂
Visual C++ 6.0預處理器參考手冊 VC5.0開發人員參考手冊 VC6中文版程序員開發指南
Visual J++ 6.0 WFC類庫參考手冊一 VC6 模板庫參考手冊 VC++編程指南
Visual J++ 6.0 WFC類庫參考手冊二 VC6.0 MFC類庫參考手冊 VC6從入門到精通-VC與資料庫管理
MS VC++ 6.0 MFC類庫參考手冊 一 MS VC++ 6.0 MFC類庫參考手冊 二 走進Visual C++
實例篇
Visual C++ 實踐與提高-圖形圖像編程篇 Visual C++ 數字圖像處理 VC-MFC編程實例
Visual C++實踐與提高_環境剖析IDE篇 Visual C++程序設計:基礎與實例分析 Visual C++ 6.0實例
Visual C++課程設計案例精編 Visual C++ 6.0開發與實例 VISUAL C++擴展編程實例
Visual C++6.0高級編程技巧與實例 VC++擴展編程實例 Visual C++編程技巧與範例
戰勝Visual C++必做練習50題 Visual C++6.0編程與實例解析 VC-MFC擴展編程實例
MFC資源大全 精通Visual C++ 6.0 Visual C++程序模塊集錦
Visual C++_Turbo C串口通信編程 Visual C++ 6.0應用編程150例 Visual C++ 6.0實例教程電子教案
教程篇
MFC Windows程序設計 Visual C++網路通信協議分析 VC6.0資料庫編程
Visual C++ 學習教程 Visual_C++_新起點—6.0實用教程 Visual C++ 6-24學時學習教程
Visual C++ 6.0 21天自學教程 VC++網路教程 Visual C++ MFC 簡明教程
VC 資料庫編程三部教學 Visual C++ 6.0 資料庫編程大全 VC新手學堂簡明教程
Visual C++ 6.0 開發寶典 Visual C++ 6.0 教程 Visual C++ 6.0 高級編程
VC++6.0培訓教程 Visual J++ 6.0 即學即用 Visual C++與面向對象程序設計教程
Visual C++6.0高級開發教程 Visual C++.NET 寶典 Visual C++5.0 程序設計
技術與應用
VC++6.0 用戶界面製作技術與應用實例 深入淺出WINDOWS MFC程序設計 Visual C++ 角色扮演游戲程序
Visual C++6.0程序設計提高篇 VC++編程資料 VC++ 函數經典
VC++與Matlab混合編程的快速實現 Visual C++ 5.0易學活用 VISUAL C++ 設計WIN32應用程序
Visual C++入門與應用 Visual C++6.0開發寶典 Visual C++6.0技術內幕
VC++6編程方法 深入VC編程內幕 VC編程經驗總結
用VC++編寫USB介面通信程序 用VC開發CGI 瘋狂VC技巧集
VC6開發寶典 Visual C++經典 Visual C++ 6 輕松進階
VC編程常用捷徑 MFC技術內幕 VC深入編程
參考資料:www.chinaitlab.com
④ 高分懸賞visual c++編程題
long factorial(int m) //用於求階乘
{
if(m==0||m==1)
return 1;
else return m*factorial(m-1);
}
long forSum(int n) //用於求階乘之和
{
int i=0;
long y=0;
for(i=1;i<=n;i++)
{
y+=factorial(i);
}
return y;
}
#include <stdio.h>
int main()
{
long y=0;
int n=0;
printf("請輸入一個 n:");
scanf("%d",&n);
printf("y=%d\n",forSum(n));
printf("n=%d\n",n);
return 0;
}
第二題:
int weiShu(int x) //用於判斷數x是幾位數
{
int flag=0;
do
{
x=x/10;
flag++;
}while(x!=0);
return flag;
}
#include <stdio.h>
{
int flag=0,x=0,i=0;
int sum=0;
printf("請輸入一個數 x=");
scanf("%d",&x);
flag=weiShu(x);
for(i=1;i<=flag;i++)
{
sum+=x%10;
x=x/10;
}
printf("%d各個位上數字之和是%d\n",x,sum);
}
⑤ c語言的經典編程例子
程序員》推薦C++ 圖書三人談
主持人:熊節(透明),《程序員》雜志編輯,C-View成員
嘉 賓:孟岩(夢魘),聯想公司掌上設備事業部應用開發處任職,C-View成員。與侯捷先生合譯《C++ Standard Library》一書
金尹(惡魔),上海天宇公司CTO,在《程序員》連載有「自由與繁榮的國度」系列文章
透明:「學C++用哪本書入門」,這是被問得最多的一個問題。但是哪一本書是最好的入門書?似乎很難找到答案。《C++ Primer》太厚,《Effective C++》對讀者要求比較高,《Essential C++》又常常被批評為「太淺」。
其實說穿了:no silver bullet。想從一本書學會C++,那是不可能的。有朋友問我如何學C++,我會建議他先去找本數據結構書,把裡面的習題全部用C++做一遍,然後再去看《Effective C++》。myan經常說「要在學習初期養成好習慣」,我對此頗不以為然。
個人認為,《Essential C++》適合作教材,《C++ Primer》適合作參考書,《Effective C++》適合作課外讀物。
惡魔:很後悔當初買了《C++ Primer》。因為從我個人角度來看,它的功能效用基本是和《The C++ Programming Language》重合。當然對於入門來說,它還是很不錯的。但是《C++ Primer》太厚,一來導致看書極其不方便,二來系統學習需要花比較長的時間。對於目前這個越來越快餐化的時代來說,的確有很多不適合的地方,不過可以作為初學者的參考書。現在我以一塊K3 CPU的代價把它借給了別人,希望我那位同事能夠從中得到一些益處。
如果已經具備了C基礎,我建議看國內的書,例如錢能的《 C++大學教程(第二版) 》。(如果沒有C的基礎還是看譚浩強的C語言)。這本書對C講得還算比較清晰,有很多習題值得一做,特別是最後的struct和union兩個部分。其中的一些演算法比較拖沓和繁瑣(比如樹和鏈表的遍歷演算法),讀者可以嘗試修改這些例子,作為最後對C語言的一些總結測試。
夢魘:這個問題讓我想起四五年前的情形。今天對於C++有一點認識的人,多半是從那幾年就開始學C++了。那時根本沒有品牌觀念。從書店裡找一本C++書,如果看著還算明白,就買下來。我記得那時候宛延闓、張國鋒、麥中凡教授的書都受到很高的贊譽。我個人最早的一本C++書是Greg Perry的一本書,今天想起來,其實是一本打著C++旗號的C語言教程。對我作用最大的一本書是國防科技出版社出版的一本書,書名記不得了,作者叫斯蒂芬·布萊哈。
透明:還記得以前曾批評過一本C++書,是北航出的,整本書就沒有出現過class關鍵字。那本書,說穿了其實只是介紹了C語言和iostream庫的用法,根本不能算C++。而當時我常常推薦的一本書是電子科技大學張松梅老師的C++教程。那本書,直到今天來看也沒有太大的問題,唯一的缺憾就是由於年代久遠,許多東西已經過時了。而對於一本技術書籍來說,「過時」是最不可接受的。
總體來說,那時使用C++的人真是在「盲人摸象」。不過這也有好處,就是對C++的很多細節能搞清楚,以後看到經典好書時比較容易理解;當然壞處就是概念不清,甚至都不知道C++和Visual C++、Borland C++到底有什麼不一樣。
夢魘:整個90年代,其實大部分人對於C++的認識都似是而非。一開始是等同於Borland C++,後來是等同於Visual C++和MFC。所以一般來說,打著BC和VC旗號的書賣得很好,人們覺得這就是C++。而我比較幸運,布萊哈的那本書雖然從現在的眼光來看談不上高超,但基本路子是對的。可能是因為原書是給UNIX程序員的培訓教材,所以沒有讓我一開始就形成「C++ == VC++」的認識。
其實一直到1996年,我們那裡搞計算機的都是唯Borland C++馬首是瞻的,到了VC 4.0出來,一下子格局全變了。1997年VC5推出之後,書店裡MFC書鋪天蓋地,學MFC的人,頭抬得都比別人高一些。不過現在看來,那時候大部分的MFC書都是三流貨色。我曾經有一段時間認為,那一批程序員中間有不少被誤導了。根本原因就是相對的封閉。
透明:我覺得一本書的價值有兩方面:第一,教給你實用的技術;第二,促使你去思考。對於一本介紹VC(或者說MFC)使用方法的書,我根本不希望它能促使我有什麼思考,所以我就一定要求它在技術上精益求精完美無瑕。我剛開始用VC的時候,買的第一本書就是潘愛民老師翻譯的《VC技術內幕》(第四版),沒有受到那些「三流貨色」的誤導,應該說是很幸運的。
夢魘:1999年機械工業出版社開始出版「計算機科學叢書」,其中的《Thinking in C++》第一版受到了廣泛的歡迎。其實我一直不認為這本書很出色,雖然拿過一次大獎。然而我們都得承認,這本書在C++書籍領域里第一次建立了品牌觀念,很多初學者開始知道,不是隨便買哪一本都一樣的。再往後就是2000年的《 深入淺出MFC(第二版) 》第二版,以及侯先生在《程序員》上發表的那一篇《C++/OOP大系》,加上整個大環境的變化,品牌觀念深入人心,C++書籍市場終於開始逐漸與世界同步。
回想往事,我的感覺是,那個需要戰戰兢兢選擇入門書的時代已經過去,今天的C++初學者,大可以放心地買口碑好、自己讀起來思路順暢的書,入門不再是太大的問題。還有一些程序員已經學了幾年C++,但看到今天出版的一些新書,感覺比較陌生,這也不是什麼問題。侯先生經常說「凡走過必留下足跡」,所謂「走彎路」,未必不是一件好事。
至於具體的推薦表,就不好一概而論了。總之在我的印象里,《Essential C++》、《C++ Primer》、錢能教授的C++教程,都不錯。甚至有人一上來就看Bjarne Stroustrup的《The C++ Programming Language》,只要他喜歡,也沒什麼不可以。
透明:我同意你的觀點。不管怎麼說,編程是門實踐性非常強的學問。要想對C++對象模型有深入的了解,最好的辦法就是寫一串程序去看結果;要想學會OOP,也只能從項目中學。對於初學者,最好的學習方法就是不停地寫程序,寫真正有用的程序,寫到有問題的時候就去查書,於是自然就會知道哪本書好哪本書不好。不過我們的教育制度能不能讓大學里的學生們有這樣的學習機會,我表示懷疑。
以我的經驗,學C++有兩個門檻:入門和使用。完全看不懂C++,這是一個門檻,但是只要有一本合適的入門書,很快就能跨過。要想真正用上C++,卻不是件很容易的事情。尤其對於學生來說,接觸到的東西多是「玩具」,很難有實戰的機會。所以經常看見有人問「C++到底能做什麼」,這是C++學習中一個比較麻煩的問題。我們都是做了相當長時間的C++程序之後才看到一些真正經典的書,也正是因為走了相當長的彎路之後才知道這些書的經典之所在。所謂彎路,我想也是一種必須的積累。就算一開始就看《Essential C++》和《C++ Primer》,沒有兩三年的時間恐怕還是難有所得。
惡魔:有兩句十分有道理的話,一是我大學的C語言老師說的「寫程序不如說是抄程序」,另一句是一網友說的「好的設計來自借鑒,天才的設計來自剽竊」。對於我這個理性批判主義者來說,這兩句話的確不太適合。但是無論從哪個角度來講,對於初學者來說,剽竊大師的作品是通向成功的最快捷徑。
我個人認為,對於C++的初學者來說,首先要確定自己專業領域內主要使用的特性的方向。因為C++的特性如此眾多,初學者想貪多基本是不可能成功的。C++的編程範式基本可以分為ADT+PP、GP和OO三個方向。對於ADT+PP範式來說,初學者的主要問題不是學習C++,而是學習C的使用。對於這樣的初學者,國內的幾本書還是寫得比較清楚,符合中國人的習慣,比如譚浩強的《C語言教程》、錢能的《C++語言大學教程》。這兩本書我首推第一本,因為這一本我潛心研究了一年,這本書當中很多程序是可以剽竊的,而且可以對這些程序進行加工和提升。比如結構這一章中,它所給出的用struct來實現鏈表、二叉樹的演算法是相當蹩腳的。學習ADT+PP的初學者將這本書揣摩透以後可以嘗試修改這兩個程序。另外這本書的第二版稍微涉及了一些關於「類」的內容。學習ADT+PP的初學者,可以不被OO中的一些專有特性擾亂自己的思路,對於類層次扁平、無繼承、無多態的程序編寫是有很大好處的。
透明:你好象比較推崇國內教授寫的書。現在社會上有種不好的風氣:一捧就捧上天,一貶就貶下地。就好象對待譚教授的書,前幾年是奉為經典,這幾年又有很多人使勁批評。學C++更是有點「崇洋媚外」,總是覺得初學就應該看《Essential C++》。我看這種觀點也是片面的。
惡魔:當然《Essential C++》也值得看看。但是我個人覺得這本書沒有譚浩強的《C語言教程》來得好。主要原因是:第一,C++的所有特性都點到了,但是不深,看了以後會三心二意沒有方向;第二,可以抄襲借鑒的例子太少。《C語言教程》中有很多有趣的問題,比如猴子吃桃、漢諾塔等等,這些例子對於剛剛涉及C/C++語言編程的人來說是學習編程很好的例子。《Essential C++》只能是前兩本書看透以後,作為學習C++特性的一個過渡性的書籍。讓讀者真正領略到什麼是C++的編程、和C編程的不同點在哪裡。
透明:我發現一個很有趣的現象:初學者往往喜歡問「哪本書比較好」,這讓我很是不解。這有點像一個剛學打籃球的人問「王治郅和科比誰比較厲害」。當然科比更厲害一些。但如果你是想學打籃球,這兩個人都非常非常有資格教你,你跟誰學都能學得很強——關鍵不是在於你選哪個老師,而是在於你自己用多少功夫去學。
透明:回到原來話題。學會了C++的語法,能看懂C++代碼之後,必須有些書來指導進階(或者叫指點迷津)。我覺得《設計模式》很好,能夠讓讀者看到一些精妙的用法。不過正如我經常說的,模式帶來的麻煩和好處一樣多,甚至麻煩還要更多。而且,C++本身的問題使得在C++中使用GoF模式愈加麻煩。
夢魘:《Design Patterns》這本書絕對是不可以沒有的,而且中英文版都不可少。最初我看中文版,說實話看不懂,但是也不覺得人家翻譯得不好,所以就想,大概是原文就很難懂,加上自己水平有限。於是總是想著再找幾本patterns的書來看。後來找到幾本書,口碑還不錯,不過水平高下,一比就出來了,還是那本《Design Patterns》最經典,最耐看。英文版出來之後,兩個版本對照看,明白多了。現在覺得,其實就設計模式來講,把這本看明白了就很不錯了,不用再花費很多心思找其他的書。我現在的包里始終夾著這本書,隨身攜帶,有備無患。
至於說設計模式的副作用,和可能帶來的弊端,我的體會也挺多。不過是這樣,我們想一想,究竟什麼情況下設計模式可以用得很好呢?一種是有經驗豐富的人引導,比如要是Robert Martin帶隊,你在某個地方用錯了設計模式,他就會指出來,說這里不對,將來會產生什麼樣的弊端。對於他來說,豐富的實踐經驗足以支持他進行「預測型」設計。但是大部分人沒這個能力,因此我們只好走第二條路和第三條路,就是「試探型」設計和「重構型」設計。遇到一個問題,你覺得用某種模式挺合適的,就大膽地用了,成功是積累經驗,發現不好,出了問題了,只好改回來,那也是積累教訓。這叫做「試探型」。至於重構,應該算是最有組織、成功率最高的工程化方法。先把問題「quick and dirty」地解決了,所有的暗礁都暴露出來,然後再根據實際情況採用合適的模式優化設計。現在XP和UP都高度重視refactory,UP在Elaboration和Construction階段都鼓勵抽出專門的iterations進行重構。所以說如果組織快速的軟體開發,當然比較傾向於這條路——打成功率嘛。
透明:講到重構,我順便說說《Refactoring》這本書的影響。從工程本身的角度來說,你所謂的「重構型設計」是沒有什麼問題的。但中國的開發者(也包括我在內)往往比較沖動,比較容易相信銀彈的存在。曾經有那麼一段時間,我在Java中嘗試過了重構的方法之後,又拿到C++中去嘗試。結果發現,在Java中速度非常快的重構過程,到C++中就被減慢了。究其原因,就是因為C++和Java的約束條件不同。拿著Java中成功的案例直接套C++,不失敗才怪。
所以,我必須說:《Refactoring》這本書很有價值。但對於C++程序員來說,它的價值是讓你思考,思考這種方法的可行性。如果一個C++程序員沒有打算遷移到Java,那麼我必須告訴他:《Refactoring》這本書不是讓你照著它用的,甚至不是讓你去相信它的。對於C++程序員,《Refactoring》全書可以放心相信的只有第13章,其他的部分,都必須非常謹慎地對待。
夢魘:我還要就「試探型」的方法多說兩句,我覺得對於個人發展來講,「試探」也是必不可少的,撞牆不可怕,高水平的人不都是撞出來的嗎?你失敗了一次,就知道這個模式有什麼潛在的問題,下次再用,就會多看幾步,像下棋似的。撞的多了,路數就出來了。
我不知道你們是否有這個感覺:用錯了模式,吃了虧,再回過頭去翻翻《Design Patterns》,看到人家早就指出來這個問題,不過就是那麼幾句話,原來看上去乾巴巴的,現在覺得句句都講到心坎上,GoF的形象馬上就高大起來,還帶著光環,感覺是既興奮又懊悔。
透明:現在回頭來看,我更欣賞myan推薦給我的《Designing Object-Oriented C++ Applications Using Booch Method》。這本書能夠幫助C++程序員理清思路培養習慣,可惜國內沒有引進。相比後來商業味濃厚的UML系列書籍,我覺得這本書對於面向對象的闡釋精闢獨到,至今未有能出其右者。
夢魘:剛才我們兩人都說到Robert Martin,他可是我的榜樣。那本1995年的《Designing Object Oriented C++ Application》,我覺得是每一個C++軟體工程師都應該反復研讀的書。可惜不僅國內沒有引進,在國外的名氣也不大。如果你覺得面向對象的那些道理你好像都明白,可就是一遇到實際問題就使不上勁,那這本書就是你的最佳導師。
提到理清思路,還有一本書不得不提,就是Andrew Koenig的《Ruminations On C++》。每個人都應該問自己,我學了這么多年的C++,究竟什麼是C++最基本的設計理念?遇到問題我第一個直覺是什麼?第一個試探型的解決方案應該具有那些特點?如果你不能給出明確的答案,就應該認真地去讀這本書,讀完了你就有了「主心骨」。
透明:插一句話,談談「推薦書」的問題。入門書基本上是放之四海而皆準的,所以推薦的意義也不大。而入門後的發展方向,每個人不同,這個時候就需要「高人」的指點。舉個例子:我學C++的時候,myan還不認識我,所以也沒有給我推薦書,我還是學過來了,所以即使你當時向我推薦了《Essential C++》或者《C++ Primer》,我也不會太感謝你;但在我認真研究OO的時候,你推薦Robert Martin那本書給我,對我幫助就特別大,而且我從別的地方也很難找到類似的推薦,所以我就很感謝你。
一個程序員,必須有framework的意識,要學會用framework,還要主動去分析framework(在這方面,《Design Patterns》能有一定的幫助)。但是,真正高質量、成氣候的framework的書恐怕也就只有針對MFC的。從這個角度來說,MFC縱有千般不是,C++程序員都非常有必要先去用它、熟悉它、研究它,甚至藉助《深入淺出MFC》這樣的書來剖析它。不然,很難有framework的意識和感覺。
當然,另一個framework也很好,那就是STL。不管用不用MFC、STL,對這兩個東西的掌握和理解都是極有幫助的。最近我又在看《深入淺出MFC》,雖然已經不用MFC編程了,但幫助是一定有的。
夢魘:MFC和STL方面,我還是比較推崇侯先生的兩本書《深入淺出MFC》和《STL源碼解析》。
《深入淺出MFC》這本書,名氣自然是大得不得了,不過也有不少人批評。其實書也沒有十全十美的,批評當然是少不了的,不過有的時候我看到有人評論這本書,把它跟Inside VC相比,真的是牛頭不對馬嘴。
你剛才其實說得很對,程序員應該有一點framework意識。而這本《深入淺出MFC》與其說是在講MFC編程,不如說通篇是在拿MFC為例分析Application Framework的架構和脈絡。所以無論你對於MFC本身是什麼態度,這本書對每一個C++程序員都有很大的益處。
透明:是的。《VC技術內幕》會告訴你「DYNAMIC_CREATE這個宏怎麼用」,《深入淺出MFC》則告訴你「DYNAMIC_CREATE這個宏是怎麼實現的」。所以,如果你只需要在VC下寫一些小應用程序,《深入淺出MFC》的價值並不太大;但是,如果你需要設計一個稍微大一點的東西(不一定是framework),MFC的設計思想就會有所幫助。
夢魘:另外,我覺得對於MFC也應該有一個公允的評價。過去是吹捧得天上有地下無,書店裡鋪天蓋地都是MFC的書,搞得大家只知有MFC,不知有C++,甚至直到現在還有人問:「我是學MFC呢,還是學C++?VC++是不是比C++更高級的語言?」MFC成了一尊神像,阻礙了人們的視線。所以得把它從神壇上拉下來。這就是過去一兩年有很多人,包括我在內批評MFC的一個目的。可是現在大家視野開闊了,.NET也出來了,MFC不再是神像了,少數人就開始以貶損MFC為樂了。我覺得這種態度是不對的。
什麼叫好的框架?我覺得在十幾年的時間能夠象MFC這樣保持穩定並且不斷進步的框架就是好的框架。可能我們在一些具體的設計問題上有不同看法,覺得「這個地方這么設計不是更漂亮嗎?」很多時候是的,但是這不重要,重要的是MFC成熟穩定、有十幾年的成功經驗,這是最了不起的東西。
另外一點,MFC中間包括著學習Win32 API編程的最佳資料。這是除了其framework方面之外的另一個亮點。我現在使用Win32 API開發,但是經常參考MFC的源代碼,收獲很大。
透明:STL方面,我對於剖析它的源代碼興趣並不大,畢竟裡面源代碼多是演算法問題。所以,《STL源碼剖析》我也只是隨便翻翻就束之高閣了。我覺得這本書用來做計算機系的數據結構和演算法教材不錯,不知道有沒有老師樂意這樣做。
對於STL,我的態度一向都是「應用至上」。不過,我一直認為SGI STL本身就是一本精彩的書,一本數據結構和演算法的經典參考書,同時也是泛型技術的參考書。想知道一個演算法是如何實現的,看看STL源代碼就行;想知道如何使用type traits,STL源代碼裡面也有例子。看別人寫的書,總覺得隔著一層紗,有點撓不到癢處的感覺。SGI STL的代碼寫得非常漂亮,一個C++程序員如果不看看這本書,實在是可惜。
夢魘:至於STL,除了《STL源碼解析》之外,我舉賢不避親,強烈推薦侯先生與我合譯的那本《The C++ Standard Library》。這本書質量之高是無需懷疑的。我現在手邊常備此書,隨時查閱,對我幫助很大。
透明:C++和Java相比,最大的優勢就是它沒有一個專門的公司來管它,最大的弱點也是它沒有一個專門的公司來管它。Java程序員在學會簡單的語法之後,立刻進入SUN提供的framework,一邊用這個現成的framework做實際開發,一邊在開發過程中繼續學習Java一些幽深的特性。而這個時候,C++程序員恐怕還在問「VC和BCB哪個好」呢。這無疑是浪費時間。
夢魘:剛才你說Java和C++的優劣,這個話題已經成了我們這個年代永不消失的聲波了。我也不想再談這個。不過有一點我得說清楚:現在我們很多用C++的人吃了不少苦頭,探過脖子去看看Java,覺得它真是太可愛了,這種印象是不準確的。另外,Java也不簡單,而且會越來越龐大復雜。在很多場合,Java還不具有競爭力。至於將來如何,我看有些Java愛好者也過分樂觀了,似乎計算機科學界幾十年解決不了的問題都可以借著Java的東風解決掉,恐怕沒那麼容易。
透明:那當然。我再次強調:No Silver Bullet。讀書很重要,但古人說「行萬里路,讀萬卷書」,還是把「行路」放在「讀書」前面。尤其對於技術書籍,如果它不能幫我解決問題、不能給我帶來非常實際的利益,那麼我是不會去讀它的。惡魔說得對,我們這個社會很快餐,我們這個行業尤其很快餐,我們也只能努力適應它。
⑥ mfc網路編程中,我的自己的電腦上輸入IP怎麼不能連接上
言,匯編語言,高級語言三大類。
電腦每做的一次動作,一個步驟,都是按照以經用計算機語言編好的程序來執行的,程序是計算機要執行的指令的集合,而程序全部都是用我們所掌握的語言來編寫的。所以人們要控制計算機一定要通過計算機語言向計算機發出命令。
計算機所能識別的語言只有機器語言,即由0和1構成的代碼。但通常人們編程時,不採用機器語言,因為它非常難於記憶和識別。
目前通用的編程語言有兩種形式:匯編語言和高級語言。
匯編語言的實質和機器語言是相同的,都是直接對硬體操作,只不過指令採用了英文縮寫的標識符,更容易識別和記憶。它同樣需要編程者將每一步具體的操作用命令的形式寫出來。匯編程序通常由三部分組成:指令、偽指令和宏指令。匯編程序的每一句指令只能對應實際操作過程中的一個很細微的動作,例如移動、自增,因此匯編源程序一般比較冗長、復雜、容易出錯,而且使用匯編語言編程需要有更多的計算機專業知識,但匯編語言的優點也是顯而易見的,用匯編語言所能完成的操作不是一般高級語言所能實現的,而且源程序經匯編生成的可執行文件不僅比較小,而且執行速度很快。
高級語言是目前絕大多數編程者的選擇。和匯編語言相比,它不但將許多相關的機器指令合成為單條指令,並且去掉了與具體操作有關但與完成工作無關的細節,例如使用堆棧、寄存器等,這樣就大大簡化了程序中的指令。同時,由於省略了很多細節,編程者也就不需要有太多的專業知識。
高級語言主要是相對於匯編語言而言,它並不是特指某一種具體的語言,而是包括了很多編程語言,如目前流行的VB、VC、FoxPro、Delphi等,這些語言的語法、命令格式都各不相同。
高級語言所編制的程序不能直接被計算機識別,必須經過轉換才能被執行,按轉換方式可將它們分為兩類:
解釋類:執行方式類似於我們日常生活中的「同聲翻譯」,應用程序源代碼一邊由相應語言的解釋器「翻譯」成目標代碼(機器語言),一邊執行,因此效率比較低,而且不能生成可獨立執行的可執行文件,應用程序不能脫離其解釋器,但這種方式比較靈活,可以動態地調整、修改應用程序。
編譯類:編譯是指在應用源程序執行之前,就將程序源代碼「翻譯」成目標代碼(機器語言),因此其目標程序可以脫離其語言環境獨立執行,使用比較方便、效率較高。但應用程序一旦需要修改,必須先修改源代碼,再重新編譯生成新的目標文件(* .OBJ)才能執行,只有目標文件而沒有源代碼,修改很不方便。現在大多數的編程語言都是編譯型的,例如Visual C++、Visual Foxpro、Delphi等。
[NextPage]
學習編程,從何入手
如果您想學習編程,卻又不知從何入手,那麼您不妨看看下面的幾種學習方案,可能會給您一些啟示吧!
==============================================
方案一 Basic語言 & Visual Basic
優點
(1)Basic 簡單易學,很容易上手。
(2)Visual Basic 提供了強大的可視化編程能力,可以讓你輕松地做出漂亮的程序。
(3)眾多的控制項讓編程變得象壘積木一樣簡單。
(4)Visual Basic 的全部漢化讓我們這些見了English就頭大的人喜不自禁。
缺點
(1)Visual Basic 不是真正的面向對象的開發文具。
(2)Visual Basic 的數據類型太少,而且不支持指針,這使得它的表達能力很有限。
(3)Visual Basic 不是真正的編譯型語言,它產生的最終代碼不是可執行的,是一種偽代碼。它需要一個動態鏈接庫去解釋執行,這使得Visual Basic 的編譯速度大大變慢。
綜述:方案一適合初涉編程的朋友,它對學習者的要求不高,幾乎每個人都可以在一個比較短的時間里學會vB編程,並用VB 做出自己的作品。對於那些把編程當做游戲的朋友來說,VB 是您最佳的選擇。
Basic/Visual Basic簡介
==============================================
方案二 Pascal語言 & Delphi
優點
(1)Pascal語言結構嚴謹,可以很好地培養一個人的編程思想。
(2)Delphi是一門真正的面向對象的開發工具,並且是完全的可視化。
(3)Delphi使用了真編譯,可以讓你的代碼編譯成為可執行的文件,而且編譯速度非常快。
(4)Delphi具有強大的資料庫開發能力,可以讓你輕松地開發資料庫。
缺點
Delphi幾乎可以說是完美的,只是Pascal語言的過於嚴謹讓人感覺有點煩。
綜述: 方案二比較適合那些具有一定編程基礎並且學過Pascal語言的朋友。
Pascal語言簡介
Delphi簡介
==============================================
方案三 C語言 & Visual C++
優點
(1)C語言靈活性好,效率高,可以接觸到軟體開發比較底層的東西。
(2)微軟的MFC庫博大精深,學會它可以讓隨心所欲地進行編程。
(3)VC是微軟製作的產品,與操作系統的結合更加緊密。
缺點
對使用者的要求比較高,既要具備豐富的C語言編程經驗,又要具有一定的WINDOWS編程基礎,它的過於專業使得一般的編程愛好者學習起來會有不小的困難。
綜述: VC是程序員用的東西。如果你是一個永不滿足的人,而且可以在編程上投入很大的精力和時間,那麼學習VC你一定不會後悔的。
C語言簡介
==============================================
方案四 C++語言 & C++ Builder
優點
(1)C++語言的優點全部得以繼承。
(2)完全的可是化。
(3)極強的兼容性,支持OWL、VCL和MFC三大類庫。
(4)編譯速度非常快。
缺點
由於推出的時間太短,關於它的各種資料還不太多。
綜述:我認為C++ Builder 是最好的編程工具。它既保持了C++語言編程的優點,又做到了完全的可視化。
C語言簡介
==============================================
方案五 SQL語言 & Power Builder
對於一些傳統的數據開發人員來說,Foxpro系列也許讓他們感到更加熟悉。但是對於初學者來說,PowerBuilder也許是最好的資料庫開發工具。各種各樣的控制項,功能強大的PowerBuilder語言都會幫助你開發出自己的資料庫應用程序。
[NextPage]
JSP簡介
在Sun正式發布JSP(Java Server Pages)之後,這種新的Web應用開發技術很快引起了人們的關注。JSP為創建高度動態的Web應用提供了一個獨特的開發環境。按照 Sun 的說法,JSP能夠適應市場上包括Apache WebServer 、IIS4.0在內的85%的伺服器產品。
JSP與ASP的簡單比較
JSP與Microsoft的ASP技術非常相似。兩者都提供在HTML代碼中混合某種程序代碼、由語言引擎解釋執行程序代碼的能力。在ASP或JSP環境下,HTML代碼主要負責描述信息的顯示樣式,而程序代碼則用來描述處理邏輯。普通的HTML頁面只依賴於Web伺服器,而ASP和JSP頁面需要附加的語言引擎分析和執行程序代碼。程序代碼的執行結果被重新嵌入到HTML代碼中,然後一起發送給瀏覽器。ASP和JSP都是面向Web伺服器的技術,客戶端瀏覽器不需要任何附加的軟體支持。
ASP的編程語言是VBScript之類的腳本語言,JSP使用的是Java,這是兩者最明顯的區別。
此外,ASP與JSP還有一個更為本質的區別:兩種語言引擎用完全不同的方式處理頁面中嵌入的程序代碼。在ASP下,VBScript代碼被ASP引擎解釋執行;在JSP下,代碼被編譯成Servlet並由Java虛擬機執行,這種編譯操作僅在對JSP頁面的第一次請求時發生。
運行環境
執行 JSP 代碼需要在伺服器上安裝 JSP 引擎。此處我們使用的是 Sun 的 JavaServer Web Development Kit ( JSWDK )。為便於學習,這個軟體包提供了大量可供修改的示例。安裝 JSWDK 之後,只需執行 startserver 命令即可啟動伺服器。在默認配置下伺服器在埠 8080 監聽,使用 即可打開預設頁面。
在運行 JSP 示例頁面之前,請注意一下安裝 JSWDK 的目錄,特別是" work "子目錄下的內容。執行示例頁面時,可以在這里看到 JSP 頁面如何被轉換成 Java 源文件,然後又被編譯成 class 文件(即 Servlet )。 JSWDK 軟體包中的示例頁面分為兩類,它們或者是 JSP 文件,或者是包含一個表單的 HTML 文件,這些表單均由 JSP 代碼處理。與 ASP 一樣, JSP 中的 Java 代碼均在伺服器端執行。因此,在瀏覽器中使用"查看源文件"菜單是無法看到 JSP 源代碼的,只能看到結果 HTML 代碼。所有示例的源代碼均通過一個單獨的" examples "頁面提供。
Java Servlet是一種開發Web應用的理想構架。 JSP以Servlet技術為基礎,又在許多方面作了改進。JSP頁面看起來象普通HTML頁面,但它允許嵌入執行代碼,在這一點上,它和ASP技術非常相似。利用跨平台運行的JavaBean 組件,JSP為分離處理邏輯與顯示樣式提供了卓越的解決方案。JSP必將成為ASP技術的有力競爭者。
[NextPage]
SQL語言簡介
SQL全稱是「結構化查詢語言(Structured Query Language)」,最早的是IBM的聖約瑟研究實驗室為其關系資料庫管理系統SYSTEM R開發的一種查詢語言,它的前身是SQUARE語言。SQL語言結構簡潔,功能強大,簡單易學,所以自從IBM公司1981年推出以來,SQL語言,得到了廣泛的應用。如今無論是像Oracle ,Sybase,Informix,SQL server這些大型的資料庫管理系統,還是像Visual Foxporo,PowerBuilder這些微機上常用的資料庫開發系統,都支持SQL語言作為查詢語言。
Structured Query Language包含4個部分:
數據查詢語言DQL-Data Query Language SELECT
數據操縱語言DQL-Data Manipulation Language INSERT, UPDATE, DELETE
數據定義語言DQL-Data Definition Language CREATE, ALTER, DROP
數據控制語言DQL-Data Control Language COMMIT WORK, ROLLBACK WORK
SQL的歷史
在70年代初,E.E.Codd首先提出了關系模型。70年代中期,IBM公司在研製 SYSTEM R關系資料庫管理系統中研製了SQL語言,最早的SQL語言(叫SEQUEL2)是在1976 年 11 月的IBM Journal of R&D上公布的。
1979年ORACLE公司首先提供商用的SQL,IBM公司在DB2 和SQL/DS資料庫系統中也實現了SQL。
1986年10月,美國ANSI採用SQL作為關系資料庫管理系統的標准語言(ANSI X3. 135-1986),後為國際標准化組織(ISO)採納為國際標准。
1989年,美國ANSI採納在ANSI X3.135-1989報告中定義的關系資料庫管理系統的SQL標准語言,稱為ANSI SQL 89, 該標准替代ANSI X3.135-1986版本。該標准為下列組織所採納:
● 國際標准化組織(ISO),為ISO 9075-1989報告「Database Language SQL With Integrity Enhancement」
● 美國聯邦政府,發布在The Federal Information Processing Standard Publication(FIPS PUB)127
目前,所有主要的關系資料庫管理系統支持某些形式的SQL語言, 大部分資料庫打算遵守ANSI SQL89標准。
SQL的優點
SQL廣泛地被採用正說明了它的優點。它使全部用戶,包括應用程序員、DBA管理員和終端用戶受益非淺。
(1) 非過程化語言
SQL是一個非過程化的語言,因為它一次處理一個記錄,對數據提供自動導航。SQL允許用戶在高層的數據結構上工作,而不對單個記錄進行操作,可操作記錄集。所有SQL 語句接受集合作為輸入,返回集合作為輸出。SQL的集合特性允許一條SQL語句的結果作為另一條SQL語句的輸入。 SQL不要求用戶指定對數據的存放方法。 這種特性使用戶更易集中精力於要得到的結果。所有SQL語句使用查詢優化器,它是RDBMS的一部分,由它決定對指定數據存取的最快速度的手段。查詢優化器知道存在什麼索引,哪兒使用合適,而用戶從不需要知道表是否有索引,表有什麼類型的索引。
(2) 統一的語言
SQL可用於所有用戶的DB活動模型,包括系統管理員、資料庫管理員、 應用程序員、決策支持系統人員及許多其它類型的終端用戶。基本的SQL 命令只需很少時間就能學會,最高級的命令在幾天內便可掌握。 SQL為許多任務提供了命令,包括:
● 查詢數據
● 在表中插入、修改和刪除記錄
● 建立、修改和刪除數據對象
● 控制對數據和數據對象的存取
● 保證資料庫一致性和完整性
以前的資料庫管理系統為上述各類操作提供單獨的語言,而SQL 將全部任務統一在一種語言中。
(3) 是所有關系資料庫的公共語言
由於所有主要的關系資料庫管理系統都支持SQL語言,用戶可將使用SQL的技能從一個RDBMS轉到另一個。所有用SQL編寫的程序都是可以移植的。
[NextPage]
Java語言簡介
一. Java的由來
當1995年SUN推出Java語言之後,全世界的目光都被這個神奇的語言所吸引。那麼Java到底有何神奇之處呢?
Java語言其實最是誕生於1991年,起初被稱為OAK語言,是SUN公司為一些消費性電子產品而設計的一個通用環境。他們最初的目的只是為了開發一種獨立於平台的軟體技術,而且在網路出現之前,OAK可以說是默默無聞,甚至差點夭折。但是,網路的出現改變了OAK的命運。
在Java出現以前。Internet上的信息內容都是一些乏味死板的HTML文檔。這對於那些迷戀於WEB瀏覽的人們來說簡直不可容忍。他們迫切希望能在WEN中看到一些互動式的內容,開發人員也極希望能夠在WEB上創建一類無需考慮軟硬體平台就可以執行的應用程序,當然這些程序還要有極大的安全保障。對於用戶的這種要求,傳統的編程語言顯得無能為力,面SUN的工程師敏銳地察覺到了這一點,從1994年起,他們開始將OAK技術應用於WEB上,並且開發出了HotJava的第一個版本。當SUN公司1995年正式以Java這個名字推出的時候,幾乎所有的WEB開發人員都想到:噢,這正是我想要的。於是Java成了一顆耀眼的明星,丑小鴨一下了變成了白天鵝。
二. Java的定義
Java是一種簡單的,面象對象的,分布式的,解釋的,鍵壯的安全的,結構的中立的,可移植的,性能很優異的多線程的,動態的語言。
Java的開發環境有不同的版本,如sun公司的Java Developers Kit, 簡稱 JDK。後來微軟公司推出了支持Java規范的Microsoft Visual J++ Java開發環境,簡稱 VJ++。
三. Java的特點
1. 平台無關性
平台無關性是指Java能運行於不同的平台。Java引進虛擬機 原理,並運行於虛擬機,實現不同平台的Java介面之間。使 用Java編寫的程序能在世界范圍內共享。Java的數據類型與 機器無關,Java虛擬機(Java Virtual Machine)是建立在 硬體和操作系統之上,實現Java二進制代碼的解釋執行功能, 提供於不同平台的介面的。
2. 安全性
Java的編程類似C++,學習過C++的讀者將很快掌握Java的精 髓。Java舍棄了C++的指針對存儲器地址的直接操作,程序 運行時,內存由操作系統分配,這樣可以避免病毒通過指 針侵入系統。Java對程序提供了安全管理器,防止程序的 非法訪問。
3. 面向對象
Java 吸取了C++面向對象的概念,將數據封裝於類中,利用類 的優點,實現了程序的簡潔性和便於維護性。類的封裝性、 繼承性等有關對象的特性,使程序代碼只需一次編譯,然後 通過上述特性反復利用。程序員只需把主要精力用在類和接 口的設計和應用上。Java 提供了眾多的一般對象的類,通 過繼承即可使用父類的方法。在 Java 中,類的繼承關系是單一的非多重的,一個子類 只有一個父類,子類的父類又有一個父類。Java 提供的 Object 類及其子類的繼承關系如同一棵倒立的樹形,根類 為 Object 類, Object 類功能強大,經常會使用到它及其 它派生的子類。
4. 分布式
Java建立在擴展TCP/IP網路平台上。庫函數提供了用HTTP和FTP協議傳送和接受信息的方法。這使得程序員使用網路上的文件和使用本機文件一樣容易。
5. 鍵壯性
Java致力於檢查程序在編譯和運行時的錯誤。類型檢查幫助檢查出許多開發早期出現的錯誤。Java自已操縱內存減少了內存出錯的可能性。Java還實現了真數組,避免了覆蓋數據的可能。這些功能特徵大大提高了開發Java應用程序的周期。Java提供: Null指針檢測、 數組邊界檢測、 異常出口、 Byte code校驗。
四. Java與C/C++語言
Java提供了一個功能強大語言的所有功能,但幾乎沒有一點含混特徵。C++安全性不好,但C和C++被大家接受,所以Java設計成C++形式,讓大家很容易學習。
Java去掉了C++語言的許多功能,讓Java的語言功能很精煉,並增加了一些很有用的功能,如自動收集碎片。
Java去掉了以下幾個C和C++功能:
指針運算
結構
typedefs
#define
需要釋放內存
這將減少了平常出錯的50%。而且,Java很小,整個解釋器只需215K的RAM。
面象對象:Java實現了C++的基本面象對象技術並有一些增強,(為了語言簡單,刪除了一些功能)。Java處理數據方式和用對象介面處理對象數據方式一樣。
五. Java與Internet
我們知道,早先的 www 僅可以傳送文本和圖片,Java的出現實現了互動的頁面,是一次偉大的革命。
Java並不是為 Internet,WWW而設計的,它也可以用來編寫獨立的應用程序。Java 是一種面向對象語言。Java 語言類似於 C++ 語言,所以已熟練掌握 C++語言的編程人員,再學習 Java 語言就容易得多!Java 程序需要編譯。實際上有兩種 Java 程序:一種 Java 應用程序是一個完整的程序,如 Web 瀏覽器。一種 Java 小應用程序是運行於 Web 瀏覽器中的一個程序.
Java程序和它的瀏覽器HotJava,提供了可讓你的瀏覽器運行程序的方法。你能從你的瀏覽器里直接播放聲音。你還能播放頁面里的動畫。Java還能告訴你的瀏覽器怎樣處理新的類型文件。當我們能在2400 baud線上傳輸視頻圖象時,HotJava將能顯示這些視頻。
當今Internet的一大發展趨勢是電子商務,而Internet的安全問題是必須解決的問題,通常大的部門應設置防火牆,阻止非法侵入。
電子商務是當今的熱門話題,然而傳統的編程語言難以勝任電子商務系統,電子商務要求程序代碼具有基本的要求:安全、可靠、同時要求能 與運行於不同平台的機器的全世界客戶開展業務。Java以其強安全性、平台無關性、硬體結構無關性、語言簡潔同時面向對象,在網路編程語言中占據無可比擬的優勢,成為實現電子商務系統的首選語言。
Java程序被放置在Internet伺服器上,當用戶訪問伺服器時,Java程序被下載到本地的用戶機上,由瀏覽器解釋運行。
[NextPage]
PowerBuilder簡介
PowerBuilder的產生
PowerBuilder是美國著名的資料庫應用開發工具生產廠商PowerSoft推出的成功產品,其第一版於1991年6月正式投入市場。它是完全按照客戶/伺服器體系結構研製設計的,採用面向對象技術,圖形化的應用開發環境,是資料庫的前端開發工具。
PowerBuilder的特點
它支持應用系統同時訪問多種資料庫,其中既包括Oracel,Sybase之類的大型資料庫,又包括FOXPRO之類支持ODBC介面的小型資料庫,PowerBuilder是完全可視化的資料庫開發工具,它提供了大量的控制項,大大加快了項目的開發速度,也使開發者更容易掌握資料庫的開發。
它使用的編程語言叫做工PowerScripr,它也是一種高級的,結構化的編程語言。PowerScript提供了一套完整的嵌入式SQL語句,開發人員可以像使用其它語句一樣自由地使用SQL語言,這樣就大大增強了程序操縱和訪問資料庫的能力。可以說PowerBuilder既適合初學者快速學習資料庫的開發,又可以讓有經驗的開發人員開發出功能強大的資料庫,是一種適用面非常廣的開發工具。
PowerBuilder是一個用來進行客戶/伺服器開發的完全的可視化開發環境。使用PowerBuilder,你可以用一種可視的直觀的方式來創建應用程序的用戶界面和資料庫介面。這是一個總的概念,實際上是開發人員使用PowerBuilder去開發應用程序,由於所開發的各種應用程序充分利用了圖形用戶介面(GUI)的優點,所以PowerBuilder被認為是一個圖形工具。
在客戶/伺服器結構的應用中,PowerBuilder具有描述多個資料庫連接與檢索的能力。特別是PowerBuilder能從大多數流行的RDBMS中存取數據,且不管數據存放在什麽地方;另外,各種應用程序又可以獨立於RDBMS,因為PowerBuilder可以使用資料庫的標准操作語言SQL(結構化查詢語言)進行。
使用PowerBuilder,可以很容易地開發出功能強大的圖形界面的訪問伺服器資料庫的應用程序,PowerBuilder提供了建立符合工業標準的應用程序(例如訂單登記、會計及製造系統)所需的所有工具。
PowerBuilder應用程序由窗口組成,這些窗口包含用戶與之交互的控制項。開發人員可以使用所有標准
參考資料:
⑦ Microsoft Visual C++ 6.0的使用指南
中國IT實驗室 www. chinaitlab .com 很多計算機相關書籍 喜歡的朋友可以去瞧瞧;(不過頂一下再走,呵呵) 給出部分書的名稱: 精通Visual C++圖像編程 MFC中文幫助 MFC程序員的WTL指南 VC6從入門到精通-開發者眼中的VC VC6從入門到精通-附錄 MS VC++6.0程序員指南 VC6從入門到精通-基礎篇 VC6從入門到精通-VC與INTERNET Visual C++ 使用指南 Visual C++知識庫 Visual C++ MFC入門教程 Visual C++ 6 參考大全 跟我學 VISUAL C++ 6.0 Visual C++ 6.0語言參考手冊 Visual Lisp開發人員手冊 Visual C++ 從入門到精通 Visual J++ 6.0 WFC 類庫手冊 Visual InterDev 從入門到精通 Visual C++ 6.0用戶開發手冊 VC編程指南 VC++6.0 類庫參考手冊 VC++database編程大全 VC6.0 運行庫參考手冊 Visual C++6.0運行庫參考手冊 VC++6.0模板庫手冊 VC++面向對象入門 VC新手學堂 Visual C++ 6.0預處理器參考手冊 VC5.0開發人員參考手冊 VC6中文版程序員開發指南 Visual J++ 6.0 WFC類庫參考手冊一 VC6 模板庫參考手冊 VC++編程指南 Visual J++ 6.0 WFC類庫參考手冊二 VC6.0 MFC類庫參考手冊 VC6從入門到精通-VC與資料庫管理 MS VC++ 6.0 MFC類庫參考手冊 一 MS VC++ 6.0 MFC類庫參考手冊 二 走進Visual C++ 實例篇 Visual C++ 實踐與提高-圖形圖像編程篇 Visual C++ 數字圖像處理 VC-MFC編程實例 Visual C++實踐與提高_環境剖析IDE篇 Visual C++程序設計:基礎與實例分析 Visual C++ 6.0實例 Visual C++課程設計案例精編 Visual C++ 6.0開發與實例 VISUAL C++擴展編程實例 Visual C++6.0高級編程技巧與實例 VC++擴展編程實例 Visual C++編程技巧與範例 戰勝Visual C++必做練習50題 Visual C++6.0編程與實例解析 VC-MFC擴展編程實例 MFC資源大全 精通Visual C++ 6.0 Visual C++程序模塊集錦 Visual C++_Turbo C串口通信編程 Visual C++ 6.0應用編程150例 Visual C++ 6.0實例教程電子教案 教程篇 MFC Windows程序設計 Visual C++網路通信協議分析 VC6.0資料庫編程 Visual C++ 學習教程 Visual_C++_新起點—6.0實用教程 Visual C++ 6-24學時學習教程 Visual C++ 6.0 21天自學教程 VC++網路教程 Visual C++ MFC 簡明教程 VC 資料庫編程三部教學 Visual C++ 6.0 資料庫編程大全 VC新手學堂簡明教程 Visual C++ 6.0 開發寶典 Visual C++ 6.0 教程 Visual C++ 6.0 高級編程 VC++6.0培訓教程 Visual J++ 6.0 即學即用 Visual C++與面向對象程序設計教程 Visual C++6.0高級開發教程 Visual C++.NET 寶典 Visual C++5.0 程序設計 技術與應用 VC++6.0 用戶界面製作技術與應用實例 深入淺出WINDOWS MFC程序設計 Visual C++ 角色扮演游戲程序 Visual C++6.0程序設計提高篇 VC++編程資料 VC++ 函數經典 VC++與Matlab混合編程的快速實現 Visual C++ 5.0易學活用 VISUAL C++ 設計WIN32應用程序 Visual C++入門與應用 Visual C++6.0開發寶典 Visual C++6.0技術內幕 VC++6編程方法 深入VC編程內幕 VC編程經驗總結 用VC++編寫USB介面通信程序 用VC開發CGI 瘋狂VC技巧集 VC6開發寶典 Visual C++經典 Visual C++ 6 輕松進階 VC編程常用捷徑 MFC技術內幕 VC深入編程
求採納
⑧ MFC界面編程-多窗口
你說的還是文檔與視圖,比如CEditView,CFormView等,還有視圖的分割,這些東西都是繼承CView而來的
⑨ ~~~MFC~~總是找不著門~~~
你要是覺得自己C++的基礎已經很扎實了的話就耐心地看某一本書吧。另外可以看一些具體實例的書。看的時候要記住,並要多想想。
Edit有一個EN_CHANGE消息,你可以試試用這個消息。
你可以為你的Edit控制項設置一個CString類型的變數m_In,為你的Static控制項也設置一個CString類型的m_Out,響應EN_CHANGE時,
UpdateData(TRUE);//將屏幕上的值傳給變數
m_Out=m_In;//將Edit里的傳給Static
UpdateData(FALSE);//將變數在屏幕在顯示
就可以實現了