網頁

搜尋此網誌

2010年4月10日 星期六

Franz Liszt 弗朗茨‧李斯特

前陣子買了一張CD,這是李斯特(Franz Liszt)的交響曲。

官方網址:http://www.zigzag-territoires.com/article.php3?id_article=301&lang=en

曲目:
  1. Totentanz
  2. Ungarische Rhapsodie No. 1 en Fa
  3. Les Preludes Symphonische Dichtung
  4. Ungarische Rhapsodie No. 3 en Re
  5. Die wiege
  6. Der Kampf Um S Dasein
  7. Zum Grabe Der Wiege Des Zukunft
  8. Mazeppa Symphonische Dichtung

當下享受人生中美好的時刻,欣賞交響曲就是其中之一。

2010年4月9日 星期五

Organizations and Individuals 組織與個人

今天談談「組織(Organization)」與「個人(Individual)」的課題,起因於查爾斯‧韓第(Charles Handy)的書「你拿什麼定義自己?:組織大師韓第的生命故事」再次認真看完一遍,加上我的第一份工作至今已經快半年的時間,自身對於組織有更深入的體會與心得。

首先,我認為不應該稱公司為「公司」,因為公司是一群人組合而成的,用組織稱呼我認為比較恰當而且明白清楚!

進入一個組織之後,組織的氛圍會影響個人的行為與思考,最明顯的就是,個人不會想要盡全力貢獻他最好的一部分,因為絕大多數(看起來99.9%)的組織都是「自私主義(Selfish Doctrine)」,做的多不代表薪水報酬高,做的多工作量只會越來越多,於是形成組織的文化,這是很難去屏除的基因特質!這沒有對與錯的問題,畢竟個人必須在組織中活下去。

所以,一旦個人在組織中存活之後,個人會變得不像「個人」他自己,對於一個新進人員來說,絕大多數通常抱持著願景與熱情進入一個組織工作,殊不知個人已經開始隨組織的文化開始氧化,好聽一點是職場學習,事實上則是去個人化、制度化的開始。好的組織會讓一個人變好,爛的組織則是讓一個人變爛。很多人不了解這個事實,因為自身已經在環境中,又如何以自己的角度觀察自己,除非是死亡前的那一段日子,回顧自己的一生才會了解。幸運的是我們可以藉由查爾斯‧韓第的著作反省自己。

「你拿什麼定義自己?:組織大師韓第的生命故事」有太多的經歷彷彿就是現實生活中自己發生的例子,然而查爾斯‧韓第從不同的角度察覺,使我自身能夠完整看見更多事情的面相。

Thanks to Charles Handy.

2010年3月31日 星期三

Windows Presentation Foundation Threading Model

最近撰寫的應用程式遇到多的Window互動的問題,因此我們來談談Windows Presentation Foundation (WPF)中的執行緒(Thread),WPF中有個執行緒模型(Threading Model)的觀念,可能和以前的Windows開發不太一樣!

可以參考MSDN:
或是MSDN Magazine這篇文章:
這裡要闡述一個觀念,基本上來說,Windows應用程式只會有一個執行緒在執行程式碼,換句話說,如果你讓執行緒Sleep的話,或者正在等候某項工作,則整個Window不會回應你任何事情,這是很糟糕的事情!

在WPF中,事情似乎比較不一樣!在MSDN中解釋:「一般而言,WPF 應用程式開始時會使用兩個執行緒:一個是用於處理轉譯,而另一個則是用於管理 UI。轉譯執行緒可有效地以隱藏方式在背景執行,而 UI 執行緒則會接收輸入、處理事件、繪製螢幕以及執行應用程式程式碼。」這點就和一般的Windows視窗應用程式不相同,一般的Windows視窗應用程式(比方說Windows Form)程式執行後就只有一個執行緒,沒有WPF所謂的轉譯執行緒。WPF的轉譯執行緒使用來更新UI的呈現,一般而言我們都不會去使用。

