日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MFC和GTK的区别

發布時間:2023/12/1 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MFC和GTK的区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

關鍵技術

http://blog.csdn.net/master_max/article/details/1540204

?

?


MFC和GTK的區別??

1.  兩者都是基于面向對象設計的。盡管MFC是用C++寫的,而GTK+是用C寫的,但思想都是面向對象的。GTK+使用glib的對象機制,由于用C寫的,其實現相對有點繁瑣。
  2.  兩者都是基于消息驅動的。這是GUI系統的共性,消息可以是硬件上報的,如鼠標事件、鍵盤事件和觸摸屏等等,也可以是程序產生,如一個窗口給另外一個窗口 發送了一個消息。但兩者并不完全相同,GTK+通過select掛在多個文件描述符上,可以同時等待多個事件源,比如socket、子進程退出和內核事件 等等,而MFC只能通過GetMessage掛到消息隊列上。
  3.  兩者都不是線程安全的,即只有一個線程可以操作GUI資源。主要是出于性能的考慮,這個問題不大,因大多數應用程序都是單線程的。而且它們都提供一些機 制,讓其它線程可以在必要時操作GUI資源。在GTK+中可以通過idle函數來實現,在MFC中可以通過PostMessage來實現(附帶說明一下: Win32原生的GUI API是線程安全的)。
  4.  GTK+整合了一系列的基礎函數庫,功能強大,而MFC孤軍做戰,勢單力薄。Glib是GTK+的基本庫,里面實現了常見的容器和算法,可謂應有盡有,同 時隔離了平臺相關的功能。Pango是GTK+用于文字渲染的函數庫,它負責控制不同文字的layout布局,而把字模的繪制交給freetype等字體 函數庫處理。MFC雖然實現了一些容器,但數量不多也不好用,除了對原生GUI API的包裝外,沒提供多少其它功能,與Microsoft Foundation Class Library這個名稱一點都不相稱。
  5.  GTK+是跨平臺的,而MFC則不是。GTK+在設計時就考慮了可移植性,它按分層模型來組織整個系統,Glib封裝了依賴于OS平臺的函數,提供一套抽 象的接口,在不同的平臺有不同的實現。GDK封裝了依賴于輸入/輸出設備的功能,如鍵盤事件的獲取和顯示緩沖的輸出,同時實現了基本的繪圖功能。GTK+ 幾乎可以在所有PC平臺下運行,而MFC從來都沒有考慮過可移植性,它是與Win32 GUI綁定在一起的。
  6.  GTK+小巧,而MFC笨重。GTK+編譯出來的可執行文件約3M左右,而MFC本身雖然不大,但它各種版本加在一起就可觀了。MFC有ansi版本、有 unicode版、有debug版、有release版、還有一些組合,如果你因此而暈倒了,那是很正常的。
  7.  GTK+的使用簡單,MFC的使用繁瑣。GTK+的使用比較簡單,即使在沒有工具的幫助下,要寫一個GTK+的應用程序也不難,實際上絕大多數GTK+應用程序都是一行代碼一行代碼的敲出來的。而MFC的使用則太麻煩了,很難想象沒有VC的向導的幫助,寫一個基于MFC的應用程序。即有了VC的向導,仍有大量的程序員說MFC很難用。
  8.  GTK+使用signal機制,解開消息源與消息目標之間耦合。而MFC使用消息,將消息源與消息目標硬編碼在一起。Signal的好處是,不需要知道目 標是誰,誰關心誰就注冊,這種出版訂閱機制是解耦的最佳方式。而MFC的消息則是必須知道目標是誰,把消息源與消息目標死死的綁在一起。MFC提供了一套 文檔/視圖框架,實現了類似出版訂閱的功能,這本是設計者引以自豪的東西,結果因為太復雜不能被人理解,反而為開發人員所詬病。
  9.  GTK+采用layout機制動態計算各子窗口的坐標位置,自適應屏幕大小的變化。而MFC要求子窗口的坐標位置硬編碼,結果要適應不同分辨率的屏幕非常 困難。GTK+在窗口布局時分為兩個階段,第一個階段父窗口先詢問子窗口的最佳大小,第二個階段父窗口根據自己的大小計算子窗口的實際大小,子窗口根據實 際大小進行調整。
  10. GTK+采用容器機制來合理分離控件的職責,MFC沒有容器這個概念,很難實現遞歸組合。GTK+中差不多所有控件都是容器,都可以容納其它任何控件,而 MFC只有頂層窗口才是容器,可以容納其它子控件。容器這個概念對代碼重用的影響非常之大,這里舉兩個例子:其一是帶圖片的按鈕 (BitmapButton),在GTK+中它就是GtkImage和GtkLabel的組合,而在MFC中,圖片和文字都要自己繪制。前者的 GtkImage和GtkLabel可以在很多地方重用,而后都的繪制代碼和事件處理代碼只有自己才能使用。其二是列表框,在GTK+中,它只是一個容 器,你可以向里面放編輯器、下拉框和其它任何者你想得到的控件。而在MFC中,即使只是實現一個不同外觀的列表框,你都要采用自繪的方式,代碼重用非常困 難,向列表框中加入其它控件就更麻煩了,要使用一些非同尋常的手段不可。
  11. GTK+采用容器機制優先使用組合而不是繼承,符合現代設計的原則。MFC強制使用繼承,使用麻煩而且耦合緊密。GTK+應用程序不需要繼承任何窗口。 MFC應用程序必須繼承對話框或者其它頂層窗口才行,雖然可以采用中介者模式,把控件之間的交互集中在頂層窗口中,不需要繼承控件,但仍然很麻煩。

