28/01/2014 MCAFEE SECURE 認證的網站

https://www.mcafeesecure.com/RatingVerify?ref=www.HongKongCupid.com

2013年9月3日 星期二

**由香港人開發的軟件,除了stockEye之外你還知道多少?!真的不多--介紹給各用家來一起了解吧**

**由香港人開發的軟件,除了stockEye--
之外你還知道多少?!真的不多--介紹給各用家來一起了解吧**

*上次介紹過香港人開發的免費股票軟件,亦有網友問我香港人真懂開發軟件?!
哪到厎有多少出品自香港的軟件呢?!
就讓大家一起來了解一下吧^^*

1).*直讀中文 cBook **
****







**直讀中文 cBook 一個 android 讀電子中文書軟體.
本軟體 只能 讀取「好讀網站」內的 pdb (big5 碼) 及 updb (Unicode 碼) 書檔.
其他書檔都不能讀取. 如有需要請下載「好讀網站」內的 mPCB 自行造書檔*

其他舊版本:
         舊 Android 1.5 版
:本軟體/網頁跟 好讀網站 無直接關係, 如對好讀網站內的書檔或站內問題,
請直接聯絡其站主.

:下列的使用方法或已過期, 可能和最新版本的畫面及用法有點出入.
使用方法:
在 SDCard 內建立一個 'cBook' 子目錄.
(v1.4 後, 第一次執行時會自動建立此文件夾)
把書檔放入這係 'cBook' 子目錄內. 開動軟體:
由於無看過任何書本,  會出現如下圖:



按一下  MENU, 便能見到六個選項:


這六個主要功能選項分別是:

書屋/書閣:
選擇不同書閣(子目錄), 選擇內裡的書本.

目錄列表:
選擇正在閱讀的書本內的章節/目錄.
書簽/資料:
列出正在閱讀的書本的資料, 及書簽.
可在這裡加入/刪除書簽, 匯入/出所有書簽至 sdcard.
也可刪除或移動書檔到其他書閣(子目錄)

幫助:
簡單使用幫助.
好讀下載:
直接連到好讀網站, 下載站內書檔.
設定:
各項不同的設定以乎合個人要求      
書屋/書閣是 cBook下的子目錄. 可以有 1 至 99 (Ver.1.3以上), 兩層子目錄, 即:

/sdcard/cBook/1/ 至 /sdcard/cBook/99/,
...
/sdcard/cBook/1/1/ 至 /sdcard/cBook/1/99/.
...
/sdcard/cBook/99/1/ 至 /sdcard/cBook/99/99/.

間底部的書屋/書閣內容, 分三種, 表示你在的位置.
主書屋 - 即 /sdcard/cBook/ 主目錄, 黃色顯示. 你所選的是書本.

書閣 - 即子目錄列表, 藍色顯示. 你所選的是子目錄.

書閣 X - 即子目錄內的書, 綠色顯示. 你所選的是書本.
第二行是該目錄內 info.txt 的書閣說明  *
150107g838qh8m9mmha1hu.jpg
*APK--*這個app 能讓用家擁有一個漂浮App Folder, 並可以自己選擇喜歡的主題 :)"150107g838qh8m9mmha1hu.jpg**當把folder拖到左邊時,
folder就會變成一個小icon*拖出來後, 又變回app folder **150117ffoy09r9y92299xr.jpg**********************
 便會改變書閣位置, 如下:
(長按書屋內容, 便會返回主書屋) >
主書屋  <-> 主書閣

書閣 -> 上一層書閣

書閣 X -> 本子目錄內的子目錄 書閣

書屋/書閣內的選擇:***
*軟體內用法:-
書屋/書閣, 好讀下載 內, 按 MENU 後. 或 書簽/資料內選移動書檔.
都會見到以下畫面. 按一下上面的書閣列表, 再按一下編輯說明, 便可新增/修改書閣說明.


**PC 用法:-
只需在該子目錄內, 建立一個 info.txt 檔.
把想標示內容寫在檔內的第一行便可.
但內容必需要是 UTF-8 編碼. 把檔案改編碼,
 只需在記事本(Notepad) , SaveAs, 把編碼改為 UTF-8便可.


在書屋內, 按一下間底部的書屋內容,便會改變書閣位置, 如下:
(長按書屋內容, 便會返回主書屋) >
主書屋  <-> 主書閣

書閣 -> 上一層書閣

書閣 X -> 本子目錄內的子目錄 書閣

書屋/書閣內的選擇*預設左為加, 右為減. 可於設定內更改.

 兩條棒型資訊
  • 上面是本章進度
  • 下面是全書進度
兩個模式共同操作:
按一下 屏幕底的資訊欄, 或在 MENU 目錄內按目錄列表. 就會見到如下圖
章節目錄列表, 可以跳選所需章節
移動檔案:
  • 把書檔移到 /sdcard/cBook 內的其他目錄.
刪除檔案:
  • 刪除本書書檔. 附刪除本書書簽選項.
匯出所有書簽:
  • 把所有書的書簽匯出至 /sdcard/cBook/bookmark 目錄
匯入書簽檔:
  • 匯入之前所匯出至 /sdcard/cBook/bookmark 目錄下的書簽檔. 
  • 必需要勾選對話窗的覆蓋選項才能匯入
2)..*150107g838qh8m9mmha1hu.jpg
*[工具] 香港人修改XDA神作 - 漂浮App Folder+ v1.0  *
*這是我在facebook看到的,
很易上手, 也很方便.*
這個app 能讓用家擁有一個漂浮App Folder, 並可以自己選擇喜歡的主題 :)
"當把folder拖到左邊時, folder就會變成一個小icon .拖出來後, 又變回app folder....!!150117ffoy09r9y92299xr.jpg
而這個小icon的圖示可自由選擇..150118lf0sjsslvihibbvv.jpg
介紹短小, 因為這軟件真的太精巧了, 但十分實用

Play Store位置: https://play.google.com/store/apps/details?id=wei.mark.floatingfoldersfree & feature=search_result#t=?W251bGwsMSwyLDEsIndlaS5tYXJrLmZsb2F0aW5nZm9sZGVyc2ZyZWUiXQ ..
**




3)..APK*安卓英漢字典 ECDroid 是一個快速、易用的繁體英漢字典

•字庫高達 110,000 個,足夠一般人士使用

•包含發音功能,利用Android 內置的TTS 功能

•並附有例句,方便讀者學習

•使用時,無需上網

•支援Android 1.6 或以上
**1.png**
*含數據檔 所以檔案較大請耐心下載~

ECDroid_full.part01.rar (1.39 MB, 下載次數: 4337)
ECDroid_full.part02.rar (1.39 MB, 下載次數: 3815)
ECDroid_full.part03.rar (1.39 MB, 下載次數: 3814)
ECDroid_full.part04.rar (1.39 MB, 下載次數: 3774)
ECDroid_full.part05.rar (1.39 MB, 下載次數: 3737)
ECDroid_full.part06.rar (1.39 MB, 下載次數: 3707)
ECDroid_full.part07.rar (1.39 MB, 下載次數: 3721)
ECDroid_full.part08.rar (1.39 MB, 下載次數: 3712)
ECDroid_full.part09.rar (1.39 MB, 下載次數: 3717)
ECDroid_full.part10.rar (1.39 MB, 下載次數: 3719)
ECDroid_full.part11.rar (1.39 MB, 下載次數: 3677)
ECDroid_full.part12.rar (1.39 MB, 下載次數: 3670)
ECDroid_full.part13.rar (1.39 MB, 下載次數: 3690)
ECDroid_full.part14.rar (1.39 MB, 下載次數: 3665)
ECDroid_full.part15.rar**

4).*無障礙數碼科技中心

NVDA讀屏軟件(香港版)

簡介

NVDA是一個免費且開放源代碼的讀屏軟件。

本會為了令其更適合中文用家,特別為NVDA加入多個的新功能。