雖說這小小的不太一樣:WPF使用兩個執行緒執行Windows視窗應用程式。可是在實際應用上,你還是必須自己處理執行緒的問題,因為WPF程式中程式設計師還是只有一個執行緒可以控制使用,為了提供較好的使用者體驗,MSDN建議使用Dispatcher的功能,目前還在研究當中,待續...

2010年3月25日 星期四

Windows Presentation Foundation

Windows Presentation Foundation 簡稱 WPF (開發代號是 Avalon ),WPF 是 .NET Framework 之後用來建置 User Interface (UI) 的基礎,目的是建置 Windows 的視窗化介面軟體。

從歷史上來看 Windows 應用程式建置的技術,可以分下列四個階段:
  • 1985年:使用 Windows API 開發
  • 1992年:使用 Microsoft Foundation Classes (MFC) 開發
  • 2001年:使用 Windows Form 開發
  • 2006年:使用 Windows Presentation Foundation (WPF) 開發
使用 WPF 開發 Windows 比較像是網頁 (Web Page) 的感覺,WPF 包含 XAML (全名是 Extensible Application Markup Language,唸做 Zammel 發音) 的標記式語言,XAML 類似 HTML 的想法,可以使用 XAML 建置一個 Windows 的視窗化介面程式,當然 XAML 主要是呈現的設計,程式處理邏輯的部分還是要用 C# 或是 VB.NET 撰寫。

XAML 和 HTML 一樣是一種宣告式語言 (declarative language),用來描述做什麼 (What to do),但沒辦法說明該如何執行功能,要描述如何做 (How to do) 的話,則要使用命令式語言 (imperative language) 如 C# 或是 VB.NET 的程式語言。必須注意的是 XAML 和XML 一樣是區分大小寫的 (case-sensitive),還有 WPF 不一定必須使用 XAML,你也可以直接使用 WPF 的類別產生 Windows 視窗應用程式。

利用 WPF 開發的專案必須有 Application 和 Window 的主從觀念,這不像是 Main 函式的觀念,WPF 應用程式是一個 Application 物件 (應用程式的進入點),Application 物件可以產生多個 Window 物件(這是我們設計的UI視窗),剩下的事情 WPF 會幫你處理好。

建立 WPF 應用程式的名稱空間主要是以 System.Windows 開始的名稱:
使用WPF開發實在有吸引人的地方,建議大家開始使用吧!

2010年3月19日 星期五

Windows Workflow Foundation工作流程基礎

最近我開始研究Windows Workflow Foundation,簡稱WF,這個基礎(Foundation)主要是用來處理工作流程(Workflow),注意到WF是在.NET Framework 3.0之後才有的功能。

什麼是工作流程(Workflow)呢?工作流程(Workflow)是指一個項目(Item)從一個人移動到另一個人的過程(process)。在商業世界當中,這樣的過程則是業務流程(Business Process),業務流程會定義完成一件工作(Work)所需要的多個階段(Step),換句話說,一個階段完成,接續下一個階段,直到所有的階段都完成,一件工作將結束。

WF的工作流程可以分成兩類:State-Based Workflow與Sequential Workflow。State-Based Workflow(State Machine Workflow)的工作流程必須是每個階段的條件(稱為External Entity)都滿足才會繼續下一個階段。而Sequential Workflow則是一連串階段的工作,通常沒有分支(branching)和迴圈(looping),注意是可以有分支與迴圈喔!Sequential Workflow開始之後,每個階段依序執行到工作結束為止,除非發生例外錯誤才會終止,不會像State Machine Workflow會中途停止等待。

我們使用Windows Workflow Foundation最大的理由是模型(Model),多數的商業流程都會使用案例圖(case diagram)、UML diagram或是最簡單的流程圖(flow chart)等,用來表示商業流程,對於Windows Workflow Foundation而言WF模型就等於同於工作流程。