轉載于:https://www.cnblogs.com/fickleness/p/3148843.html

總結

以上是生活随笔為你收集整理的MFC和GTK的区别的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲精品久久久乳夜夜欧美 | 免费网站在线观看黄色 | 青青青青青操 | 综合色婷婷 | 成人青青草 | 精品国产欧美日韩 | 窝窝午夜精品一区二区 | 操日本老太太 | 亚洲一区二区人妻 | 高清免费视频日本 | 奇米影视第4色 | jzz在线观看| 亚洲成年人在线观看 | 后入内射欧美99二区视频 | 色女生影院| 日日夜夜撸啊撸 | 免费一级欧美 | 欧美日韩在线视频免费观看 | 无遮挡裸光屁屁打屁股男男 | 欧美天天射 | 人人妻人人澡人人爽精品日本 | 日韩免费观看一区二区三区 | 999午夜 | 狠狠ri| 黄色一级黄色片 | 久久精品国产av一区二区三区 | 制服.丝袜.亚洲.中文.综合懂色 | 欧美福利视频一区二区 | 国产福利一区在线 | 天天看黄色片 | 亚洲色偷偷综合亚洲av伊人 | 欧美成人a∨高清免费观看 国产精品999视频 | 亚洲91色 | 国产区在线观看视频 | 成人在线免费电影 | 国产真人无遮挡作爱免费视频 | 成人视频在线观看 | 日本一区二区在线播放 | 国产精品一区二区av白丝下载 | 黄色片美女| 欧美一区日韩一区 | 婷婷丁香社区 | 国产特黄一级片 | r级无码视频在线观看 | 亚洲综合在线中文字幕 | 一区二区三区四区国产精品 | 国产我不卡 | 国产91亚洲 | 国产精品第6页 | 日本黄页网址 | 久久人人爽人人 | 性xxxx另类xxⅹ| 青青草伊人| 在线观看入口 | 色播亚洲| 日本一区免费视频 | 成人在线免费播放视频 | 国产综合亚洲精品一区二 | 9久久9毛片又大又硬又粗 | 欧美人人爽 | 久草视频在线免费看 | 欧美一区二区免费 | 日韩欧美猛交xxxxx无码 | 香蕉国产在线观看 | 国产成人精品一区二三区四区五区 | 天堂a√在线 | 中文一区在线观看 | 色就色欧美 | 亚洲黄站 | 精品一区二区三区免费观看 | 熟女高潮一区二区三区 | 亚洲av无码国产精品久久不卡 | 激情五月综合色婷婷一区二区 | 青青草这里只有精品 | 国产不卡一 | 国产精品夜夜夜爽阿娇 | av免费播放网站 | 国产视频一二区 | 被两个男人吃奶三p爽文 | 久久国产一二三 | 成人av视屏| 黄色免费视频网站 | 亚洲欧洲日韩综合 | 色丁香av | 久久久精品人妻一区二区三区色秀 | 精品久久久久久久久久久久久久久久久久 | 一区二区福利 | 国产粉嫩av| 亚洲精品五月天 | 蜜桃视频在线观看一区 | 国产一区不卡在线 | 欧美一级在线播放 | 99热一区二区三区 | 色网网站 | 日本久久影视 | 中文字幕色 | 国产男男一区二区三区 | 国产成人无码一区二区三区在线 | 亚洲天堂色图 |