Microsoft Foundation Class
Microsoft Foundation Class(MFC) は,マイクロソフトがVisual C++Dụng に khai phát した,WindowsDụng のアプリケーションソフトウェアCấu trúc のためのアプリケーションフレームワーク(クラスライブラリ) である.Active Template Library(ATL) と đồng dạng に,Visual Studioに đồng khổn されるライブラリとなっている.
ATL/MFCはもともと hữu thường エディションのVisual C++単 thể chế phẩm や, hữu thường エディションのVisual Studio chế phẩm のみに đồng khổn されていたが, Visual Studio Communityエディションでは ( ライセンス điều kiện が nghiêm しくなっているものの ) vô thường でATL/MFCを lợi dụng できる.
Khái yếu
[Biên tập]MFCでは, Windowsアプリケーションにおけるメッセージハンドラやウィンドウフレームワークなどの cơ sở đích な bộ phân をあらかじめパッケージ hóa したほか,GDIオブジェクト, デバイス コンテキスト,スレッド,ソケット,FTP/HTTPなどのインターネットサービス, khả 変 trường のVăn tự liệt,Phối liệtやリストといったコンテナなど, nhất bàn にアプリケーションでよく sử われるようなクラスを bị えている.
SDKを sử ってWindows APIを trực tiếp hô び xuất すのに bỉ べ, Visual C++の thống hợp hoàn cảnh との thân hòa tính が cao く khai phát が dung dịch になるという lợi điểm があるが, nhất phương でMFCに quá độ に y tồn したプログラムを thư くと tha のオペレーティングシステム(OS) へのDi thựcが nan しくなるといった vấn đề もある.
MFCに tự たライブラリとしては,Windows Template Library(WTL) がある.
Lịch sử
[Biên tập]MFCは1992 niên,16ビットバージョンのWindowsをターゲットとし, マイクロソフトのC/C++コンパイラ7.0とともに phát mại された. これは khai phát ツールの phân dã におけるシェアを cao めようとしていたマイクロソフトの nỗ lực の nhất hoàn であり, MFCはプログラミング ngôn ngữ C++の năng lực を tri らしめるよう thiết kế されていた. Đương thời, C++は thương dụng アプリケーションの khai phát においてCからの di hành が thủy まったばかりであり, C/C++ 7.0はマイクロソフトのコンパイラとして sơ めてC++をサポートした. MFCはMacintoshのThink Class Library( TCL, hậu にシマンテックによって mãi thâu された ) に đại きく ảnh hưởng を thụ け, その cấu tạo の đa くをTCLから thụ け継いでいた.
Đồng thời kỳ, Borland Cコンパイラに đối ứng したObject Windows Library(OWL) が, cạnh hợp chế phẩm としてボーランドから phiến mại されていた. OWLの thiết kế はより nghiêm mật にオブジェクト chỉ hướngに chuẩn じていたので, nhất thời kỳ の gian MFCよりも hảo bình であった. しかし, Windowsへの cơ năng truy gia とOWLのアップデートに thời gian soa が sinh じてしまったので, OWLはシェアを thất った.
Visual C++ 4.2においてWinInetおよびActiveXなどのインターネット quan liên のクラスが truy gia された hậu は, MFC tự thể に đặc に đại きな変 hóa がなく, Visual C++ 7.0 (Visual C++.NET 2002) においてMFCとATLの nhất bộ が thống hợp された trình độ にとどまっていたが, Visual C++ 2008 (Visual Studio 2008) へのサービスパック1 thích dụng thời にインストールされる “MFC Feature Pack” において, MFCは đại phúc な tiến hóa を toại げている. Cụ thể đích には,Office2007 phong のリボン インターフェイスを cấu trúc するための "CMFCRibbon〜" で thủy まる danh tiền を trì つクラスや, Visual Studio 2005 phong のスマート ドッキング ウィンドウを thật hiện するCDockablePaneクラスなど, 100 dĩ thượng のクラスが truy gia されている. これらのクラスを lợi dụng する tràng hợp, khai phát giả は cơ bổn đích に, Feature Packインストール hậu にMFCアプリケーション ウィザードに truy gia されるリボンUIあるいはVisual Studio UIのテンプレートを tuyển 択して, tự động sinh thành されるフレームワークをベースにしてコーディングしていくことになる. ただし.NET Frameworkによる khai phát とは dị なり,RADではなくコードベースでGUIを cấu trúc する tất yếu があるため, これらのクラスを sử いこなすにはMFCプログラミングに tinh thông していることが tiền đề となる. なお, Windows 7 SDK (Windows SDK for Windows 7 and.NET Framework 3.5 SP1) にもリボン インターフェイスを thật trang するための “リボン フレームワーク” と hô ばれるAPI quần が truy gia されているが, thật chất đích にCOMコンポーネントを lợi dụng したAPIプログラミングであり, さらにリボン フレームワークのコンポーネントが đạo nhập されているのはWindows 7およびWindows VistaSP2 Platform Update dĩ hàng のOSであるため, ネイティブ (アンマネージ) のリボンUIアプリケーションの khai phát に quan しては, MFCの tuyển 択は hữu lực hầu bổ となり đắc る.
Visual C++ 2010 (Visual Studio 2010) においては, リボンUIを thị 覚 đích に biên tập する cơ năng ( リボン デザイナー )[1]がリソース エディタに truy gia されたほか,Windows VistaDĩ hàng のOSに thật trang されている “タスク ダイアログ” や “Tái khởi động マネージャー” などを lợi dụng するための cơ năng も truy gia されている[2].CaoDPIHoàn cảnh にも tiêu chuẩn đối ứng するようになった ( System DPI Aware )[3].また, Visual C++ 2010へのサービスパック1 thích dụng hậu[4]は,Direct2D[5]ラッパー[6]およびWindows Animation Manager[7]ラッパー[8]の cơ năng ( クラス ライブラリ ) が truy gia される.
Visual C++ 2015では động đích レイアウトにも đối ứng する[9]など,.NET Frameworkとはまた vi った phương hướng の cơ năng 拡 trương が続けられている.
Sĩ dạng
[Biên tập]MFCが phát mại された thời, マイクロソフトはマクロの hoạt dụng によってC++の văn pháp を拡 trương し, ウインドウメッセージ,Lệ ngoại 処 lý,Thật hành thời hình tình báo,クラスの động đích インスタンス hóa などを quản lý していた ( lệ ngoại 処 lý, thật hành thời hình tình báo などは đương thời のC++の ngôn ngữ sĩ dạng にも thật trang ( コンパイラ ) にも tồn tại しなかった ). ウインドウメッセージのために cấu văn に変 hóa を gia えたことは, bất yếu な仮 tưởng quan sổ テーブルの sử dụng を tị けることでメモリの tiêu phí lượng を ức える thư いがあった. さらに, cấu tạo がより cụ thể đích になり, Visual C++に phó chúc する đa dạng なツールがソースコード toàn thể を giải tích することなく処 lý できるという hiệu quả もあった. メッセージ処 lý のマクロは, C++の仮 tưởng quan sổ の đại わりとなった. ただ, nhất bộ のマクロはコンパイラによる hình チェックを vô hiệu hóa することがあるので, しばしばバグの nguyên nhân となった.
MFCを sử dụng することの chủ な lợi điểm は, Windows APIを lợi dụng したプログラム khai phát にオブジェクト chỉ hướng プログラミングモデルを đạo nhập するという điểm である. もう nhất つは, Windowsのリソースに quan liên した nhất bàn đích なデータ hình に đối するラッパーを đề cung するという điểm である. これらのラッパーを sử dụng することで, リソース quản lý オブジェクトのスコープを xuất た thời に tự động đích にリソースのハンドルを giải phóng させることなどができる (RAII). さらに, MFCはModel View Controllerモデルに cơ づいたアプリケーションを khai phát するためのドキュメント/ビューフレームワークを đề cung する.
マイクロソフトはC++ tiêu chuẩn hóa にあたって, đa trọng 継 thừa について phủ định đích な lập tràng をとっていた. MFCもその lý niệm に従い sơ kỳ のMFCは đa trọng 継 thừa を toàn く sử dụng しておらず, オブジェクトとしての cơ năng は cơ để クラスに, そして cụ thể đích な cơ năng の thật trang は単 thuần 継 thừa によって thật trang されている. これはオブジェクトが bất yếu なメンバによって phì đại hóa する sự が vô く, また bất tất yếu に tu sức されていないので cá 々のクラスを lý giải する sự が dung dịch になっている. しかし, nhất bộ のクラスは đa trọng 継 thừa ( より cận đại đích な thật trang ならばテンプレート ) によって thật trang されるべき vật も単 thuần 継 thừa によって thật trang されており, これらはThống hợp khai phát hoàn cảnhの chi viện なくしては tráp えない nan giải な vật になっている ( hậu thuật のCViewやCDocumentもこれに hàm まれる ).
MFCの chủ な khiếm điểm は, đa くのOSで lợi dụng できないという điểm である.MainsoftはUNIXで lợi dụng khả năng なMFCツールを khai phát した[1].マイクロソフトは1990 niên đại にMacintoshに đối ứng したMFCを phiến mại していたが, それ dĩ hàng はMacintoshに đối するVisual Studioのサポートは trung chỉ された.
また, Visual C++のC/C++ライブラリと đồng dạng に, ライブラリのバージョンごとにメモリ quản lý が dị なるため, hỗ いに dị なるバージョンのMFCを sử dụng したEXE-DLLプログラム gian でDLLCảnh giới を việt えてMFCオブジェクト・CRTオブジェクトをやりとりできないなど, バージョン gian でのバイナリレベルの hỗ hoán tính が đê くなっている[10].そのため, cựu バージョンのMFCを sử って khai phát されたDLL ( MFC拡 trương DLL ) やスタティックライブラリを, tân バージョンのMFCアプリケーションでそのまま lợi dụng することは cơ bổn đích に bất khả năng ( その nghịch もまた nhiên り ) となっており, ソースコードからの tái ビルドが tất yếu となる. なお, phi MFCアプリケーションや, dị なるバージョンのMFCアプリケーションから, MFCを sử って thật trang したコードを thật hành する tràng hợp, MFC tiêu chuẩn DLLもしくはATL COMサーバーのプロジェクト hình thức を tuyển 択し, C ngôn ngữ quan sổ hình thức のインターフェイスやCOMインターフェイスを tác thành してアプリケーション trắc に công khai する tất yếu がある.
MFCはあくまでWindows APIのラッパークラス quần およびそれらを lợi dụng したフレームワークという vị trí phó けのため, sinh sản tính の điểm ではVisual BasicやVisual C#,DelphiなどのRADツールに viễn く cập ばない. また, C++ ngôn ngữ の tập đắc は bỉ giác đích nan しい bộ loại に nhập るため, エンドユーザープログラミング (エンドユーザーコンピューティング) の quan điểm からも kính viễn されがちである. しかし, そういったいくつかの vấn đề điểm を bão えているにもかかわらず, MFCが vị だ đa くの xí nghiệp や cá nhân プログラマーに lợi dụng されているのは, thật hành tốc độ や động tác プラットフォーム, khai phát hoàn cảnh および khai phát ngôn ngữ の変 canh コストの vấn đề などで cựu lai のネイティブコード tư sản を hoàn toàn に.NETに di hành することが nan しく, またWindowsアプリケーションにおいて ngưng った cơ năng を thật trang しようとすると, Windows APIおよびCOMコンポーネントを trực tiếp thao tác するほうが khước って lặc であることが đa く, これらと thân hòa tính の cao いMFCを tuyển 択せざるを đắc ないためである.
なお, Visual C++.NETに đáp tái されているマネージ拡 trương C++,あるいはVisual C++ 2005 dĩ hàng に đáp tái されているC++/CLINgôn ngữ を lợi dụng することで, 従 lai のMFCアプリケーションから.NET Frameworkのライブラリをシームレスに lợi dụng する, もしくはMFC tiêu chuẩn DLLに thật trang されたMFCネイティブコードをマネージコードでラップすることで, C#あるいはVB.NETのような.NET ngôn ngữ hướng けにクラスライブラリの hình で công khai する, といったハイブリッド khai phát ・ tương hỗ vận dụng が khả năng となり, ネイティブコードとマネージコードの tư sản をともに hoạt かすことができるようになる. しかし, マネージ拡 trương C++やC++/CLI ngôn ngữ を dụng いた khai phát はネイティブコードおよびマネージコード song phương にまたがる tri thức が tất yếu となるため, MFCのみを lợi dụng した tràng hợp, もしくは.NETのみを lợi dụng した tràng hợp と bỉ べて nan dịch độ が cao くなる.
MFCの khiếm điểm に đối する phê phán
[Biên tập]- CDocument, CView đẳng の cơ bổn đích なクラスの sĩ dạng が nan giải である. Windowsメッセージ, コマンド, およびシェルといったWin32 APIの cơ bổn を lý giải していることが tiền đề となる.
- クラスは cơ bổn đích に単 nhất 継 thừa のみであるため, giai tằng が thâm くなりがちである. また, friendクラスが đa dụng されていることもあって trực giao tính が đê い.
- ATLと cộng hữu する nhất bộ を trừ き, すべての quan sổ[11],Cấu tạo thể, クラス[12]およびLiệt cử hìnhなどがグローバルDanh tiền không gianに tồn tại し, さらにマクロが đa dụng されているため, danh tiền のコンフリクト ( thức biệt tử の trùng đột, cạnh hợp ) が phát sinh しやすく, また継 thừa の giai tằng cấu tạo がわかりにくい. なお, MFCシリアライズ cơ năng を sử dụng するクラスは, グローバル danh tiền không gian で định nghĩa しなくてはならない.
- Thật hành thời hình tình báoやLệ ngoại 処 lýCơ cấu などの nhất bộ の sĩ dạng は, độc tự のマクロを sử dụng した thật trang となっているため, tiêu chuẩn C++との thống nhất cảm がない ( tiêu chuẩn C++の thật hành thời hình tình báo および lệ ngoại 処 lý cơ cấu との tịnh dụng や cộng tồn は khả năng ).
- 変 sổDanh に ( 16ビット thời đại からの ) cổ いシステムハンガリアン ký pháp[13][14]を thải dụng しているため, tối tân のコーディングスタイルに hợp わない.
- Win32 API tự thể が拡 trương を sào り phản した kết quả, APIとしての thống nhất tính に khiếm けるものとなったため, その bạc いラッパーライブラリでしかないMFCでは ẩn tế しきれない.
- トレース dụng のDEBUG_NEWマクロによるnewキーワードの trí hoán など, tiêu chuẩn quy cách vi phản を phạm している[15].
バージョン
[Biên tập]MFCのバージョンは, バージョン6.0 dĩ hàng はその đối ứng するVisual C++ chế phẩm のバージョン phiên hào と đồng じとなっている. なお, Visual C++コンパイラ tự thể は_MSC_VER
という dư ước マクロによりバージョン phiên hào が định nghĩa されるが, MFCでは_MFC_VER
という dư ước マクロによりバージョン phiên hào が định nghĩa される. これらはそれぞれ dị なる nội bộ sổ trị になっているので, バージョンに ứng じてユーザープログラムコードを phân kỳ したい tràng hợp は chú ý が tất yếu となる.
Visual C++に đồng khổn されるMFCのバージョン nhất lãm を hạ ký に kỳ す.
VC chế phẩm バージョン | MFCバージョン | _MFC_VER | Bị khảo |
---|---|---|---|
Microsoft C/C++ 7.0 | MFC 1.0 | 0x0100 | |
Visual C++ 1.0 | MFC 2.0 | 0x0200 | |
Visual C++ 1.5 | MFC 2.5 | 0x0250 | |
Visual C++ 2.0 | MFC 3.0 | 0x0300 | |
Visual C++ 2.1 | MFC 3.1 | 0x0310 | |
Visual C++ 2.2 | MFC 3.2 | 0x0320 | |
Visual C++ 4.0 | MFC 4.0 | 0x0400 | |
Visual C++ 4.1 | MFC 4.1 | 0x0410 | |
Visual C++ 4.2 | MFC 4.2 | 0x0420 | |
Visual C++ 5.0 | MFC 4.21 (mfc42.dll) | 0x0421 | |
Visual C++ 6.0 | MFC 6.0 (mfc42.dll) | 0x0600 | Windows XP dĩ hàng のOSに tiêu chuẩn インストールされている. |
Visual C++.NET 2002 | MFC 7.0 (mfc70.dll) | 0x0700 | Thông thường アプリケーションの thiêm phó のみ. MS07-012[16]Đẳng セキュリティ vấn đề も kiến つかっているがWindows Update đẳng での canh tân モジュールの đề cung はない[Yếu xuất điển]. |
Visual C++.NET 2003 | MFC 7.1 (mfc71.dll) | 0x0710 | Thông thường アプリケーションの thiêm phó のみ. MS07-012 đẳng セキュリティ vấn đề も kiến つかっているがWindows Update đẳng での canh tân モジュールの đề cung はない[Yếu xuất điển]. |
Visual C++ 2005 | MFC 8.0 (mfc80.dll) | 0x0800 | サービスパックおよびセキュリティパッチの thích dụng により, phục sổ のバージョンがインストールされる. |
Visual C++ 2008 | MFC 9.0 (mfc90.dll) | 0x0900 | サービスパックおよびセキュリティパッチの thích dụng により, phục sổ のバージョンがインストールされる. |
Visual C++ 2010 | MFC 10.0 (mfc100.dll) | 0x0A00 | |
Visual C++ 2012 | MFC 11.0 (mfc110.dll) | 0x0B00 | |
Visual C++ 2013 | MFC 12.0 (mfc120.dll) | 0x0C00 | |
Visual C++ 2015 | MFC 14.0 (mfc140.dll) | 0x0E00 | |
Visual C++ 2017 | MFC 14.0 (mfc140.dll) | 0x0E00 | Visual C++コンパイラの nội bộ バージョン phiên hào は14.1だが, CRTライブラリ đồng dạng にMFCの nội bộ バージョン phiên hào は14.0のまま cư え trí きとなっている. |
Visual C++ 2019 | MFC 14.0 (mfc140.dll) | 0x0E00 | Visual C++コンパイラの nội bộ バージョン phiên hào は14.2だが, CRTライブラリ đồng dạng にMFCの nội bộ バージョン phiên hào は14.0のまま cư え trí きとなっている. |
Visual C++.NET 2003までは, C/C++ (CRT) およびMFCのランタイム ライブラリは khai phát hoàn cảnh のインストールとともにWindowsのシステム フォルダ (%WinDir%\System32あるいは%WinDir%\SysWOW64) にインストールされるようになっていた[17]が, Windows XP dĩ hàng の tràng hợp, Visual C++ 2005および2008はDLL địa ngụcを giải tiêu する mục đích で, %WinDir%\WinSxS dĩ hạ の, amd64_microsoft.vc80.mfc_*, ia64_microsoft.vc80.mfc_*, x86_microsoft.vc80.mfc_*などのフォルダにSide-by-Sideアセンブリとしてインストールされるようになっている. これにより, サービスパックを thích dụng したランタイムをインストールしたり, ランタイムにセキュリティパッチを thích dụng したりすると, cựu バージョンのランタイムは thượng thư きされず, tân しいバージョンのランタイムが truy gia インストールされるため, phục sổ の dị なるバージョンが cộng tồn できる. なお, Visual C++.NET 2003までは, MFCを sử dụng するアプリケーションの thật hành プログラムの tồn tại するフォルダにMFCランタイムをコピーして tái phối bố すれば, MFCランタイムがインストールされていないエンドユーザー hoàn cảnh でも thật hành できていたが, Visual C++ 2005および2008ではこのようなSide-by-Sideアセンブリの hình thái をとるようになっているため, 単 thuần にコピーを thiêm phó するだけでは thật hành することができない.Visual C++ 2005および2008を sử dụng して tác thành されたMFCアプリケーションをエンドユーザー hoàn cảnh で thật hành するためには, hạ ký の phương pháp が tồn tại する[18][19].
- エンドユーザー hoàn cảnh にVisual C++のランタイムパッケージを biệt đồ インストールする.
- アプリケーションをビルドする tế, CRT/MFCをスタティックリンク (Tĩnh đích リンク) する.
- アプリケーションマニフェストを sử dụng してCRT/MFCランタイムをプライベートアセンブリHóa する (Windows XPDĩ hàng ).
1 phiên mục の phương pháp は, エンドユーザーの phụ đam が tăng えるものの, セキュリティ diện で tối も an toàn な phương pháp である. インストールされたランタイムDLL quần は, Microsoft Updateなどによって đề cung されるセキュリティパッチの thích dụng đối tượng となる ( ただし tiền thuật の thông り, DLL tự thể はセキュリティパッチによって thư き hoán えられるわけではない ). なお, エンドユーザーランタイムのインストーラはマイクロソフトから vô thường đề cung されており, khai phát giả による tái phối bố も hành なえるようになっている. 2 phiên mục の phương pháp は, エンドユーザーの thủ gian を giảm らせるが, アプリケーションビルド thời のリンク thời gian が tăng gia し, thật hành プログラムのファイルサイズが phì đại hóa するという khiếm điểm がある[20].また, セキュリティパッチ thích dụng の đối tượng ngoại となる ( ちなみに/clrオプションを hữu hiệu にして.NETハイブリッドアプリケーションを tác thành する tràng hợp はそもそもCRT/MFCライブラリをスタティックリンクすることはできない ). 3 phiên mục の phương pháp は, アプリケーションにMFCランタイムを đồng khổn するための phương pháp であり, スタティックリンクする tràng hợp と đồng dạng にエンドユーザーの thủ gian を giảm らせる.
なお, Visual C++ 2010 dĩ hàng では, CRTおよびMFCランタイムのSide-by-Side phối trí phương thức は廃 chỉ され, tái びVisual C++.NET 2003 dĩ tiền と đồng じようにWindowsシステム フォルダにインストールされるようになっている. サービスパックおよびセキュリティパッチが thích dụng されると, システム フォルダ nội のDLLファイル ( mfc100.dllなど ) が thư き hoán えられる.
MBCSとUnicode
[Biên tập]MFCではアプリケーションのコンパイル&ビルド thời に thiết định ・ định nghĩa するMBCS/UNICODEシンボル tình báo に hợp わせて, それぞれMBCS bản MFCライブラリとUnicodeBản MFCライブラリが ám mặc đích にリンクされて sử dụng される. MBCS bản とはANSIマルチバイト văn tự セット (Multibyte Character Set)[21]Bản のことで, lệ えば nhật bổn ngữ bản の tràng hợpShift_JIS( nghiêm mật にはANSIコードページ932 ) に tương đương する. データの cách nạp にはchar hình およびその phối liệt が chủ に sử われる. Unicode bản とはWindows dụng のUnicode đối ứng bản のことで,UTF-16LEに tương đương する. データの cách nạp にはwchar_t hình およびその phối liệt が chủ に sử われる. WindowsではOSの nội bộ văn tự コードがUTF-16LEのため, nhất bàn đích にはアプリケーションの nội bộ văn tự コードとしてUTF-8マルチバイトやUTF-32が sử われることは thiếu ない.
MFCアプリケーション khai phát において, MBCSおよびUnicode lạng phương のバージョンで động tác するコードを ký thuật する tràng hợp, nhất bàn đích にはMBCS, _MBCS, UNICODE, _UNICODEなどのシンボル định nghĩa trạng huống に ứng じてコンパイルするコードを phân kỳ させることで đối 処する. MFC/ATL, tiêu chuẩn C/C++ランタイムライブラリ (CRT) およびWin32 APIにはMBCS/Unicode lạng đối ứng を dung dịch にするためのマクロ[22]や, TCHAR, LPTSTR, LPCTSTR hình およびCStringクラスといったヘルパーが dụng ý されている.
Windows NT hệの tối sơ のOSであるWindows NT 3.1は, đương sơ からUnicodeの sơ kỳ quy cách であるUCS-2に đối ứng していた[23].またUTF-16のサロゲートペアに đối ứng したのはWindows XPからである[24].Windows 9x hệのOSではもともとUnicode phi đối ứng であり, lịch sử đích にWindowsアプリケーション khai phát ngôn ngữ としてのC/C++は trường らくMBCSを sử dụng してきた. しかし, quốc tế hóa đối ứng ( Unicode đối ứng ) が cầu められるという thời đại の lưu れから, まずVisual Studio 2005ではプロジェクトの kí định の thiết định がUnicodeとなり, さらにVisual Studio 2013からは, MBCS bản MFC/ATLライブラリは phi thôi thưởng となりインストーラに đồng khổn されなくなった ( Unicode bản MFC/ATLライブラリのみ đồng khổn ). なお, ライブラリのバイナリがIDEにバンドルされなくなっただけで, Visual Studio 2013 hướng けMBCS bản MFCライブラリのDLLバージョンはマイクロソフト xã の công thức サイトからダウンロードすることで thủ đắc できる. Nhất phương, Visual C++ tái ban bố khả năng パッケージ ( エンドユーザー hướng けリテールランタイム ) には, 2013 dĩ hàng も, dẫn き続きMBCS bản MFCランタイムDLLが hàm まれ, MBCS bản MFCランタイムを cố khách に tái ban bố するための truy gia の thủ thuận は tất yếu ない.
なお,Windows 8/Windows RTで đạo nhập されたWindowsストアアプリ ( のちのWindows 10におけるユニバーサルWindowsプラットフォームアプリ ) は,C#などの.NET ngôn ngữ による khai phát のほか,C++/CXというネイティブ拡 trương ngôn ngữ による khai phát も khả năng となっているが, ATLの nhất bộ は sử dụng できるもののMFCは sử dụng できない. また, Windowsストアアプリではマルチバイト văn tự ・ văn tự liệt のAPIが sử えなくなっており, ASCIIもしくはUnicode văn tự ・ văn tự liệt のみが sử dụng できる[25].
Cước chú
[Biên tập]- ^リボン デザイナー (MFC)
- ^Visual C++ - Visual Studio 2010 の C++ と MFC での tân cơ năng の tường tế
- ^MFC applications now default to being DPI-aware | Visual C++ Team Blog,Internet Archive
- ^MFC Additions for Visual Studio 2010 SP1 | Microsoft Docs
- ^Direct2D (Windows)
- ^チュートリアル: MFC プロジェクトへの D2D オブジェクトの truy gia
- ^Windows Animation Manager (Windows)
- ^チュートリアル: MFC プロジェクトへのアニメーションの truy gia
- ^Động đích レイアウト
- ^DLL の cảnh giới を việt えて CRT オブジェクトを độ す tràng hợp に phát sinh する khả năng tính のあるエラー
- ^グローバル quan sổ は, danh tiền に thông lệAfxプレフィックスが phó けられているが, lệ ngoại もある.MFC Macros and Globals
- ^クラス danh は, danh tiền に thông lệCプレフィックスが phó けられている.
- ^Making Wrong Code Look Wrong - Joel on Software
- ^Gian vi ったコードは gian vi って kiến えるようにする - The Joel on Software Translation Project
- ^Deep C++, dư ước danh - MSDN/Internet Archive
- ^マイクロソフト セキュリティ tình báo MS07-012 - trọng yếu
- ^Redistribution of the shared C runtime component in Visual C++
- ^Visual C++ - phối trí lệ (MSDN)
- ^グローバルに đề cung される side-by-side アセンブリを thích dụng しないアプリケーションは, マイクロソフトのソフトウェア canh tân プログラムで tu chính される vấn đề に đối して thúy nhược になる khả năng tính があるマイクロソフト サポート オンライン
- ^テクニカル ノート 33: MFC の DLL バージョン (MSDN)
- ^Unicode とマルチバイト văn tự セット (MBCS: Multibyte Character Set) のサポート
- ^CreateFileA()/CreateFileW() APIに đối ứng するCreateFileマクロや, MBCS/Unicode văn tự liệt リテラルを thiết り thế えるTEXT(), _T()マクロなど.
- ^The sad history of Unicode printf-style format specifiers in Visual C++ - The Old New Thing
- ^Thật dụng が thủy まったUnicodeの hiện trạng と khóa đề | JAGAT
- ^Windows Store Apps, the Windows Runtime, and the C Run-Time