NVDA(香港版)的新功能包括﹕

  • 能夠報讀中文的語音引擎
  • 利用兩個不同語音分別報讀中英文
  • 支援多種常用中文輸入法的報讀
  • 加入對中文字詞的解釋功能
  • *

    下載NVDA讀屏軟體 (香港版)  - 2012/11 更新

    歡迎提供聯絡資料,本會將定期電郵有關軟件之最新資訊予 閣下。
    *必需填寫
    *必需填寫
    *必需填寫
    軟件使用聲明:
    歡迎使用NVDA讀屏軟體 (香港版) (以下稱為軟件)。
    本軟件是由香港失明人協進會開發及全權擁有,
    任何人不得有修改或其他侵犯版權之行為。
    使用軟件前請遵守此聲明中之各項條款,在你閱讀並且接受以下各項條款前,
    不得安裝本軟件。
    1. 本軟件可免費供本會會員及「無障礙電子學習支援計劃」服務使用者使用;
    2. 如非於第一點內包括的機構或個人使用者,在使用本軟件之前,
    3. 請先於香港失明人協進會網站內的相關版面上進行登記及繳交費用,
    4. 收到本會發出之收據才可開始使用本軟件。而所收集之資料只用作內部紀錄之用;
    5. 未經本會同意,嚴禁複製有關軟件並分發予他人;
    6. 有關本軟件之查詢,請電郵至 adtc@hkbu.org.hk
    本人同意並接受以上聲明

    NVDA教學短片1︰NVDA香港版下載及安裝簡介

    這一節將會介紹NVDA的下載方法以及如何安裝NVDA。
    按此觀看短片

    NVDA教學短片2︰開啟及關閉NVDA

    這一節將會介紹如何開啟、關閉NVDA,
    以及利用NVDA查看電腦系統目前的狀況,包括時間及日期等等的資料。
    按此觀看短片

    NVDA教學短片3︰NVDA的語言設定,

    儲存或還原偏好設定

    這一節將會介紹如何按個人喜好,在NVDA上設定語音的聲音、
    速度、音量、音調和聲調等相關的設定,以及如何儲存及還原有關設定。
    按此觀看短片

    NVDA教學短片4︰NVDA的滑鼠設定

    這一節將會介紹NVDA如何報讀滑鼠活動的相關設定,
    當完成設定後,亦可以按照【儲存及還原設定】短片的指示儲存及還原相關設定。
    按此觀看短片

    NVDA教學短片5︰NVDA的按鍵指令說明模式

    這一節將會介紹NVDA如何簡單地搜索各種功能的按鍵指令說明,
    以及開啟NVDA用戶指南的方法。
    按此觀看短片

    NVDA教學短片6︰單字和拼讀功能

    這一節將會介紹NVDA如何啟動單字及拼讀功能,
    單字和拼讀功能主要令使用者了解該字的配詞,以免與其他同音字混淆。
    按此觀看短片

    NVDA教學短片7︰報讀檢視器

    這一節將會介紹報讀檢視器的功能以及他的操作方法。
    報讀檢視器的主要作用是令健視人士看到電腦正在報讀的內容,
    以了解使用者正在收看的內容。
    按此觀看短片

    NVDA教學短片8︰瀏覽網頁應用

    這一節將會介紹如何把NVDA應用在網頁上。
    這次會以本會網頁(http://www.hkbu.org.hk)的主頁作為示範。
    按此觀看短片
    http://www.hkbu.org.hk/b5_services4_2.php           **
      5).*關於細博機械人MIDBOT MID是(Mobile Internet Device)的簡稱,
    而MIDbot系列是配合MID的機械人。
    MIDbot是香港科研的成果,完全由香港人研究及開發。
    能透過互聯網上的視像通話軟件(如Skype, MSN, GoogleTalk)或藍芽,
    從遙距監察及操控移動,此系列不同刑號的機械人,
    化為不同潮流商品及玩物。
    ****
    MIDbot系列特色
    發展潛力極佳 - 其技術學院能配合不同功能的組件,
    創新獨一無二的機械人
    高適應性 - 能配合不同知能手提電話及電腦作操控
    程式編寫 - 可利用SDK(software development kit)軟件開發組件來
    快速開發,並支援不同程式語言;例如:HTML,Java,
    VBA,Visual Basic/C/C++/C#,XCode,GCC
    創新設計 - 可透過智能手提電話(如:iPhone,Android等)軟件設計,
    新穎地設計操控MIDbot(如:Motion sensor控制)
    操作原理
    當用家點下操縱按鍵,控制面板便會播出特定聲音,
    MIDbot便會作出相應行動,透過產品設計,機械人可加插更多指令動作,
    而聲音更可以透過藍芽及互聯網傳遞,並配合不同的視像傳送軟件,
    便能夠作遙遠控制及通訊
    新技術介紹
    藍芽遙距控制技術-連接機械人與電子儀器的藍芽配備並作遠程操作

    用途廣泛 - 任何智能手提電話,手提電腦或桌上電腦配備藍芽
    傳送裝置亦能化作機械人控制器

    穩定性強 - 藍芽操控能作一對一配對,而傳統逸距控制頻道容易
    相撞或干擾 遠距離操控 - 藍芽操控距離可達十米

    網絡視像跨國操控技術 - 利用互聯網作傳送操作指令及視訊的渠道

    無國界限制 - 可以全方位跨國遙控MIDbot一舉一動

    簡單應用 - 只需要一般視像通訊軟件,無需格外安裝其他軟件

    第一身操控 - 能透過視訊觀察及控制 多角度監察 -

    6).*SUN世代:A+機迷編寫IT王國*
    楊全盛長大後投身資訊科技業,似是理所當然。
    三歲初接觸電腦,自小迷上打機,中學憑自修在兩次公開考試輕鬆奪A,
    並預早熟習大學課程。大學讀得輕鬆,更有餘力與大哥合資開公司,
    兼任程式編寫員,踏上創業之路。迷上電腦,他說:「樂趣在於創造嘅過程,或者由零開始直至完成一件作品嘅感覺。」**
    ○一年,他與另一名拍檔合組FlexSystem,研發一套可以令工作流程自動化的系統,也是由零開始。「當年無香港人開發呢類軟件,外國雖然有人做,
    但都係比較簡單嘅系統,我覺得不能應付未來嘅需要。」
    他開發的系統,目前在港享有最高的市場佔有率,
    並於香港及國際勇奪多項大獎,對他是一種鼓勵:「香港人自家製嘅software,能夠喺國際佔一席位嘅少之又少,公司正向着呢個目標進發。」
    7).*CheckAmy app **
    CheckAmy Prototype 示意圖*
     Excel 表格:
    在空格打進數字,下面一格轉換成英文,讓他寫支票方便一點。
    為何我不做一個方便寫支票的 app 呢?
    自製 excel 表格,支票金額不求人
    【圖片】 自製 excel 表格,支票金額不求人
    有了目標,就有動力,那怕祇是小目標。
    然後決定先專注用 Coffeescript 寫好核心功能,
    日後以 HTML5 + jQuery 的方式,包裝成 web app 發佈吧。
    經過不刻意的努力,硬塞了一些程式書,
    拜讀了200多篇文章/影片 (從瀏覽記錄估算)
    寫的每一小段程式碼,都讓我覺得完成了甚麼似的。**********************


5月20日: 不小心完成了!
CheckAmy app 完成圖
【圖片】 CheckAmy app 完成圖
這一天,正式 deploy 到網上去,找了幾個網友回饋意見,找了一些臭蟲。
突然間,覺得自己的 web app 還不錯看喔 XD
滿足感大增,就開始有計劃發展的念頭:
App store 、 Facebook 、產品消息管道、以至使用者條款...
希望多些人試用,自己也想感受產品化的過程。
所以這刻起,不能祇當實驗品,而需要將這套應用程式當作「產品」看待了。
然後5月22日,在 Facebook 發佈消息,當作是一個起跑點吧~!



8).**一個屬於香港人​的Messenger – TalkBox Voice Messenger**
****


Home 數碼產品 App 介紹:一個屬於香港人​的Messenger – TalkBox Voice Messenger

App 介紹:一個屬於香港人​的Messenger – TalkBox Voice Messenger


TalkBox 不單是一個智能手機軟件,更是一個將人與人之間拉近的實用工具。

TalkBox 功能:
1)Push-to-Talk
2)文字訊息
3)發送訊息或圖片到 Facebook、Twitter和微博
4)群聊(Group Chat – 最多 9 人)
5)發送廣播訊息給所有朋友

TalkBox 獨特之處
1)屬於香港人的Messenger
先有美國的 Whatsapp,亦有來自日韓的 Line,TalkBox 希望證明香港人所開發的---
---產品能夠跟世界各地頂尖開發廠商看齊,甚至超越他們,成為首屈一指的成功產品。
TalkBox 的總部設於香港,二十多人的團隊, 從研發到測試以至市場推廣都由香港人
一手包辦。TalkBox 是一個完完全全屬於香港人的 Messenger。
2)新增文字訊息功能
為使用戶能夠更方便在不同場合互通訊息,我們特別在新版本加入文字訊息功能,
讓用戶可以輕鬆選擇以語音或文字來傳送訊息。
3)語音融入社交元素
上一版本的 Voice Tweet 和 Facebook Voice Post 功能一經推出,
 隨即在歐美各地引起很大迴響。 TalkBox 團隊會繼續將社交元素融入於語音當中,
我們致力將此元素擴展到中港台等地,所以我們特別在新版本中加入微博小助手,
讓用戶可以輕鬆傳送圖片、語音或文字訊息到微博。
4)支持多平台發展
TalkBox 團隊致力於不同的平台上進行研發,
我們率先在 iOS 推出,數月後隨即推出 Android 版本。
在不久將來,我們將會推出 Windows Phone、MeeGo、Symbian 和 Blackberry 版本,
讓世界各地不同手機
用戶都能夠體驗最優秀的語音溝通工具。
宣傳片(廣東話): http://youtu.be/jjvOFTUJCGo
最新文字功能介紹: http://youtu.be/UpQbGFr-xTM
關於 TalkBox:
於 2011年1月正式推出的全球首款智能手機免費語音
短訊傳輸應用程式 TalkBox Voice Messenger,
結合了 SMS 和語音通訊兩大溝通模式,具備語音、圖片、GPS 定位及9人群聊等功能;
支援 iOS 和 Android 作業系統,更快將適用於 Window Phone、Blackberry、Meego
和 Symbian手機。TalkBox 推出後不久即深受智能手機用戶歡迎,全球超過 600 萬全戶,
更曾成為美國、中國、香港、
台灣、新加坡、馬來西亞及以色列等地 App Store --
-熱門社交應用程式第一位。
最新 TalkBox Voice Messenger 版本已經在 --
--Android Market 和 iTunes AppStore 可供下載。
附件中我們提供了 TalkBox 新版發布新聞稿、
最新用戶數據和最新版本截圖。