Windows Workflow Foundation是WinFX編程模型(programming model)中的一部分,WinFX是在Windows Vista作業系統後才使用的模型(即.NET Framework 3.0),這個模型當中包含工作流程引擎(workflow engine)、API與程式庫(library),我們可以使用System.Workflow...的三個名稱空間呼叫使用WF的API。
WF的運作由三個元件構成。第一個是活動(activity),Workflow是由一系列的活動組合而成,而活動是最小的單位,工作流程中可以包含一個或是多個活動,WF中已經包含現成可用(out-of-the-box)的活動,我們可以直接利用以便加速開發。

第二個元件是工作流程引擎(workflow engine),引擎執行Workflow的動作,提供排程(Scheduling)服務、狀態管理服務、規則(Rule)服務。

最後一個元件是主機處理序(Host Porcess),WF本身不提供直接執行,必須由其他應用程式的處理序呼叫,像是Windows應用程式或是ASP.NET程式呼叫。因此,通常將WF設計成程式庫(Library)的方式!

Windows Workflow Foundation內建的活動有下列幾個:
  1. Code Activity
  2. Compensate Activity
  3. Conditional Activity Group
  4. Delay Activity
  5. EventDriven Activity
  6. Fault Handler Activity
  7. IfElse Activity
  8. Invoke Web Service Activity
  9. Listen Activity
  10. Parallel Activity
  11. Policy Activity
  12. Replicator Activity
  13. Sequence Activity
  14. SetState Activity
  15. State Activity
  16. StateInitialization Activity
  17. Suspend Activity
  18. Terminate Activity
  19. Throw Activity
  20. Transaction Scope Activity
  21. While Activity
這些現成可用(out-of-the-box)的活動應該已經滿足大多數的需求!詳細請參考MSDN:http://msdn.microsoft.com/zh-tw/library/bb628449%28v=VS.90%29.aspx

2010年2月21日 星期日

Geoff Colvin: Talent is Overrated 我比別人更認真

t5318019®推薦一書,也是誠品2009年12月的誠品選書(Eslite Recommends),書名是:
Talent is Overrated:
What Really Separates World-Class Performers From Everybody Else.
我比別人更認真:
刻意練習讓自己發光

這本書是偶然在書店看到的,書名當然是吸引人的地方(問題是英文書名跟中文有點不相關),但內容才是重點,內容有些許類似麥爾坎‧葛拉威爾(Malcolm Gladwell)的「異數:超凡與平凡的界線在哪裡?」一書,葛拉威爾的論述著重於超凡成功的原因,超凡成功不是你我想像中那樣簡單容易的事情?超凡成功如同「一命二運三風水,四積陰德五讀書」這句話已經決定了!這讓人有些許消極與失望。

柯文(Geoff Colvin)著,周宜芳譯,我比別人更認真:刻意練習讓自己發光,台北市:天下遠見,2009。

然而,柯文(Geoff Colvin)這本書裡面闡述了一個精神:「Talent is Overrated.」,成功卓越這件事情其實也不是自己無法邁進前往的目標。我目前僅讀了3章,卻迫不及待想和大家分享書中的心得感想:
  • 第1章敘述成功卓越的原因,不外乎兩個原因:努力天賦,但作者柯文提出解釋,努力不一定會成功卓越,而天賦也跟成功卓越沒有絕對關係。
  • 第2章則再度舉例天賦觀點的問題,很多看似具有天賦的成功卓越者,其實都是跟家庭的栽培很有關係,如莫扎特和老虎伍茲(他們的父親傾心教導的原因),此章節質疑天賦觀點。
  • 第3章排除努力與天賦觀點的成功卓越之路,我們一般認為成功卓越者一定都是較聰明的人,事實上不盡然如此,聰明常與記憶力智商兩個觀念有關,但研究指出,記憶力是可以訓練的,而智商和處理事情的複雜度有關,而與成功卓越無關,只是通常社會地位高的工作,其複雜度較高,智商較高者比較適合從事該項工作,因此我們以為成功卓越者(社會地位高)的人是較聰明的!
