Microsoft Foundation Class
出典: フリー百科事典『ウィã‚ペディア(Wikipedia)ã€
Microsoft Foundation Class (MFC)ã¯ã€ãƒžã‚¤ã‚¯ãƒã‚½ãƒ•ãƒˆãŒVisual C++用ã«é–‹ç™ºã—ãŸã€Windows用ã®ã‚¢ãƒ—リケーション構築ã®ãŸã‚ã®ã‚¢ãƒ—リケーションフレームワーク(クラスライブラリ)ã§ã‚る。
MFCã§ã¯ã€Windowsアプリケーションã«ãŠã‘るメッセージãƒãƒ³ãƒ‰ãƒ©ã‚„ウィンドウフレームワークãªã©ã®åŸºç¤Žçš„ãªéƒ¨åˆ†ã‚’ã‚らã‹ã˜ã‚パッケージ化ã—ãŸã»ã‹ã€ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦å†…ã®æ画やã€å¯å¤‰é•·ã®æ–‡å—列ã€é…列ã®ç®¡ç†ãªã©ã€ä¸€èˆ¬ã«ã‚¢ãƒ—リケーションã§ã‚ˆã使ã‚れるよã†ãªã‚¯ãƒ©ã‚¹ã‚’å‚™ãˆã¦ã„る。
SDKを使ã£ã¦Windows APIを直接呼ã³å‡ºã™ã®ã«æ¯”ã¹ã€Visual C++ã®çµ±åˆç’°å¢ƒã¨ã®è¦ªå’Œæ€§ãŒé«˜ã開発ãŒå®¹æ˜“ã«ãªã‚‹ã¨ã„ã†åˆ©ç‚¹ãŒã‚ã‚‹ãŒã€ä¸€æ–¹ã§MFCã«éŽåº¦ã«ä¾å˜ã—ãŸãƒ—ãƒã‚°ãƒ©ãƒ を書ãã¨ä»–ã®OSã¸ã®ç§»æ¤ãŒé›£ã—ããªã‚‹ã¨ã„ã£ãŸå•é¡Œã‚‚ã‚る。
目次[éžè¡¨ç¤º] |
[編集] æ´å²
MFCã¯1992å¹´ã€16ビットãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®Windowsをターゲットã¨ã—ã€ãƒžã‚¤ã‚¯ãƒã‚½ãƒ•ãƒˆã®C/C++コンパイラ 7.0ã¨ã¨ã‚‚ã«ç™ºå£²ã•ã‚ŒãŸã€‚ã“ã‚Œã¯é–‹ç™ºãƒ„ールã®åˆ†é‡Žã«ãŠã‘るシェアを高ã‚よã†ã¨ã—ã¦ã„ãŸãƒžã‚¤ã‚¯ãƒã‚½ãƒ•ãƒˆã®åŠªåŠ›ã®ä¸€ç’°ã§ã‚ã‚Šã€MFCã¯ãƒ—ãƒã‚°ãƒ©ãƒŸãƒ³ã‚°è¨€èªžC++ã®èƒ½åŠ›ã‚’知らã—ã‚るよã†è¨è¨ˆã•ã‚Œã¦ã„ãŸã€‚当時ã€C++ã¯å•†ç”¨ã‚¢ãƒ—リケーションã®é–‹ç™ºã«ãŠã„ã¦Cã‹ã‚‰ã®ç§»è¡ŒãŒå§‹ã¾ã£ãŸã°ã‹ã‚Šã§ã‚ã‚Šã€C/C++ 7.0ã¯ãƒžã‚¤ã‚¯ãƒã‚½ãƒ•ãƒˆã®ã‚³ãƒ³ãƒ‘イラã¨ã—ã¦åˆã‚ã¦C++をサãƒãƒ¼ãƒˆã—ãŸã€‚MFCã¯Macintoshã®Think Class Library(TCLã€å¾Œã«Symantecã«ã‚ˆã£ã¦è²·åŽã•ã‚ŒãŸï¼‰ã«å¤§ãã影響をå—ã‘ã€ãã®æ§‹é€ ã®å¤šãã‚’TCLã‹ã‚‰å—ã‘継ã„ã§ã„ãŸã€‚
åŒæ™‚期ã€Borland Cコンパイラã«å¯¾å¿œã—ãŸObject Windows Library (OWL)ãŒã€ç«¶åˆè£½å“ã¨ã—ã¦Borlandã‹ã‚‰è²©å£²ã•ã‚Œã¦ã„ãŸã€‚OWLã®è¨è¨ˆã¯ã‚ˆã‚ŠåŽ³å¯†ã«ã‚ªãƒ–ジェクト指å‘ã«æº–ã˜ã¦ã„ãŸã®ã§ã€ä¸€æ™‚期ã®é–“MFCよりも好評ã§ã‚ã£ãŸã€‚ã—ã‹ã—ã€Windowsã¸ã®æ©Ÿèƒ½è¿½åŠ ã¨OWLã®ã‚¢ãƒƒãƒ—デートã«æ™‚é–“å·®ãŒç”Ÿã˜ã¦ã—ã¾ã£ãŸã®ã§ã€OWLã¯ã‚·ã‚§ã‚¢ã‚’失ã£ãŸã€‚
[編集] 仕様
MFCãŒç™ºå£²ã•ã‚ŒãŸæ™‚ã€ãƒžã‚¤ã‚¯ãƒã‚½ãƒ•ãƒˆã¯ãƒžã‚¯ãƒã®æ´»ç”¨ã«ã‚ˆã£ã¦C++ã®æ–‡æ³•ã‚’æ‹¡å¼µã—ã€ã‚¦ã‚¤ãƒ³ãƒ‰ã‚¦ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã€ä¾‹å¤–処ç†ã€å®Ÿè¡Œæ™‚åž‹æƒ…å ±ã€ã‚¯ãƒ©ã‚¹ã®å‹•çš„インスタンス化ãªã©ã‚’管ç†ã—ã¦ã„ãŸï¼ˆä¾‹å¤–処ç†ã€å®Ÿè¡Œæ™‚åž‹æƒ…å ±ãªã©ã¯å½“時ã®C++ã®è¨€èªžä»•æ§˜ã«ã‚‚実装(コンパイラ)ã«ã‚‚å˜åœ¨ã—ãªã‹ã£ãŸï¼‰ã€‚ウインドウメッセージã®ãŸã‚ã«æ§‹æ–‡ã«å¤‰åŒ–ã‚’åŠ ãˆãŸã“ã¨ã¯ã€ä¸è¦ãªvtableã®ä½¿ç”¨ã‚’é¿ã‘ã‚‹ã“ã¨ã§ãƒ¡ãƒ¢ãƒªã®æ¶ˆè²»é‡ã‚’抑ãˆã‚‹ç‹™ã„ãŒã‚ã£ãŸã€‚ã•ã‚‰ã«ã€æ§‹é€ ãŒã‚ˆã‚Šå…·ä½“çš„ã«ãªã‚Šã€Visual C++ã«ä»˜å±žã™ã‚‹å¤šæ§˜ãªãƒ„ールãŒã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰å…¨ä½“を解æžã™ã‚‹ã“ã¨ãªã処ç†ã§ãã‚‹ã¨ã„ã†åŠ¹æžœã‚‚ã‚ã£ãŸã€‚メッセージ処ç†ã®ãƒžã‚¯ãƒã¯ã€C++ã®ä»®æƒ³é–¢æ•°ã®ä»£ã‚ã‚Šã¨ãªã£ãŸã€‚ãŸã ã€ä¸€éƒ¨ã®ãƒžã‚¯ãƒã¯ã‚³ãƒ³ãƒ‘イラã«ã‚ˆã‚‹åž‹ãƒã‚§ãƒƒã‚¯ã‚’無効化ã™ã‚‹ã“ã¨ãŒã‚ã‚‹ã®ã§ã€ã—ã°ã—ã°ãƒã‚°ã®åŽŸå› ã¨ãªã£ãŸã€‚
MFCを使用ã™ã‚‹ã“ã¨ã®ä¸»ãªåˆ©ç‚¹ã¯Windows APIã«ã‚ªãƒ–ジェクト指å‘プãƒã‚°ãƒ©ãƒŸãƒ³ã‚°ãƒ¢ãƒ‡ãƒ«ã‚’å°Žå…¥ã™ã‚‹ã¨ã„ã†ç‚¹ã§ã‚る。もã†ä¸€ã¤ã¯ã€Windowsã®ãƒªã‚½ãƒ¼ã‚¹ã«é–¢é€£ã—ãŸä¸€èˆ¬çš„ãªãƒ‡ãƒ¼ã‚¿åž‹ã«å¯¾ã™ã‚‹ãƒ©ãƒƒãƒ‘ã‚’æä¾›ã™ã‚‹ã¨ã„ã†ç‚¹ã§ã‚る。ã“れらã®ãƒ©ãƒƒãƒ‘を使用ã™ã‚‹ã“ã¨ã§ã€ã‚¹ã‚³ãƒ¼ãƒ—を出ãŸæ™‚ã«è‡ªå‹•çš„ã«ãƒªã‚½ãƒ¼ã‚¹ã®ãƒãƒ³ãƒ‰ãƒ«ã‚’解放ã•ã›ã‚‹ã“ã¨ãŒã§ãる。ã•ã‚‰ã«ã€MFCã¯Model View Controllerモデルã«åŸºã¥ã„ãŸã‚¢ãƒ—リケーションを開発ã™ã‚‹ãŸã‚ã®ãƒ‰ã‚ュメントï¼ãƒ“ュー フレームワークをæä¾›ã™ã‚‹ã€‚
MFCã®ä¸»ãªæ¬ 点ã¯ã€å¤šãã®ã‚ªãƒšãƒ¬ãƒ¼ãƒ†ã‚£ãƒ³ã‚°ã‚·ã‚¹ãƒ†ãƒ ã§åˆ©ç”¨ã§ããªã„ã¨ã„ã†ç‚¹ã§ã‚る。Mainsoftã¯UNIXã§åˆ©ç”¨å¯èƒ½ãªMFCツールを開発ã—ãŸ[1]。マイクãƒã‚½ãƒ•ãƒˆã¯ã€1990年代ã«Macintoshã«å¯¾å¿œã—ãŸMFCを販売ã—ã¦ã„ãŸãŒã€ãれ以é™ã¯Macintoshã«å¯¾ã™ã‚‹Visual Studioã®ã‚µãƒãƒ¼ãƒˆã¯ä¸æ¢ã•ã‚ŒãŸã€‚
[編集] 批判
- Delphiã€Javaã€.NET Frameworkãªã©ä»–ã®ã‚ªãƒ–ジェクト指å‘ライブラリã¯ã€è¨€èªžä»•æ§˜ã‚„ライブラリ内ã«ãƒ¡ãƒ¢ãƒªã®ã‚¬ãƒ™ãƒ¼ã‚¸ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã®æ©Ÿèƒ½ãŒæ¨™æº–ã§å…¥ã£ã¦ã„ã‚‹ã®ã«å¯¾ã—ã¦ã€MFCã¯ã‚¬ãƒ™ãƒ¼ã‚¸ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã‚’採用ã—ãªã‹ã£ãŸã¨ã„ã†ã€è‡´å‘½çš„æ¬ ç‚¹ã‚’æŒã¡ã€ãれ故ã€ãƒã‚°ã‚’生ã¿ã‚„ã™ãã€ç”Ÿç”£æ€§ãŒä½Žã„。
- CDocument, CView ãªã©ã®MVC周りã®ä»•æ§˜ãŒã€äº‹å®Ÿä¸Šå¿…é ˆã§ã‚ã‚‹ã«ã‚‚ã‹ã‹ã‚らãšã€é›£è§£ã§ã‚る。
- 言語ã¨ã—ã¦ã€C++を採用ã—ã¦ã„ã‚‹ãŸã‚ã€ä»–ã®ã‚ªãƒ–ジェクト指å‘言語ã¨æ¯”ã¹ã¦ã€ã‚³ãƒ³ãƒ‘イルã®æ™‚é–“ãŒé•·ã„。
[編集] ãƒãƒ¼ã‚¸ãƒ§ãƒ³
製å“ãƒãƒ¼ã‚¸ãƒ§ãƒ³ | MFCãƒãƒ¼ã‚¸ãƒ§ãƒ³ |
---|---|
Microsoft C/C++ 7.0 | MFC 1.0 |
Visual C++ 1.0 | MFC 2.0 |
Visual C++ 1.5 | MFC 2.5 |
Visual C++ 2.0 | MFC 3.0 |
Visual C++ 2.1 | MFC 3.1 |
Visual C++ 2.2 | MFC 3.2 |
Visual C++ 4.0 | MFC 4.0 |
Visual C++ 4.1 | MFC 4.1 |
Visual C++ 4.2 | MFC 4.2 |
Visual C++ 5.0 | MFC 4.21 (mfc42.dll) |
Visual C++ 6.0 | MFC 6.0 (mfc42.dll) |
Visual C++ .NET 2002 | MFC 7.0 (mfc70.dll) |
Visual C++ .NET 2003 | MFC 7.1 (mfc71.dll) |
Visual C++ 2005 | MFC 8.0 (mfc80.dll) |