**9).**
** e-print勇奪「2012香港工商業獎: 生產力及品質獎」 ** 
  • 下載說明
  •  

  • 本站的樣辦稿件為ZIP格式,您的電腦必須裝有解壓軟件,如未安裝,請按此下載:
    ZIP解壓軟件   ZIP解壓軟件下載
    注意:
    * 樣式編號011、014只為pad左,若左邊加釘需當8開價錢計算;
    中間針線為特別針線,價錢每組需加$50
    * 樣式編號060、065的中間針線為特別針線,價錢每組需加$50
    *不同的尺寸及顏色選擇,2聯至5聯的過底單簿、NCR單簿、
    發票簿、收據簿印刷服務 ,滿足您的業務需要**
    *訂貨單 編號: 001**
    **   http://www.e-print.com.hk/download_Chinese_receipt#   **ZIP解壓軟件下載
     
    顺序: 貼紙刀模類型: 尺寸: X 圆角半径: 直徑:
    •  
    • 方形直角  
    R-0505-A
    完成品單個尺寸為5×5mm (每張28個)
    AI格式下載 CDR格式下載
    R-0505-A
    R-0808-A
    完成品單個尺寸為8×8mm (每張32個)
    AI格式下載 CDR格式下載
    R-0808-A
    R-1010-A
    完成品單個尺寸為10×10mm (每張24個)
    AI格式下載 CDR格式下載
    R-1010-A
    R-1015-A
    完成品單個尺寸為10×15mm (每張12個)
    AI格式下載 CDR格式下載
    R-1015-A
    R-1212-A
    完成品單個尺寸為12×12mm (每張18個)
    AI格式下載 CDR格式下載
    R-1212-A
    R-1310-A
    完成品單個尺寸為13×10mm (每張15個)
    AI格式下載 CDR格式下載
    R-1310-A
    R-1515-A
    完成品單個尺寸為15×15mm (每張8個)
    AI格式下載 CDR格式下載
    R-1515-A
    R-1711-A
    完成品單個尺寸為17×11mm (每張12個)
    AI格式下載 CDR格式下載
    R-1711-A
    R-1807-A
    完成品單個尺寸為18×7mm (每張16個)
    AI格式下載 CDR格式下載
    R-1807-A
    R-2010-A
    完成品單個尺寸為20×10mm (每張12個)
    AI格式下載 CDR格式下載
    R-2010-A



    首頁 > 下載中心 > 版型 / 刀模下載 > 

    彩色紙Folder刀模下載        下載說明  

    • 本站的樣辦稿件為ZIP格式,您的電腦必須裝有解壓軟件,如未安裝,請按此下載:
      ZIP解壓軟件   ZIP解壓軟件下載  
    • 彩色紙Folder刀模下載  
    **10).*[創業夢]香港人開發手機無線快門
    Muku Shuttr~**
    *muku-shuttr-2*
    **手機全面開始支援 聲控拍攝 , 微笑快門 , 時間快門 這些遙控式拍攝時 ,
    竟有人跑去開發一款智能手機專用的無線快門 . Kevin Leung , 一個地道的香港人 ,
    熱衷於電子產品 . 其開發了一款無線快門 Muku Shuttr (Muku 指簡易) , 
    Muku Shuttr 只有 6mm厚 , 外型有點像汽車防. 還特別配有鋁合金防震保護框架 .
     Muku Shuttr 原理是利用藍牙連接手機 , 再加以操控 . 目前造款 Muku Shuttr  --
    --已經在 Kickstarter 上開始了集資, 而且十分順利 , 資金已經足夠 , 
    準備進入生產階段 *
    **坊間已經有不少遙控智能手機快門的功能 / 工具,但這個在 Kickstarter 上
    近日頗為火熱的「Muku Shuttr」,以藍芽做連接方式,通用於 iOS 及 Android
    多款智能手機,而且外型簡潔美觀,在 Kickstarter 已經募集了目標金額  --
    --USD 10,000 的兩倍半,而且看來還會繼續增加 .**
    *
    *據官方 FB 頁解釋,Muku 的意思在克羅地亞文的意思是 passion,在日文則是 pureness;另一個值得留意的是,開發者名叫 Kevin Leung,
    是香港人來的 ioi ~*
    *這遙控可以支援的包括 iPhone 3GS 或以上、iPad 2 或以上、
    Samsung Galaxy S3 或以上、Note 2、LG Nexus 4 等等,
    並且毋須安裝任何 App,只要系統在 iOS 5.0 或藍牙 3.0+、
    Android 4.1+ 等。至於 HTC one、Sony Xperia S / Z 之類則  要安裝 App    **
    *
    目前在 Kickstarter 上的售價是 USD 29 (USD 20 的已經沽清……),
    如果你對這個產品感興趣,可以按以下連結了解詳情。



    11).
    *香港人的地圖(中原地圖)*
    **
    中原地圖有好多人都聽過,中原地圖登陸了Android後一直大受好評。中原地圖可以隨時隨地查看附近本地資訊,包括: 巴士站、餐廳、搵樓、樓市成交、車主便覽、郊遊景點、社會服務 、教育進修、歷史掌故、旅遊、教堂及廟宇等香港地道資訊。是一個香港人的地圖。
    2336153nf6646xyn66fr1x centamap-details unnamed unnamed (1)
    ★亮點功能:★
    • 獨有「附近熱點」功能: 一按即看地圖範圍內熱點資訊
    • 除了幫你更準確搵地方之外, 你更可以即時在地圖上看到附近各項分類資訊
    • 結合 OpenRice.com 的食評分數, 行到邊, 食到邊!
    • 集全港巴士公司的路線和資訊於一身, 縱橫香港好幫手!
    • 每日與土地註冊處同步更新成交紀錄, 助你掌握樓市走勢!
    QR Code
    下載         *



    12).
    *[Infographics] Startup Weekend如何運作?*
    **
    大家可能都聽過Startup Weekend,最為港人熟悉的,就是2011年香港Startup Weekend出過一個世界冠軍Aftership,贏得獎項後,成功募集創業資金。
    究竟Startup Weekend是怎樣運作的呢?最近有人設計了一張Infographic,詳細介紹Startup Weekend的玩法:
    how-startup-weekend-works_52110a5891877

    科技Startup創業懶人包
    早幾年台灣興起一個詞彙, 叫做「懶人包」, 意思就是將所有相關的資料整理打包, 讓懶人不用在云云網海中搜尋相關資料, 一頁了然.
    有時有朋友想搞Startup, 不知如何起步, 都會打電話給我問意見(剛巧我姐是律師, 我又自己開公司), 所以一直打算寫一篇「Startup懶人包」, 讓有志創業的朋友省點時間.
    既然是「懶人包」, 就只會提供最有用的資料, 基本的如找律師樓/會計師樓開公司, 到銀行開戶口等等均不在此說明.
    培育計劃 (提供辦公室、招聘津貼、培訓津貼、業務發展、創業指導等): 
    1. 數碼港培育計劃(可使用數碼港辦公室或自行於其他地方租辦公室)
    2. 網動科技創業培育計劃(香港科技園 – 接受Mobile App, Web, Game等申請)
    3. 科技創業培育計劃(香港科技園 – 接受電子, 環保, 生物科技等申請)
    4. 浸會大學創業支援與培訓計劃(BEST)(只接受浸會大學學生申請)New!
    5. 香港創業實驗室(StartLab)(為專上學生和畢業生而設的創業啟蒙訓練營New!


    13).*香港特別行政區政府,政府資訊科技總監辦公室*
    下載區   *
    **
  • 《香港增補字符集》參考字型及輸入法軟件下載區
  • 《香港增補字符集》資料區
  • 國際表意文字子集比較工具
  • pdf 容易混淆字符表
  • 國際表意文字子集測試工具
  • 網上中文輸入工具
  • pdf ODT Unicode Consortium 資訊科技辭彙中譯   *

  • ISO 10646 國際編碼標準




    14).*          八達通標誌
    **
    香港是全球最蓬勃的金融中心之一,擁有享負盛名的公共交通系統。
    早在1979年,當時的地鐵公司(現稱香港鐵路有限公司)已經採用全自動車票收費系統。
    為進一步便利乘客,地鐵在1993年構思下一代收費系統發展策略,
    認定非接觸式智能卡技術最適合用作收費系統平台。
    當時香港五大公共交通運輸機構 ,包括地鐵、九廣鐵路、九巴、
    城巴和香港小輪(HYF)攜手合作, 於1994年成立了聯俊達有限公司
    (於2002年改名為八達通卡有限公司),負責開發和推行非接觸式智能卡技術 *
    發展至今,八達通不單廣泛應用於全港眾多收費系統,更同時提供--
    --大廈門禁系統和支援學校各種活動。2005年推出的八達通日日賞計劃,
    亦成了最廣受商戶採納和最具成本效益的客戶關係管理平台。
    憑藉我們在香港的成功經驗,八達通銳意將系統技術和營運方案拓展至其他國家。
    我們的專業技術和豐富經驗已經成功輸出至荷蘭,迪拜和新西蘭   **




    15).*USB-OneLock Community Edition*-流動儲存裝置的保安漏洞 ****現供廣大市民免費下載使用。
    市場上所有的的 USB 手指都可以變成一個雙重防護的保險箱,
    妥善保管巿民寶貴的資料。USB 手指除了有密碼保護外,
    還要在授權電腦才能讀取手指內的資料,如不幸遺失 USB 手指,
    這程式更設有機制可以永久封鎖資料,進一步防止資料外泄 **
    *

    多重數據保護的運作


    MFDP中多重防線的概念,同樣能應用於USB手指的資料保密上。
    MFDP採用國際認可的AES標準,先把機密資料加密,並將其儲存到USB手指上。
    然後,再利用複雜的密碼學運算法,將密鑰劃分成為兩份組件:
    一份儲存在USB手指上,並以密碼保護,另外一份則可以分發到指定的電腦內,
    以授權電腦存取USB手指內的資料。經由這運算法劃分出來的兩份組件,
    並沒有任何關聯,即使得到其中一份也不會減低破解AES加密標準的難度。
    另一方面,由於用家必需以兩份組件解碼,因此只有在獲授權的電腦提供正確密碼的人,才可以讀取USB手指內的資料。如不幸遺失USB手指,在沒有密碼及授權電腦的情況下,資料仍不會外泄。此外,用家更可透過刪除電腦中的組件,把USB手指永久鎖死,
    進一步保障遺失的資料**
    **

    OneLock Community Edition 的系統需求

    OneLock Community Edition 可以安裝在 Windows XP, Vista and Windows 7 上。

    下載 OneLock Community Edition

    請填妥以下資料,我們會將 OneLock Community Edition 的下載連結以電郵發送給閣下。
    • 閣下的稱呼

    • 我們將以電郵發送下載連結
      我們將以電郵發送下載連結
    • 閣下的公司或機構
    • 我們來自香港,你呢?

    • * OneLock Community Edition 暫時只提供將市面上的手指轉換成 512MB 的加密手指。
    • 我們設有討論區,歡迎交流及提供意見。
      進入討論區

    OneLock Reborn Tool

    Reborn Tool 是 OneLock 的一個附件,

    協助用家把加密手指還原。使用Reborn tool後,

    手指將不再受Onelock的加密保護,

    而曾加密的資料亦會被銷毀。

    下載 Reborn Tool         *授權合約
    閱讀授權合約                                      *
    **
    香港大學電子商貿基建研究中心(商研中心)去年獲創新科技署撥款約700萬元,
    用兩年研究數據保護技術。中心首席科技主任郭頌凱指出,多重數據保護--
    --技術的理念是以「雙重防線」去保護數據,以保險箱為例,
    同時有密碼鎖及匙鎖的保險箱,會較一般只有密碼鎖的更為安全。
    因密碼和鎖匙兩個組件可分開擺放,所以,能大大降低同時取得兩者的機會。
    OneLock加密普通「手指」
    商研中心於上月中,推出免費應用程式「OneLock」供市民下載,
    用家只要下載程式,便能把普通手指「變身」為具雙重保障的加密手指**

    **由香港人開發的軟件,除了stockEye之外你還知道多少?! 真的不多-
    -介紹給各用家來一起了解吧**我只知道這么多喔~你認識的也請告訴我ioi** THE   END**
    &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

    2013年9月1日 星期日

    **在[.NET]透過--T4--產生對應>>DB table 的entity=我們可以利用code**藉由T4產生多個資料物件喔~!^

    !**在[.NET]透過--T4--產生對應>>DB table 的entity=
    我們可以利用code**藉由T4產生多個資料物件喔~^

    **透過自訂 Attribute 來封裝 entity 與 DB 資料欄位的對應,
    以企圖讓 data access layer 回來的資料,都是以 entity 物件的形式,
    而非 DataTable 或 DataSet 這類弱型別的結構 .**
    *難道每次設計 mapping table 的 entity 都只能手動去刻嗎?感覺好蠢、好浪費時間喔!! *
     以 LINQ to SQL 或 LINQ to EF,都只需要拉一拉 data model,
    就可以自動產生對應的entity 集合 ~*
    *所以有很多人會自己寫對應的程式碼產生器,甚至許多套件也都有提供類似的功能 **
    *是透過內建的 T4 轉換,用最簡單的方式來自動產生我們所需要的 entity class 檔案 !!
    **註:有些人可能會說,為什麼不乾脆使用 LINQ to SQL 或 LINQ to EF,但實際上很多現實狀況,是不允許使用的。不管是 .net framework migration 的問題,或是 performance 問題,或是需要在DA層自訂一些客製化的動作時,就不一定可以直接使用 ~**

    **T4 的全名是「Text Template Transformation Toolkit」,簡單的說,
    就是一個可以轉換的文字範本,在範本裡面可以透過程式碼與邏輯,
    來決定要嵌入哪些文字。幾乎現在的 Visual Studio 上 的 code generator --
    --底子都是透過 T4 來產生對應的程式碼 ***

    範例

    需求說明:
    1. 針對某一個DB中,某一張 table
    2. 產生對應的 class 內容
    3. Class 名稱預設與 table 名稱相同
    4. Property 名稱預設與 table column 名稱相同
    5. Property type 預設為 column type 所對應的 data type
    6. 每一個 property 上,要有對應的自訂 attribute,供 RowMapper 使用
    7. 可自行加入 todo 註解,或是相關 using namespace
    在任何一個專案底下,新增一個項目,類型為「文字範本」**
    **


    *接著會出現下面的視窗,其實就是 T4 要幫忙轉換輸出結果的動作,
    當按下確定,就會按照 tt 上的範本邏輯產生對應的程式碼。
    第一次所產生的程式碼其實是空的,所以按確定跟取消都沒差*



    **CODE**藉由T4產生多個資料物件喔~!^**

    **需求是有現成的XML資料定義檔如下      **
    *
    <?xml version="1.0" encoding="utf-8" ?>
    <datatable>
      <table id="Running" version="1.0">
        <col name="RunDateTime" datatype="System.DateTime" pkey="Y"/>
        <col name="RunnerId"    datatype="System.String" pkey="Y"/>
        <col name="Record"        datatype="System.String"/>
      </table>
      <table id="Runner" version="1.0">
        <col name="RunnerId"    datatype="System.String" pkey="Y"/>
        <col name="Name"        datatype="System.String" />
        <col name="Birthday"    datatype="System.DateTime" />
      </table>
    </datatable>                                             *
     
    **希望為其中每個Table各產生一個C#類別轡下:                  **
    *
    using System.ComponentModel.DataAnnotations;
     
    public class Runner
    {
        [Key]
        public System.String RunnerId { get; set; }
        public System.String Name { get; set; }
        public System.DateTime Birthday { get; set; }
    }                                                           *
     
    **在過去,我會自己寫Code,解析XML文件再用StringBuilder組裝C#類別的內容。 
    但既然已經學會T4範本程式產生器- 這等好物,自然沒有再走回頭路的道理。
    由XML產生C#類別的邏輯很簡單,唯一的小挑戰是一般T4範例多是一個.tt檔產生一個.cs檔,
    而這個需求得依照XML定義一次產生多個.cs檔案。
    爬文找到範例,單一.tt要輸出多個檔案的原理,是在執行過程---
    ---由GenerationEnvironment.ToString()取得當時累積的輸出結果,
    以File.WriteAllText()寫入檔案後,執行GenerationEnvironment.Clear()清掉---
    ---已寫到檔案的內容,再執行下個類別的程式碼產生邏輯。
    T4程式碼如下:                                          **
      ****
    *
    <#@ template  debug="true" hostSpecific="true" #>
    <#@ output extension=".log" #>
    <#@ Assembly Name="System.Core.dll" #>
    <#@ Assembly Name="System.Windows.Forms.dll" #>
    <#@ Assembly Name="System.Xml.dll" #>
    <#@ Assembly Name="System.Xml.Linq.dll" #>
    <#@ import namespace="System" #>
    <#@ import namespace="System.IO" #>
    <#@ import namespace="System.Diagnostics" #>
    <#@ import namespace="System.Linq" #>
    <#@ import namespace="System.Xml" #>
    <#@ import namespace="System.Xml.Linq" #>
    <#@ import namespace="System.Collections" #>
    <#@ import namespace="System.Collections.Generic" #> 
    <#
        string currPath = Path.GetDirectoryName(Host.TemplateFile);
        XDocument xd = XDocument.Load(Path.Combine(currPath, "marathon.xml"));
        foreach (var t in xd.Root.Elements()) {
            string tableName = t.Attribute("id").Value;
    #>
    using System.ComponentModel.DataAnnotations;
     
    public class <#= tableName #>
    {
    <#
            foreach (var c in t.Elements()) {
                string name = c.Attribute("name").Value;
                string type = c.Attribute("datatype").Value;
                bool isPK = c.Attribute("pkey") != null;
                if (isPK) {
    #>
        [Key]
    <#
                }
    #>
        public <#= type #> <#= name #> { get; set; }
    <#
            }
    #>
    }
    <#
            string relativeOutputFilePath = "Code\\" + tableName + ".cs";
            string outputFilePath = Path.Combine(currPath, relativeOutputFilePath);
            TemplateHelper.WriteTemplateOutputToFile(outputFilePath, GenerationEnvironment);
        }
    #>
    <#+
    //REF: http://bit.ly/X9wTu0
    public class TemplateHelper
    {
        public static void WriteTemplateOutputToFile(
            string outputFilePath,
            System.Text.StringBuilder genEnvironment)
        {
            System.IO.File.WriteAllText(outputFilePath, genEnvironment.ToString());
            genEnvironment.Clear();
     
        }
    }
    #> 
     
    **補充**
    :
    1. 預設T4並未參照System.Xml.dll及System.Xml.Linq.dll,
    2. 記得要在最前方透過<#@ Assembly #>及<#@ import #>加入參照。
    3. 透過Host.TemplateFile可取得T4檔案所在實體路徑,可用來決定輸出檔案路徑。
    4. T4檔末端透過<#+ #>宣告了共用函數TemplateHelper.WriteTemplateOutputToFile(),
    5. 透過其將產生結果寫入檔案 .
                  ****
                  &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
                  &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

                  update*1/9*WGA破解驗證最新 ))**~


                           update*1/9*WGA破解驗證最新 ))**~



                  **運行後即可將所有XP版本修改成 XP PRO OEM~ 免邀活專業版--
                  --是用於任何品牌機和組裝兼容機使用  !^*(請先看 txt.文件 )
                  [解壓后.按2下開啟.rar  
                  一按激活.自動安裝.重新開机.即可驗証喔!]

                  **日後因為微軟安全更新補丁使破解失敗,在次運行一次即可
                  Windows正版驗證網址:請到 http://www.microsoft.com/genuine/  **

                  **亦可於--安裝前請先確認你當前的操作系統是 Windows XP(sp1-3版本)
                  ※運行本成是請先重啟電腦按F8漸進入安全模式下進行**


                  **下載 : 2sharded download
                       XP破解.rar   * File size: 13,540 KB   
                   Uploaded: 2013-09-01*

                  ~~~~~~~~~~~~~~**********************~~~~~~~~~~~~~~~



                      WGA 驗證是各盜版軟件者的
                  死敵,由於本人昨天重灌電腦,
                  以前的WGA破解軟件再不能使用了。
                  今天找了最新的免WGA驗證
                  軟件,而且是繁體中文介面
                  非常好用,
                  經本人2013年1月份測試
                  定確可用,而且只需按幾下
                  鼠標幾個步驟即可,免除了繁複的步驟。

                  由於!原作者在網頁表示很討厭分享在其他的 
                  討論區的關係,也避免給其他壞人更改程序的關係,
                  為了尊重原作者,也為求大家使用得放心,
                  本人就不直接提供下載連接地址了的。
                  想下載的請上原作者的網頁即可 :
                  http://98.to/chanyc0114xp 
                  作者原始下載網址︰http://downloads.
                  ziddu.com/downloadfile/
                   11360191/Ck1.5F.zip.html

                  ....請尊重原創者,切勿擅改~
                  只供參考交流,勿用於商業及非法
                  24小時后刪檔
                  建議選用正版軟體!!

                     **軟體名稱 : CCracker1[1].5f 2013更新
                  其他舊版本不清楚是否可用,如果想用到的,
                  還是上我給你們的URL保證可用@@
                  備註︰Windows XP 序號修改器-運行不到
                  一秒鐘的時間,立即通過 WGA 驗證,
                  即可安裝 microsoft 更新補丁或軟體,
                  不信你大可以嘗試。因為本人已經實體測試,
                  可以更新補丁也可以安裝windows media player。
                  如果不能!或導致你的電腦不能通過WGA 驗證,
                  導致黑屏等等!你大可以PM 本人
                  送你一套正版XP系統。haha..

                     **
                  **
                   
                  QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ

                  2013年8月30日 星期五

                  *MSDN Library*逐步解說~移植現有原生C++ 應用程式使其與 .NET Framework 元件互通**

                  *MSDN Library*逐步解說~移植現有原生C++ 應用程式使其與---
                  --- .NET Framework 元件互通**

                  **在本逐步解說中,您將會用 MFC 建立預訂機票的應用程式,
                  然後再將其升級為以 .NET Framework 為目標,並使用 Managed Extensions 
                   for C++。
                  MFC 應用程式會處理預訂的工作。使用者介面為 MFC 應用程式,
                  其引擎是由包含公司差旅規定的 Helper 函式的 DLL (原生 C++) 和處理---
                  ---預訂機位的 COM 物件 (原生 C++) 所構成  **
                  *注意   若要建立本逐步解說中所描述的應用程式,您必須能夠存取已經---
                  ---安裝 Pubs 或 Northwind 資料庫的資料庫伺服器                           *
                  **
                  *在本逐步解說中,您將會           :    
                  *
                1. 建立 MFC 應用程式,並用 Managed Extensions for C++ 來修改。
                2. 將應用程式轉換為 Managed 程式碼,並以 /clr 編譯器選項來編譯。
                3. 使用 Windows Form 來取代 MFC 使用者介面。
                4. 連接到 SQL Server 資料庫,以取得公司所有員工的清單。
                5. 將預留機位引擎類別移植到 Managed 類別。
                6. 建立新的 Managed 組件,以便與預訂用的 COM 物件互通             *
                7. **在您完成本逐步解說後,架構看起來會很像下列圖表:                   
                  *應用程式完成後的架構                                 : 
                  ***
                  *建立 MFC 應用程式
                  在本章節中,您將建立具有三個專案 (MFC、ATL COM 和 MFC DLL)---
                  --- 的原生 C++ MFC 應用程式,稱之為 ReservationDemo
                  然後您可以在後面各章節中再對其進行修改                                    *
                  **若要建立 MFC 專案**
                  *
                  1. 按一下 [檔案] 功能表上的 [新增],然後再按一下 [專案]。
                    出現 [新增專案] 對話方塊。
                  2. 在 [專案類型] 窗格中按一下 [Visual C++ 專案],然後再按一下 [MFC]。
                  3. 在 [範本] 窗格中按一下 [MFC 應用程式]。在 [名稱] 欄位中輸入 ReservationDemo
                  4. 然後按一下 [確定]。 出現 MFC 應用程式精靈。
                  5. 按一下 [應用程式類型],然後選取 [對話方塊架構]。按一下 [完成]。
                  6. 在 [類別檢視] 中用滑鼠右鍵按一下專案節點。在快速鍵功能表上
                  7. 按一下 [加入],然後再按一下 [加入類別]。 出現 [加入類別] 對話方塊。
                  8. 在 [類別] 窗格中展開 [Visual C++ 專案] 資料夾,然後再按一下 [泛用] 資料夾。
                  9. 按一下 [開啟]。 出現泛用 C++ 類別精靈。
                  10. 輸入 CEmployee 做為泛用 C++ 類別名稱。這是沒有基底類別的公用類別。
                  11. 重複執行步驟 4 和 5,以建立泛用 C++ 類別 CReservation    
                  *若要建立 ATL COM 專案 *
                  *
                  1. 在 [方案總管] 中用滑鼠右鍵按一下方案節點。在快速鍵功能表上按一下  [加入],
                  2. 然後再按一下 [新增專案]。 出現 [加入新的專案] 對話方塊。
                  3. 在 [專案類型] 窗格上,展開 [Visual C++ 專案] 資料夾,然後再按一下  [ATL]。
                  4. 在 [樣板] 窗格中,按一下 [ATL 專案]。在 [名稱] 欄位中輸入 BookingObject
                  5. 然後選取 [加入至方案]。按一下 [確定]。 ATL 專案精靈就會出現。
                  6. 按一下 [完成] 以接受預設值。
                  7. 在 [類別檢視] 中用滑鼠右鍵按一下專案節點。在快速鍵功能表中按一下  [加入],
                  8. 然後再按一下 [加入類別]。 出現 [加入類別] 對話方塊。
                  9. 在 [類別] 窗格中展開 [Visual C++ 專案] 資料夾,然後再按一下   [ATL] 資料夾。
                  10. 選取 [ATL 簡單物件] 並按一下 [開啟]。 出現 ATL 簡單物件精靈。
                  11. 在 [簡短名稱] 欄位輸入 Booking,再按一下 [確定]。
                  12. 在 [方案總管] 中連按兩下 Booking.h,將粗體字所示的程式碼加入 IBooking 
                  __interface IBooking : IDispatch
                  {
                     [id(1), helpstring("method Reserve")] HRESULT Reserve(void);
                     [id(2), helpstring("method NewBooking")] HRESULT NewBooking([in]
                     BSTR fromCity, [in] BSTR toCity, [in] BYTE day, [in] BYTE month);
                     [id(3), helpstring("method CheckAvailability")] HRESULT
                     CheckAvailability([out,retval] BYTE* result);
                  };                                                               

                  8).在 Booking.h 中,將粗體字所示的程式碼加入 CBooking 宣告的結尾:
                  class ATL_NO_VTABLE CBooking : public IBooking
                  {
                  ...
                  public:
                     STDMETHOD(Reserve)(void);
                     STDMETHOD(NewBooking)(BSTR fromCity, BSTR toCity, BYTE day,
                     BYTE month);
                     STDMETHOD(CheckAvailability)(BYTE* result);
                  private:
                     CString from;
                     CString to;
                     int day;
                     int month;
                  }                                      

                  **若要建立 MFC DLL 專案**
                  1. 在 [方案總管] 中,用滑鼠右鍵按一下方案節點。在快速鍵功能表中按一下 [加入],
                  2. 然後再按一下 [新增專案]。
                    出現 [加入新的專案] 對話方塊。
                  3. 在 [專案類型] 窗格上,展開 [Visual C++ 專案] 資料夾,然後再按一下 [MFC]。
                  4. 在 [樣板] 窗格中,按一下 [MFC DLL]。在 [名稱] 欄位中輸入 TravelPolicy
                  5. 再選取 [加入至方案]。請按一下 [確定]。 會出現 MFC DLL 精靈。
                  6. 按一下 [完成] 以接受預設值        .
                  *將 Unmanaged 程式碼轉換為 Managed 程式碼*
                  *在本章節中,您會將現有原生 C++ MFC 應用程式 ReservationDemo 轉換--
                  --為 Managed 程式碼,再用 /clr 編譯器選項來編譯  .
                  *若要使用 /clr 編譯器選項來編譯*
                  1. 在 [方案總管] 中,用滑鼠右鍵按一下 [ReservationDemo],再按一下 [屬性]。
                    [屬性頁] 對話方塊就會出現。
                  2. 展開 [C/C++] 節點。
                  3. 在 [命令列] 中,請於 [其他選項] 方塊中輸入 /clr
                  4. 在 [程式碼產生] 中,將 [基礎 Runtime 檢查] 設為 [預設值],
                  5. 並將 [啟用最少重建] 設為「否」。
                  6. 在 [一般] 中選取 [偵錯資訊格式],並將它變更為 [程式資料庫 (/Zi)]。
                  7. 按一下 [確定],關閉這個對話方塊。
                  8. 在 [建置] 功能表上,按一下 [建置方案]。
                  9. 在 [偵錯] 功能表上,按一下 [啟動但不偵錯]。
                  *在本章節中,您將在預留機位引擎內建立新的 Managed 類別名為 CFlight
                  CFlight 將處理航班資訊,並使用 Unmanaged CReservation 類別來處理實際的預留機位
                  為了讓 Managed 類別能夠和 Unmanaged 類別互動,
                  您必須為 Unmanaged 類別另外使用 Managed 包裝函式 (CReservationWrapper).  **

                  **若要建立 Managed 包裝函式類別**
                  1. 在 [類別檢視] 中,用滑鼠右鍵按一下 [ReservationDemo] 專案節點。
                  2. 在快速鍵功能表中按一下 [加入],然後再按一下 [加入類別]。 出現加入類別精靈。
                  3. 選取 [泛用 C++ 類別],並輸入 CReservationWrapper 做為類別名稱。按一下 [完成]。
                  4. 在 ReservationWrapper.h 中加入下列 #include 陳述式:   
                  #include "Reservation.h"               

                  5).在 ReservationWrapper.h 中將下列成員加入至類別:      
                  CReservation * r;
                  int Reserve(void);

                  6).在 ReservationWrapper.cpp 中,以下列程式碼來取代檔案的全部內容:
                  #include "StdAfx.h"
                  #include ".\reservationwrapper.h"
                  #using <mscorlib.dll>

                  using namespace System;
                  using namespace System::Runtime::InteropServices;

                  CReservationWrapper::CReservationWrapper(void)
                  {
                     System::String * strFrom = S"from";
                     System::String * strTo = S"to";

                     CString csFromCity ((char*)(void*)
                  Marshal::StringToHGlobalAnsi(strFrom));
                     CString csToCity ((char*)(void*)
                  Marshal::StringToHGlobalAnsi(strTo));

                     r = new CReservation(&csFromCity, &csToCity, 17,1,2,2);
                  }

                  CReservationWrapper::Reserve()
                  {
                     int res = r->Reserve();
                     return res;
                  }

                  CReservationWrapper::~CReservationWrapper(void)
                  {
                     delete r;
                  }

                  5*若要建立 Managed 類別*
                  1. 在 [類別檢視] 中,用滑鼠右鍵按一下 [ReservationDemo] 專案節點。
                  2. 在快速鍵功能表中按一下 [加入],然後再按一下 [加入類別]。 出現加入類別精靈。
                  3. 選取 [泛用 C++ 類別],再輸入 CFlight 做為類別名稱。按一下 [完成]。
                  4. 將 Flight.h 中的類別定義修改成如下所示
                  __gc class CFlight
                  {
                  public:
                     CFlight();
                     void Reserve();
                  };

                  5).在 Flight.cpp 中,以下列程式碼來取代檔案的全部內容:  
                  #include "StdAfx.h"
                  #include "Flight.h"
                  #include "ReservationWrapper.h"
                  #using <mscorlib.dll>

                  CFlight::CFlight(void)
                  {
                  }

                  void CFlight::Reserve()
                  {
                     CReservationWrapper *res = new CReservationWrapper();
                     res->Reserve();
                  }
                  若要修改 CEmployee 以使用 CFlight
                  1).在 Employee.cpp 中加入下列 #include 陳述式:    
                  #include <vcclr.h>
                  #include "Flight.h"

                  2).在 Employee.cpp 中,修改 MakeReservation 的實作以執行---
                  ---個體化 CFlight 物件為如下所示 (粗體字程式碼代表變更處)。
                  請注意程式碼如何使用 gcroot 來包含 Managed 類別:
                  int CEmployee::MakeReservation (CString *from, CString *to, int day1,
                  int month1, int day2, int month2)
                  {
                     gcroot<CFlight*> flight;
                     flight->Reserve();
                  }

                  3).在 Reservation.cpp 中,將 Reserve 實作中的 if 陳述式修改為如下所示
                   (粗體字程式碼代表變更處):    
                  if (b->CheckAvailability())
                  {
                     b->Reserve();
                     return res;
                  }
                  else
                     return res + 10;
                  }

                  4).在 [方案總管] 中,用滑鼠右鍵按一下 [ReservationDemo] 專案節點

                  5).
                  1. 在快速鍵功能表上,按一下 [建置]。
                  在本章節中,您將建立一個 DLL 來為兩個新的 XML Web Service (EmployeeCodesEmployeeData) 提供員工資訊以用來擷取員工的資訊。
                  第一個服務會取得員工 ID 的資訊;第二個服務則會取得員工的其他資料。
                  這兩個服務都會使用 IJW 呼叫一個原生 DLL (EmployeeDLL) 以取得所需資訊。
                  若要建立 EmployeeDLL 原生 C++ DLL 以提供員工資訊
                  1. 按一下 [檔案] 功能表上的 [新增],然後再按一下 [專案]。
                  2. 出現 [新增專案] 對話方塊。
                  3. 在 [專案類型] 窗格中,按一下 [Visual C++ 專案],然後在 [範本] 窗格中,
                  4. 按一下 [Win32 專案]。在 [名稱] 方塊中輸入 EmployeeDLL
                  5. 再選取 [加入至方案]。按一下 [確定]。
                  6. 修改 EmployeeDLL.cpp 檔中的程式碼   
                  #include "StdAfx.h"

                  extern "C" __declspec(dllexport) int EmployeeID(LPSTR name)
                  {
                     return (int) *name;
                  }

                  BOOL APIENTRY DllMain( HANDLE hModule, DWORD  ul_reason_for_call,
                  LPVOID lpReserved)
                  {
                     return TRUE;
                  }

                  4).
                  1. 在 [方案總管] 中,用滑鼠右鍵按一下專案。在快速鍵功能表上,按一下 [建置]。
                  若要建立 EmployeeCodes XML Web Service
                  1. 按一下 [檔案] 功能表上的 [新增],然後再按一下 [專案]。 出現 [新增專案] 對話方塊。
                  2. 在 [專案類型] 窗格上,展開 [Visual C++ 專案] 資料夾,然後再按一下 [.NET]。
                  3. 在 [樣板] 窗格中按一下 [ASP.NET Web 服務]。
                  4. 在 [名稱] 欄位中輸入 EmployeeCodes,再選取 [加入至方案]。按一下 [確定]。
                  5. EmployeeCodesClass.h 會出現在 [設計] 檢視中。用滑鼠右鍵按一下 [設計工具],
                  6. 並在快速鍵功能表中按一下 [檢視程式碼]。
                  7. EmployeeDataClass.h 會出現在 [編輯] 檢視中。
                  8. 以下列程式碼來取代 EmployeeCodesClass.h 中的全部內容:  
                  // EmployeeCodesClass.h

                  #pragma once

                  using namespace System;
                  using namespace System::Web;
                  using namespace System::Web::Services;

                  namespace EmployeeCodes
                  {
                     public __gc
                     class EmployeeCodesClass : public WebService
                     {

                     public:

                        [System::Web::Services::WebMethod]
                        int  EmployeeLevel(String* name);
                     };
                  }

                  5).以下列程式碼來取代 EmployeeCodesClass.cpp 中的全部內容:   
                  // EmployeeCodesClass.cpp

                  #include "StdAfx.h"
                  #include "EmployeeCodesClass.h"
                  #include "Global.asax.h"

                  using namespace System::Runtime::InteropServices;

                  [DllImport("EmployeeDLL", CharSet=CharSet::Ansi)]
                  extern "C" int EmployeeID(String* name);

                  namespace EmployeeCodes
                  {
                     int  EmployeeCodesClass::EmployeeLevel(String* name)
                     {
                        return EmployeeID(name);
                     }
                  };

                  若要建立 EmployeeData XML Web Service
                  1. 按一下 [檔案] 功能表上的 [新增],然後再按一下 [專案]。 出現 [新增專案] 對話方塊。
                  2. 在 [專案類型] 窗格上,展開 [Visual C++ 專案] 資料夾,然後再按一下 [.NET]。
                  3. 在 [樣板] 窗格中按一下 [ASP.NET Web 服務]。
                  4. 在 [名稱] 欄位中輸入 EmployeeCodes,再選取 [加入至方案]。按一下 [確定]。
                  5. EmployeeDataClass.h 會出現在 [設計] 檢視中。用滑鼠右鍵按一下 [設計工具],
                  6. 並在快速鍵功能表中按一下 [檢視程式碼]。
                  7. EmployeeDataClass.h 會出現在 [編輯] 檢視中。
                  8. 以下列程式碼來取代 EmployeeDataClass.h 中的全部內容:      
                  // EmployeeDataClass.h

                  #pragma once

                  using namespace System;
                  using namespace System::Web;
                  using namespace System::Web::Services;

                  namespace EmployeeData
                  {
                     public __gc
                     class EmployeeDataClass : public WebService
                     {

                     public:
                        [System::Web::Services::WebMethod]
                        int EmployeeLadder(String* name);
                     };
                  }

                  5).以下列程式碼來取代 EmployeeDataClass.cpp 中的全部內容:  
                  // EmployeeDataClass.cpp

                  #include "StdAfx.h"
                  #include "EmployeeDataClass.h"
                  #include "Global.asax.h"

                  using namespace System::Runtime::InteropServices;

                  [DllImport("EmployeeDLL", CharSet=CharSet::Ansi)]
                  extern "C" int EmployeeID(String* name);

                  namespace EmployeeData
                  {
                     int EmployeeDataClass::EmployeeLadder(String* name)
                     {
                        return EmployeeID(name);
                     }

                  };

                  6).
                  在 [建置] 功能表上,按一下 [建置方案]。這樣就把 XML Web Service 部署到本機電腦上。
                  若要將 XML Web Service 的參考加入 MFC 應用程式
                  1. 在 [方案總管] 中,用滑鼠右鍵按一下 [ReservationDemo] 專案。
                  2. 在快速鍵功能表上按一下 [加入 Web 參考]。 [加入 Web 參考] 對話方塊就會出現。
                  3. 按一下 [本機電腦上的 Web 服務],再選取 EmployeeCodes 的 XML Web Service。
                  4. XML Web Service 說明會出現在對話方塊的主窗格中。按一下 [加入參考]。
                  5. 針對 EmployeeData 重複執行步驟 1 至 3。
                  6. 修改 Employee.cpp 以便搭配 XML Web Service 使用。加入下列 #include 陳述式:         
                  #define __FLTUSED__
                  #include "localhost.h"
                  #include "localhost1.h"
                    
                    6).將 CEmployee 建構函式修改為如下所示 (粗體字程式碼代表變更處):   
                  CEmployee::CEmployee(CString *name)
                  {
                     employeeName = *name;
                     reservation = NULL;

                     int res;

                     localhost::EmployeeCodesClass *c = new
                  localhost::EmployeeCodesClass();
                     res  = c->EmployeeLevel(S"app");

                     localhost1::EmployeeDataClass *c1 = new
                  localhost1::EmployeeDataClass();
                     res  = c1->EmployeeLadder(S"paa");
                  }

                  7).在 [建置] 功能表上,按一下 [建置方案] .
                  8).針對每一 XML Web Service 將 EmployeeDLL.dll 複製到 Inetpub 目錄。例如,
                  如果您的 Inetpub 目錄位於 C: 磁碟機,則完整目錄就會是:
                  C:\Inetpub\wwwroot\EmployeeCodes\bin
                  C:\Inetpub\wwwroot\EmployeeData\bin

                  以 Windows Form 取代使用者介面

                  下一步就是使用 Windows Form 來取代 MFC 使用者介面。在本章節中,
                  您將建立新的 Windows Form 應用程式,
                  其中會使用到 MFC 應用程式中的預留機位引擎。
                  若要建立基底表單
                  1. 按一下 [檔案] 功能表上的 [新增],然後再按一下 [專案]。 出現 [新增專案] 對話方塊。
                  2. 在 [專案類型] 窗格上,展開 [Visual C++ 專案] 資料夾,然後再按一下 [.NET]。
                  3. 在 [樣板] 窗格中按一下 [類別程式庫 (.NET)]。
                  4. 在 [名稱] 欄位中輸入 ReservationApp,再選取 [加入至方案]。按一下 [確定]。
                  5. 在 [ReservationApp] 專案上按一下滑鼠右鍵。在快速鍵功能表上,按一下 [加入],
                  6. 再按一下 [加入項目]。 會出現 [加入項目] 對話方塊。
                  7. 按一下 [Windows Form (.NET)],並將新表單命名為 ParentForm。按一下 [開啟]。
                  8. 在 [檢視] 功能表上按一下 [工具箱]。
                  9. 在 [工具箱] 中開啟 [Windows Form]。將按鈕從 [工具箱] 拉至表單中,
                  10. 並將 Button1 的 [文字] 屬性設為 [取消]
                  11. 連按兩下 [取消] 按鈕以加入事件處理常式。
                  12. 將下列程式碼插入 button1_click 事件:
                    Close();
                    
                  13. 在 [建置] 功能表上,按一下 [建置方案]。
                  若要建立繼承表單
                  1. 按一下 [檔案] 功能表上的 [新增],然後再按一下 [專案]。
                  2. 出現 [新增專案] 對話方塊。
                  3. 在 [專案類型] 窗格上,展開 [Visual C++ 專案] 資料夾,然後再按一下 [.NET]。
                  4. 在 [範本] 窗格中按一下 [Windows Form 應用程式 (.NET)]。
                  5. 在 [名稱] 欄位中輸入 ChildForm,再選取 [加入至方案]。請按一下 [確定]。
                  6. Form1 繼承父表單。開啟 Form1.h 並將下面這一行:
                    public __gc class Form1 : public System::Windows::Forms::Form
                    
                    變更為:
                    public __gc class Form1 : public ReservationApp::ParentForm
                    
                  7. 在 [方案總管] 中,用滑鼠右鍵按一下 [ChildForm] 專案。
                  8. 在快速鍵功能表中按一下 [加入參考]。 [加入參考] 對話方塊出現。
                  9. 從清單中選取 [ReservationApp],再按一下 [確定]。
                  10.  [ReservationApp] 會出現在 [方案總管] 的 [參考] 清單中。
                  11. 從 [工具箱] 中,將按鈕從工具箱拉到 [設計] 檢視中 ChildForm 專案的 Form1.h 內。
                  12. 在 [屬性] 視窗中,將 Button1 的 [文字] 屬性設為 [確定]。
                  13. 從 [工具箱] 中,拉下三個下拉式清單方塊控制項,以及代表員工名稱、
                  14. 來源機場和目的地機場的三個標籤。
                  15. 拉下兩個 DatePicker ActiveX 控制項:一個代表出發日期,另一個代表返回日期.
                  若要將表單連接到預留機位引擎
                  現在您已建立了表單的配置,所以就可以將表單連接到預留機位引擎。
                  1. 將下列檔案從 ReservationDemo 目錄複製到 ChildForm 目錄:
                    Employee.cpp
                    Employee.h
                    Flight.cpp
                    Flight.h
                    Reservation.cpp
                    Reservation.h
                    localhost.h
                    localhost1.h
                    
                  2. 將 TravelPolicy.dll 和 BookingObject.dll 複製到 ReservationApp\Debug 目錄。
                  3. 在 [方案總管] 中,用滑鼠右鍵按一下 [ChildForm] 專案。
                  4. 在快速鍵功能表中按一下 [加入現有項目]。 此時會出現 [加入現有項目] 對話方塊。
                  5. 選取 Employee.cpp、Employee.h、Flight.cpp、Flight.h、Reservation.cpp 和
                  6.  Reservation.h。另外再從 ReservationDemo\Debug 中加入 TravelPolicy.lib。
                  7. 以下列程式碼取代 ChildForm\Flight.cpp 中的程式碼:
                    #include "StdAfx.h"
                    #include "Flight.h"
                    #include "Reservation.h"
                    #using <mscorlib.dll>
                    
                    using namespace System;
                    using namespace System::Runtime::InteropServices;
                    
                    CFlight::CFlight(void)
                    {
                    }
                    
                    void CFlight::Reserve()
                    {
                       System::String * strFrom = S"from";
                       System::String * strTo = S"to";
                    
                       CString csFromCity ((char*)(void*) 
                    Marshal::StringToHGlobalAnsi(strFrom));
                       CString csToCity ((char*)(void*) 
                    Marshal::StringToHGlobalAnsi(strTo));
                    
                       CReservation* r = new CReservation(   &csFromCity, &csToCity, 
                    17,1,2,2);
                       int res = r->Reserve();
                    };
                    
                  8. 在ChildForm\Reservation.h 中加入: 
                    #include <atlstr.h>
                    
                  9. 在 ChildForm\Form1.h 中加入下列 #include 陳述式: 
                    #pragma once
                    #include Employee.h
                    ...
                    using namespace System;
                    
                  10. 在 ChildForm\Form1.h 的 [設計] 檢視中,連按兩下 [確定] 按鈕以加入事件處理常式 .
                  11. 將下列程式碼加入至 button2_click 事件處理常式: 
                    CString name(comboBox1->Text);
                    CEmployee employee(&name);
                    
                    CString FromCity(comboBox2->Text);
                    CString ToCity(comboBox3->Text);
                    
                    employee.MakeReservation(&FromCity, &ToCity, 
                                dateTimePicker1->Value.Day, dateTimePicker1->Value.Month,
                                dateTimePicker1->Value.Day, dateTimePicker1->Value.Month);
                    
                  12. 在 [方案總管] 中,用滑鼠右鍵按一下 [ChildForm] 專案。
                  13. 在快速鍵功能表上按一下 [設定為起始專案]。
                  14. 以滑鼠右鍵再按一下專案,並選取 [屬性]。
                    [屬性頁] 對話方塊就會出現。
                  15. 選取 [偵錯],再將 [偵錯工具類型] 設為 [僅限 Managed]。按一下 [確定]。
                  16. 在 [建置] 功能表上,按一下 [建置方案]。
                  17. 在 Flight.cpp 中,於下列這一行上設定中斷點:
                  int res = r->Reserve();
                  15.從 [偵錯] 功能表中按一下 [啟動] 以執行該應用程式。
                  16.按一下 [確定] 按鈕。
                  程式會執行到您設定的中斷點處。
                  17.當程式執行到中斷點時,請在 [偵錯] 功能表上按一下 [逐步執行],並確定應用程式能夠運作,
                  然後再選取 [跳離函式] 和 [不進入函式]。在 [快速監看式] 視窗中,確認 res 的值為 -13 .
                  以 Windows Form 取代使用者介面
                  下一步就是使用 Windows Form 來取代 MFC 使用者介面。在本章節中,
                  您將建立新的 Windows Form 應用程式,其中會使用到 MFC 應用程式中的預留機位引擎。
                  若要建立基底表單
                  1. 按一下 [檔案] 功能表上的 [新增],然後再按一下 [專案]。 出現 [新增專案] 對話方塊。
                  2. 在 [專案類型] 窗格上,展開 [Visual C++ 專案] 資料夾,
                  3. 然後再按一下 [.NET]。在 [樣板] 窗格中按一下 [類別程式庫 (.NET)]。
                  4. 在 [名稱] 欄位中輸入 ReservationApp,再選取 [加入至方案]。按一下 [確定]。
                  5. 在 [ReservationApp] 專案上按一下滑鼠右鍵。在快速鍵功能表上,
                  6. 按一下 [加入],再按一下 [加入項目]。 會出現 [加入項目] 對話方塊。
                  7. 按一下 [Windows Form (.NET)],並將新表單命名為 ParentForm。按一下 [開啟]。
                  8. 在 [檢視] 功能表上按一下 [工具箱]。
                  9. 在 [工具箱] 中開啟 [Windows Form]。將按鈕從 [工具箱] 拉至表單中,
                  10. 並將 Button1 的 [文字] 屬性設為 [取消]
                  11. 連按兩下 [取消] 按鈕以加入事件處理常式。
                  12. 將下列程式碼插入 button1_click 事件:
                    Close();
                    
                  13. 在 [建置] 功能表上,按一下 [建置方案]。
                  若要建立繼承表單
                  1. 按一下 [檔案] 功能表上的 [新增],然後再按一下 [專案]。 出現 [新增專案] 對話方塊。
                  2. 在 [專案類型] 窗格上,展開 [Visual C++ 專案] 資料夾,然後再按一下 [.NET]。
                  3. 在 [範本] 窗格中按一下 [Windows Form 應用程式 (.NET)]。
                  4. 在 [名稱] 欄位中輸入 ChildForm,再選取 [加入至方案]。請按一下 [確定]。
                  5. Form1 繼承父表單。開啟 Form1.h 並將下面這一行:
                    public __gc class Form1 : public System::Windows::Forms::Form
                    
                    變更為:
                    public __gc class Form1 : public ReservationApp::ParentForm
                    
                  6. 在 [方案總管] 中,用滑鼠右鍵按一下 [ChildForm] 專案。
                  7. 在快速鍵功能表中按一下 [加入參考]。 [加入參考] 對話方塊出現。
                  8. 從清單中選取 [ReservationApp],再按一下 [確定]。
                  9. [ReservationApp] 會出現在 [方案總管] 的 [參考] 清單中。
                  10. 從 [工具箱] 中,將按鈕從工具箱拉到 [設計] 檢視中 ChildForm 專案的 Form1.h 內。
                  11. 在 [屬性] 視窗中,將 Button1 的 [文字] 屬性設為 [確定]。
                  12. 從 [工具箱] 中,拉下三個下拉式清單方塊控制項,以及代表員工名稱、
                  13. 來源機場和目的地機場的三個標籤。
                  拉下兩個 DatePicker ActiveX 控制項:一個代表出發日期,另一個代表返回日期。
                  若要將表單連接到預留機位引擎
                  現在您已建立了表單的配置,所以就可以將表單連接到預留機位引擎。
                  1. 將下列檔案從 ReservationDemo 目錄複製到 ChildForm 目錄:
                    Employee.cpp
                    Employee.h
                    Flight.cpp
                    Flight.h
                    Reservation.cpp
                    Reservation.h
                    localhost.h
                    localhost1.h
                    
                  2. 將 TravelPolicy.dll 和 BookingObject.dll 複製到 ReservationApp\Debug 目錄。
                  3. 在 [方案總管] 中,用滑鼠右鍵按一下 [ChildForm] 專案。
                  4. 在快速鍵功能表中按一下 [加入現有項目]。 此時會出現 [加入現有項目] 對話方塊。
                  5. 選取 Employee.cpp、Employee.h、Flight.cpp、Flight.h、Reservation.cpp
                  6. 和 Reservation.h。另外再從 ReservationDemo\Debug 中加入 TravelPolicy.lib。
                  7. 以下列程式碼取代 ChildForm\Flight.cpp 中的程式碼:
                    #include "StdAfx.h"
                    #include "Flight.h"
                    #include "Reservation.h"
                    #using <mscorlib.dll>
                    
                    using namespace System;
                    using namespace System::Runtime::InteropServices;
                    
                    CFlight::CFlight(void)
                    {
                    }
                    
                    void CFlight::Reserve()
                    {
                       System::String * strFrom = S"from";
                       System::String * strTo = S"to";
                    
                       CString csFromCity ((char*)(void*) 
                    Marshal::StringToHGlobalAnsi(strFrom));
                       CString csToCity ((char*)(void*) 
                    Marshal::StringToHGlobalAnsi(strTo));
                    
                       CReservation* r = new CReservation(   &csFromCity, &csToCity, 
                    17,1,2,2);
                       int res = r->Reserve();
                    };
                    
                  8. 在ChildForm\Reservation.h 中加入:
                    #include <atlstr.h>
                    
                  9. 在 ChildForm\Form1.h 中加入下列 #include 陳述式:
                    #pragma once
                    #include Employee.h
                    ...
                    using namespace System;
                    
                  10. 在 ChildForm\Form1.h 的 [設計] 檢視中,連按兩下 [確定] 按鈕以加入事件處理常式。
                  11. 將下列程式碼加入至 button2_click 事件處理常式:
                    CString name(comboBox1->Text);
                    CEmployee employee(&name);
                    
                    CString FromCity(comboBox2->Text);
                    CString ToCity(comboBox3->Text);
                    
                    employee.MakeReservation(&FromCity, &ToCity, 
                                dateTimePicker1->Value.Day, dateTimePicker1->Value.Month,
                                dateTimePicker1->Value.Day, dateTimePicker1->Value.Month);
                    
                  12. 在 [方案總管] 中,用滑鼠右鍵按一下 [ChildForm] 專案。
                  13. 在快速鍵功能表上按一下 [設定為起始專案]。
                  14. 以滑鼠右鍵再按一下專案,並選取 [屬性]。 [屬性頁] 對話方塊就會出現。
                  15. 選取 [偵錯],再將 [偵錯工具類型] 設為 [僅限 Managed]。按一下 [確定]。
                  16. 在 [建置] 功能表上,按一下 [建置方案]。
                  17. 在 Flight.cpp 中,於下列這一行上設定中斷點:
                    int res = r->Reserve();
                    
                  18. 從 [偵錯] 功能表中按一下 [啟動] 以執行該應用程式。
                  19. 按一下 [確定] 按鈕。 程式會執行到您設定的中斷點處。
                  20. 當程式執行到中斷點時,請在 [偵錯] 功能表上按一下 [逐步執行],
                  21. 並確定應用程式能夠運作,然後再選取 [跳離函式] 和 [不進入函式]。
                  22. 在 [快速監看式] 視窗中,確認 res 的值為 -13。

                  連接到 SQL Server 資料庫

                  在本章節中,您將會設定應用程式以 SQL Server 資料庫的資料填滿員工的下拉式清單方塊。
                  首先,您必須建立資料連接。
                  若要存取資料庫的資料
                  1. 在 [檢視] 功能表上按一下 [伺服器總管]。
                  2. 在 [伺服器總管] 中以滑鼠右鍵按一下 [資料連接] 節點,並選取 [加入連接]。
                  3. 此時會顯示 [資料連結內容] 對話方塊。
                  4. 指定您擁有帳戶或存取權限的伺服器名稱。選取 [使用 Windows NT 整合安全]。
                  5. 選取資料庫,例如:Pubs 或 Northwind。按一下 [確定] 以建立連接,
                  6. 它會出現在 [伺服器總管] 中。
                  7. 在 [伺服器總管] 中,先展開該資料庫節點,再展開 [表格] 節點,
                  8. 然後再選取適合的表格 (例如作者),並將它拉到 Form1 的 [設計] 檢視中。
                  9. 如此將會建立兩個物件:sqlConnection1 sqlDataAdapter1
                  10. 用滑鼠右鍵按一下 [sqlDataAdapter1] 物件,再按一下 [設定資料配接器]。
                  11. 出現 [設定資料配接器] 對話方塊。
                  12. 按一下 [下一步]。若它不是預設的資料庫,則請先指定您的資料庫,再按一下 [下一步]。
                  13. 選取 [使用SQL 陳述式],再按一下 [下一步]。
                  14. 選擇 [查詢產生器],再選取您想要操作的欄位。按一下 [確定],然後再按一下 [完成]。
                  15. 在 Form1 的 [設計] 檢視中,用滑鼠右鍵按一下 [sqlDataAdapter1],
                  16. 並從其內容功能表中選取 [產生資料集]。 [產生資料集] 對話方塊將出現。
                  17. 選擇名稱為 DataSet1 (預設值) 的新資料集,其中包含作者的表格,
                  18. 並確定已選取 [將此資料集加入設計工具中]。
                  若要設定表單控制項以使用產生的資料集
                  1. 在 Form1 的 [設計] 檢視中,按一下員工姓名的下拉式清單方塊。
                  2. 在 [屬性] 視窗中,將 DataSource 設為 dataSet11.authors
                  3. 並將 DisplayMember 設定為 au_lname
                  4. 連按兩下該表單以便將 Form1_Load 事件加入。將下列程式碼加入至事件:
                    dataSet11->Clear( );
                    sqlDataAdapter1->Fill(dataSet11);
                    
                  5. 在 [建置] 功能表上,按一下 [建置方案]。
                    注意   若無法建置方案,請將 #include "Dataset1.h" 從 stdafx.h

                    移到 ChildForm\Form1.cpp 中 #include "stdafx.h." 之後。

                  將預留機位引擎移植到 Managed 類別

                  在本章節中,您會將預留機位引擎移植成完全的 Managed,以展示 Managed 和 Unmanaged 程式碼
                  之間的互通性。您必須把新的 Managed 類別修改為可與差旅規定 DLL 和預訂機位的 COM 物件互通。
                  若要執行這項作業,則您必須依下列程式碼 (粗體字程式碼代表變更處) 所述來編輯標頭和實作檔案。
                  Employee.h
                  //  Employee.h
                  
                  #pragma once
                  
                  #include "reservation.h"
                  
                  __gc class CEmployee
                  {
                  protected:
                     CReservation* reservation;
                     System::String* employeeName;
                  public:
                     CEmployee(System::String* name);
                     ~CEmployee(void);
                  
                     virtual int MakeReservation (System::String* from, 
                  System::String* to, int day1, int month1, int day2, int month2);
                  };
                  
                  Employee.cpp
                  // Employee.cpp
                  
                  #include "StdAfx.h"
                  #include <vcclr.h>
                  #include "employee.h"
                  #include "Flight.h"
                  
                  #define __FLTUSED__
                  #include "localhost.h"
                  #include "localhost1.h"
                  
                  CEmployee::CEmployee(System::String* name)
                  {
                     employeeName = name;
                     reservation = NULL;
                     int res;
                  
                     localhost::EmployeeCodesClass *c = new 
                  localhost::EmployeeCodesClass();
                     res = c->EmployeeLevel(S"app");
                  
                     localhost1::EmployeeDataClass *c1 = new 
                  localhost1::EmployeeDataClass();
                     res = c1->EmployeeLadder(S"paa");
                  }
                  int CEmployee::MakeReservation (System::String* from, System::String* 
                  to, int day1, int month1, int day2, int month2)
                  {
                     CFlight* flight;
                     flight->Reserve();
                     return 1;
                  }
                  
                  CEmployee::~CEmployee(void)
                  {
                  }
                  
                  --------------------------------------------------------------------------------
                  Reservation.h
                  // Reservation.h
                  
                  #pragma once
                  
                  __gc class CReservation
                  {
                  protected:
                     __gc struct CityInfo {
                        System::String* city;
                        int departDay;
                        int departMonth;
                     };
                     CityInfo* fromCity, * toCity;
                  public:
                     CReservation(System::String* from, System::String* to, int d1, int 
                  m1, int d2, int m2);
                     ~CReservation(void);
                     virtual int Reserve ();
                  protected:
                     virtual int GetFlightPolicy (int level);
                  };
                  
                  --------------------------------------------------------------------------------
                  Reservation.cpp
                  // Reservation.cpp
                  
                  #include "StdAfx.h"
                  #include "reservation.h"
                  
                  #import "..\\bookingobject\\_bookingobject.tlb" no_namespace
                  
                  #using <mscorlib.dll>
                  using namespace System;
                  using namespace System::Runtime::InteropServices;
                  
                  CReservation::CReservation(System::String* from, System::String* to, 
                  int d1, int m1, int d2, int m2)
                  {
                     fromCity = new CityInfo();
                     toCity = new CityInfo();
                     fromCity->city = from;
                     fromCity->departDay = d1;
                     fromCity->departMonth = m1;
                     toCity->city = to;
                     toCity->departDay = d2;
                     toCity->departMonth = m2;
                  }
                  
                  CReservation::~CReservation(void)
                  {
                  }
                  
                  int CReservation::Reserve ()
                  {
                     IBookingPtr b(__uuidof(CBooking));
                  
                     BSTR bstrFromCity = static_cast<BSTR> 
                  (Marshal::StringToBSTR(fromCity->city).ToPointer());
                     BSTR bstrToCity = static_cast<BSTR> (Marshal::StringToBSTR(
                  toCity->city).ToPointer());
                  
                     b->NewBooking(bstrFromCity, bstrToCity, fromCity->departDay, 
                  fromCity->departMonth);
                  
                     int res = GetFlightPolicy(1);
                  
                     if (b->CheckAvailability())
                     {
                        b->Reserve();
                        return res;
                     }
                     else
                        return res + 10;
                  
                  }
                  
                  __declspec( dllimport ) int GetFlightClass (int, int);
                  
                  int CReservation::GetFlightPolicy (int level)
                  {
                     return GetFlightClass(level, fromCity->departDay-toCity->departDay);
                  }
                  
                  ------------------------------------------------------------------------------------
                  Flight.cpp
                  // Flight.cpp
                  
                  #include "StdAfx.h"
                  #include ".\\flight.h"
                  #include "Reservation.h"
                  #using <mscorlib.dll>
                  
                  using namespace System;
                  using namespace System::Runtime::InteropServices;
                  
                  CFlight::CFlight(void)
                  {
                  }
                  
                  void CFlight::Reserve()
                  {
                     System::String * strFrom = S"from";
                     System::String * strTo = S"to";
                  
                     CReservation* r = new CReservation(   strFrom, strTo, 17, 1, 2, 2);
                     int res = r->Reserve();
                  }
                  
                  -------------------------------------------------------------------------------
                  Form1.h
                  // ChildForm\Form1.h
                  // button2_click handler
                  
                     System::String* name(comboBox1->Text);
                     CEmployee* employee = new CEmployee(name);
                  
                     System::String* FromCity(comboBox2->Text);
                     System::String* ToCity(comboBox3->Text);
                  
                     employee->MakeReservation(FromCity, ToCity, 
                        dateTimePicker1->Value.Day, dateTimePicker1->Value.Month,
                        dateTimePicker1->Value.Day, dateTimePicker1->Value.Month);
                  &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&