全書總共11章,後續會陸續分享書中的觀點給大家,也推薦各位可以買(借)來閱讀看看,非常值得一讀的書籍。有段話t5318019®個人覺得值得品味思考,是王品集團董事長 戴勝益寫的推薦序:
人若有才無德,則才能不是發揮一半,而是毫無作用。
有企圖心而無持續力,則企圖心只會成為幻影,完全沒有任何作用。
有執行力而無恆心者,則只會空留遺憾。

「我比別人更認真:刻意練習讓自己發光」內容大綱:
取自http://www.bookzone.com.tw/Publish/book.asp?bookno=BPB001

小時候你也許從大人那裡聽過,如果要出人頭地,成為各行各業的頂尖人物,像是邱吉爾、莫扎特、巴菲特,甚至是老虎伍茲這樣的人,你從小就必須埋頭苦幹。

不過事實還不僅如此,所有我們看得到的天才人物其實必定經過「刻意練習」(deliberate practice)的洗禮,對練習結果進行分析,從失敗中吸取教訓,以科學的方法進行苦練,才有可能斬露頭角,讓所有人刮目相看。

《Fortune》雜誌曾刊登過一篇非常受讀者歡迎的封面報導,名為《如何成就偉大》。於是雜誌的資深主筆柯文在讀者的期盼下,將這篇經典的封面文章寫成了這本書,為讀者揭開成功的奧秘。

成功不是僅僅取決於你的IQ或者EQ,成功的祕密也不在於「老天賞飯吃」,更不是自己埋頭「瞎練」就能達到目的。本書以科學的研究成果輔以實際的案例,鋪陳出「刻意練習」的機制:用持續乃至終身的時間,有目的地努力提高具體某個領域的表現水平,不論在商界、體育、音樂、醫學、象棋、科學和數學,包括談判、理財等每個領域都能依照這個成功法則來習得。

2010年2月17日 星期三

Albert Camus: L’Étranger 卡謬 異鄉人

此篇介紹一本小說,作者是卡謬(Albert Camus),生於北非阿爾及利亞(曾經是法國殖民地),這本書是麥田出版,原著是1942年法文撰寫而成,麥田出版的異鄉人(L’Étranger)翻譯的很好,值得推薦,加上書籍前面有麥田編輯部整理的卡謬介紹,可見出版社的用心。

卡謬(Albert Camus)著,張一喬譯,異鄉人,台北市:麥田出版,2009。

L’Étranger

下文取自麥田出版http://www.cite.com.tw/product_info.php?products_id=15902

我知道這世界我無處容身,
只是,你憑什麼審判我的靈魂?

他們說,媽媽死了,我沒哭;這是無情,該死。
隔天就和女友廝混;這是不孝,該死。
挑撥朋友仇家互鬥;這是不義,該死。
我合該天地不容,人神共憤,但你們企圖用來拯救我的那一套,又算什麼?

我殺了人,只因為夏日陽光刺眼太熱。
世界總是喋喋不休地告訴人們,行為舉止甚至思想應該如何符合社會約定俗成的,種種道德規範下的節度。

但是,莫梭,一個居高臨下的鳥瞰者,冷靜自持,無動於衷,漠視七嘴八舌急於發表意見和批判的群眾。他倦於給出令眾人滿意的標準答案,他對合乎禮俗但不合於自己真實感受的事物,無法找到適當的對應方式和距離,於是,他被大加指責為無情、不孝、不義。

莫梭不知道在與世界衝撞的窘境下,自己存在的價值和意義。他鳥瞰自己,也鳥瞰他人,探索內在情感與外在世界的關係,他還沒找到答案,如何給別人(何況是別人「想要的」)答案?

在這種種荒謬的情境中,莫梭凸顯了「獨立的個人」的困窘。

在他沒找到答案之前,(可能窮極一輩子都在摸索)他注定是:一個心靈上永遠的異鄉人,一個與既定的社會格格不入的局外人。

卡繆形塑的「現代荒謬英雄」莫梭於焉誕生,深深地影響了後世無數孤獨靈魂,得以正視我們混亂、無依的處境。

會看這本書的原因起於:將勳先生的孤獨六講,蔣勳提到異鄉人中的主角「莫梭(Meursault)」,整本小說分成兩大部分,第一部分敘述莫梭(Meursault)這個主角,在第一部分結尾,主角殺害了一個人,第二部分則敘述莫梭(Meursault)審判的經過,整個故事充滿了「荒謬」,真的是「荒謬」極了,書中的一些觀點挺令人省思!我自己讀完異鄉人後,在心中留下些許震盪,書中的故事實在無法用言語形容(至少目前我不知道如何形容),非常值得推薦。

2010年2月15日 星期一

Daniel H. Pink: A Whole New Mind 未來在等待的人才

最近上班的時候,因為自己感受到主管們對於員工的期望,特別在此談談「人才」的課題,一群主管老闆們都希望找有經驗、有能力的人,言下之意就是:現在這些人都是沒能力沒經驗的嗎?我不知道,一針見血。

同樣的,介紹一本書,推薦,作者是丹尼爾‧品克(Daniel H. Pink),中文書名是「未來在等待的人才」,原文其實是「A Whole New Mind: Moving from the Information Age to the Conceptual Age」。

此書的觀點有點類似「全腦開發」,正如同書名「A Whole New Mind」所表示(雖然中文不是這樣翻譯)。在以前的時代,社會的演進造就左腦思維的發展與標準化,隨著富裕的時代、亞洲的崛起、自動化的工業時代來臨,一波一波的人才替換,目前正處於新的轉變,於是作者提出「右腦思維」的全新心智發展,也就是本書的「A Whole New Mind」。

左腦偏向於循序、邏輯、解析的思考模式,專長循序思考、擅長本文主題   、擅長分析事物、解析細節、掌管語言文字的處理。而右腦則偏向於非線性、直覺、宏觀的思維,專長整體思考、觀察情緒和肢體動作、擅長凝聚要旨、掌管背景資訊的處理。兩腦(左腦與右腦)各自有其功能,我們必須平衡發展。

丹尼爾‧品克(Daniel H. Pink)著,查修傑譯,未來在等待的人才,台北市:大塊文化,2006。

先看看這本書的介紹:參考大塊文化網站http://www.locuspublishing.com/Book2.aspx?bokno=1111FM036

這個世界原本屬於一群高喊知識就是力量、重視理性分析的特定族群──會寫程式的電腦工程師,專搞訴狀的律師,和玩弄數字的MBA。如今,世界將屬於具有高感性能力的另一族群──有創造力、具同理心、能觀察趨勢,以及為事物賦予意義的人。我們正從一個講求邏輯與計算機效能的資訊時代,轉化為一個重視創新、同理心,與整合力的感性時代。如果你是對現有工作和生活不滿足的職場人士、或是急於想了解下一波潮流的創業家與企業領導人、乃至於關心自己下一代未來的父母,或是兼具敏銳情感和靈活創意,卻在資訊時代備受忽略與貶抑的族群……本書將提供六種攸關最近的未來有無前途的關鍵能力,它們分別是:
  • 一、不只有功能,還重設計。
  • 二、不只有論點,還說故事。
  • 三、 不只談專業,還須整合。
  • 四、不只講邏輯,還給關懷。
  • 五、不只能正經,還會玩樂。
  • 六、 不只顧賺錢,還重意義。
藝術家、發明家、設計師、說故事高手、看護者、諮商員、及宏觀人士,將成為下一波職場新貴,入主社會高報酬階級,坐享快意人生。

高感性(High Concept)指的是觀察趨勢和機會,以創造優美或感動人心的作品,編織引人入勝的故事,以及結合看似不相干的概念,轉化為新事物的能力。

高體會(High Touch)則是體察他人情感,熟悉人與人微妙互動,懂得為自己與他人尋找喜樂,以及在繁瑣俗務間發掘意義與目的的能力。

看完後,整本書講那麼多,其實就是要我們平衡發展自我的能力,「人」是多個面向組成的完整個體,偏頗哪一面向都不太好,無法成為一個「全人」。我自己目前就是朝向這個目標邁進,準備好自己的能力,等待機會的降臨,期望能改變這個環境。

虎年愉快,大年初二,記於台北。

2010年2月3日 星期三

Ajax: Asynchronous JavaScript XML

談談Ajax這項技術概念,Ajax(第一個字母大寫)名詞代表的是「Asynchronous JavaScript + XML」,由Jesse James Garrett所創造一個新名詞,大概在2005年中對Web Application產生衝擊,大概是2006年時風靡所有的網頁設計與開發人員(2006年幾乎一堆出版社都在發行相關書籍),現在幾乎所有的網站都會使用Ajax以提高瀏覽網頁的品質,這篇文章「adaptive path » Ajax: A New Approach to Web Applications」是最多人看也是最多人引用的一篇。

值得一提的:Ajax不需要Server端的技術支援,也就是一般的Web Server就可以支援Ajax技術,Ajax完全是用Browser的技術,目的是達到非同步的請求,提高使用者友善的瀏覽體驗。這一點是我在當時學習Ajax所疑惑的問題,與大家分享。

談到Browser,也是這篇文章所撰寫的目的:談談Ajax與JavaScript。

這裡使用jQuery 1.4.1說明如何解決跨瀏覽器的相容性問題,下方這段程式碼目的是判斷瀏覽器是否支援XMLHttpRequest物件(Extensible Markup Language / Hypertext Transfer Protocol,簡稱XMLHTTP),如果不支援則使用ActiveXObject物件(這是Microsoft Internet Explorer特有的問題,版本IE5和IE6)。
ajaxSettings: {
 url: location.href,
 global: true,
 type: "GET",
 contentType: "application/x-www-form-urlencoded",
 processData: true,
 async: true,
 /*
 timeout: 0,
 data: null,
 username: null,
 password: null,
 traditional: false,
 */
 // Create the request object; Microsoft failed to properly
 // implement the XMLHttpRequest in IE7 (can't request local files),
 // so we use the ActiveXObject when it is available
 // This function can be overriden by calling jQuery.ajaxSetup
 xhr: window.XMLHttpRequest && (window.location.protocol !== "file:" || !window.ActiveXObject) ?
  function() {
   return new window.XMLHttpRequest();
  } :
  function() {
   try {
    return new window.ActiveXObject("Microsoft.XMLHTTP");
   } catch(e) {}
  },
 accepts: {
  xml: "application/xml, text/xml",
  html: "text/html",
  script: "text/javascript, application/javascript",
  json: "application/json, text/javascript",
  text: "text/plain",
  _default: "*/*"
 }
}

關於Ajax的底層技術也可以參考:
  1. XMLHttpRequest Object:http://msdn.microsoft.com/en-us/library/ms535874(VS.85).aspx
  2. Scripting and Ajax - W3C:http://www.w3.org/standards/webdesign/script
  3. XMLHttpRequest:http://www.w3.org/TR/2009/WD-XMLHttpRequest-20091119/
另外,使用Ajax不外乎就是操作DOM(Document Object Model,文件物件模型)BOM(Browser Object Model,瀏覽器物件模型),兩者關係如下:
  • BOM
    • window物件(全域物件,BOM核心)
      • location物件
      • history物件
      • screen物件
      • navigator物件
      • DOM(document物件)
        • body物件
        • cookie物件
其模型架構如清單所示,window物件之中有五個子物件,比方說要存取document的cookie物件,則用window.document.cookie的語法,而window可以省略,因為window是預設的全域物件,所有JavaScript宣告的物件基本上預設都在這個範疇內。

2010年2月2日 星期二

Windows Programming 視窗程式設計

談談Microsoft Windows視窗程式設計,想要在Windows作業系統上開發視窗程式,主要有幾個方法:
  1. 使用Windows API
  2. 使用MFC(Microsoft Foundation Classes)
  3. 使用Windows Forms
以系統的視野(view)來看:Windows API最底層,MFC中間,Windows Forms最上層,開發與使用程度來說是Windows Forms最簡單方便,最底層的Windows API則是最不容易使用(但還是可以用,基礎是最重要)。

此篇主要討論利用Windows API開發視窗應用程式的觀念,不例外的推薦一書:
Jeffrey Richter, Christophe Nasarre 著,葛子昂、周靖、廖敏 譯,Windows應用程式開發經典,台北:悅知文化,2009。

Windows視窗程式設計可以參考MSDN的資料,這些都是基本觀念,值得一看,所謂「Basic is important」。
  1. What Is a Window?:http://msdn.microsoft.com/en-us/library/ff381403(VS.85).aspx
  2. WinMain: The Application Entry Point:http://msdn.microsoft.com/en-us/library/ff381406(VS.85).aspx
  3. Module 1. Your First Windows Program:http://msdn.microsoft.com/en-us/library/ff381409(VS.85).aspx
其中有個重要的觀念:Window Handles(控制代碼)

Windows are objects — they have both code and data — but they are not C++ classes.

Instead, a program references a window by using a value called a handle(控制代碼). A handle is an opaque type. Essentially, it is just a number that the operating system uses to identify an object. You can picture Windows as having a big table of all the windows that have been created. It uses this table to look up windows by their handles. (Whether that's exactly how it works internally is not important.) The data type for window handles is HWND, which is usually pronounced "aitch-wind." Window handles are returned by the functions that create windows: CreateWindow and CreateWindowEx.

在Windows視窗程式設計當中,Windows提供一系列的核心物件(Kernel Object)讓我們使用,這稱為平台叫用(Platform Invocation, P/Invoke),也就是Windows API,為了使用這些核心物件,呼叫時必須指定核心物件,而這些控制代碼(Handel)就是代表這些核心物件的識別名稱(32位元的Windows是一組32位元的資料,而64位元的Windows是一組64位元的資料),有點類似C/C++的指標。

平台叫用可以參考:
注意到,這裡的Windows物件不是物件導向的物件觀念,Windows物件類似C/C++的結構(Structure),用於表示記憶體中的一塊資料。

另外,Windows視窗程式設計是事件驅動()的方式,觀念和一般傳統的程序程式設計有些差異,都是依賴訊息(Message)溝通,參考:
  1. About Messages and Message Queues:http://msdn.microsoft.com/en-us/library/ms644927(VS.85).aspx
  2. Window Procedures:http://msdn.microsoft.com/en-us/library/ms632593(VS.85).aspx
若是使用.Net Framework開發應用程式的話,而必須使用P/ Invoke平台呼叫,兩者的資料類型不太一樣,請參考Platform Invoke Data Types:http://msdn.microsoft.com/en-us/library/ac7ay120.aspx

Unmanaged type in Wtypes.h Unmanaged C language type Managed class name Description
HANDLE void* System..::.IntPtr 32 bits on 32-bit Windows operating systems, 64 bits on 64-bit Windows operating systems.
BYTE unsigned char System..::.Byte 8 bits
SHORT short System..::.Int16 16 bits
WORD unsigned short System..::.UInt16 16 bits
INT int System..::.Int32 32 bits
UINT unsigned int System..::.UInt32 32 bits
LONG long System..::.Int32 32 bits
BOOL long System.Int32 32 bits
DWORD unsigned long System..::.UInt32 32 bits
ULONG unsigned long System..::.UInt32 32 bits
CHAR char System..::.Char Decorate with ANSI.
LPSTR char* System..::.String or System.Text..::.StringBuilder Decorate with ANSI.
LPCSTR Const char* System..::.String or System.Text..::.StringBuilder Decorate with ANSI.
LPWSTR wchar_t* System..::.String or System.Text..::.StringBuilder Decorate with Unicode.
LPCWSTR Const wchar_t* System..::.String or System.Text..::.StringBuilder Decorate with Unicode.
FLOAT Float System..::.Single 32 bits
DOUBLE Double System..::.Double 64 bits

附註:Windows系統的實用工具,請參考Windows Sysinternals http://technet.microsoft.com/en-us/sysinternals/default.aspx

熱門文章