@prefix schema: <https://schema.org/> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix ks: <https://comcomponent.com/vocab/> .

<https://comcomponent.com/blog/2026/06/11/000-windows-mfc-overview/#article>
    schema:about <https://comcomponent.com/knowledge/mfc/> ;
    schema:mentions <https://comcomponent.com/knowledge/win32-api/>, <https://comcomponent.com/knowledge/cwinapp/>, <https://comcomponent.com/knowledge/message-map/>, <https://comcomponent.com/knowledge/document-view-architecture/>, <https://comcomponent.com/knowledge/mfc-ddx-ddv/>, <https://comcomponent.com/knowledge/resource-script/>, <https://comcomponent.com/knowledge/cstring-class/>, <https://comcomponent.com/knowledge/vs-mfc-component/>, <https://comcomponent.com/knowledge/mfc-shared-dll-linking/>, <https://comcomponent.com/knowledge/mfc-module-state/>, <https://comcomponent.com/knowledge/high-dpi-support/>, <https://comcomponent.com/knowledge/new-gui-application-development/>, <https://comcomponent.com/knowledge/legacy-app-maintenance-and-migration/>, <https://comcomponent.com/knowledge/activex/>, <https://comcomponent.com/knowledge/bitness-match-requirement/> .

<https://comcomponent.com/knowledge/mfc/> a skos:Concept ;
    skos:prefLabel "MFC(Microsoft Foundation Classes)"@ja ;
    skos:definition "C++でWindowsデスクトップアプリやCOMサーバーを作るためのマイクロソフト製クラスライブラリ。"@ja ;
    skos:altLabel "Microsoft Foundation Class Library" ;
    ks:uses <https://comcomponent.com/knowledge/win32-api/> ;
    ks:uses <https://comcomponent.com/knowledge/cwinapp/> ;
    ks:implements <https://comcomponent.com/knowledge/message-map/> ;
    ks:implements <https://comcomponent.com/knowledge/document-view-architecture/> ;
    ks:implements <https://comcomponent.com/knowledge/mfc-ddx-ddv/> ;
    ks:uses <https://comcomponent.com/knowledge/cstring-class/> ;
    ks:requires <https://comcomponent.com/knowledge/vs-mfc-component/> ;
    ks:configuredBy <https://comcomponent.com/knowledge/mfc-shared-dll-linking/> ;
    ks:notRecommendedFor <https://comcomponent.com/knowledge/new-gui-application-development/> ;
    ks:recommendedFor <https://comcomponent.com/knowledge/legacy-app-maintenance-and-migration/> .

<https://comcomponent.com/knowledge/win32-api/> a skos:Concept ;
    skos:prefLabel "Win32 API"@ja ;
    skos:definition "Windowsのネイティブなアプリケーション開発向けAPI群。"@ja ;
    skos:altLabel "Windows API" .

<https://comcomponent.com/knowledge/cwinapp/> a skos:Concept ;
    skos:prefLabel "CWinApp"@ja ;
    skos:definition "アプリケーション全体の初期化と終了を担う、MFCのCWinApp派生クラス。通常1つのグローバルオブジェクトとして存在する。"@ja ;
    skos:altLabel "CWinAppクラス"@ja ;
    skos:broader <https://comcomponent.com/knowledge/mfc/> ;
    ks:automates <https://comcomponent.com/knowledge/win32-api/> .

<https://comcomponent.com/knowledge/message-map/> a skos:Concept ;
    skos:prefLabel "メッセージマップ"@ja ;
    skos:definition "Windowsメッセージやコマンドをハンドラー関数に結びつける、MFCのBEGIN_MESSAGE_MAPからEND_MESSAGE_MAPまでの対応表の仕組み。"@ja ;
    skos:altLabel "BEGIN_MESSAGE_MAP" ;
    skos:altLabel "Message Map" ;
    skos:broader <https://comcomponent.com/knowledge/mfc/> ;
    ks:requires <https://comcomponent.com/knowledge/win32-api/> .

<https://comcomponent.com/knowledge/document-view-architecture/> a skos:Concept ;
    skos:prefLabel "Document/Viewアーキテクチャ"@ja ;
    skos:definition "アプリケーションが扱うデータ(CDocument)と、その表示(CView)を分離するMFCの構造。ドキュメントテンプレートがフレーム・ドキュメント・ビューを結びつける。"@ja ;
    skos:altLabel "Document/View" ;
    skos:altLabel "CDocument/CView" ;
    skos:broader <https://comcomponent.com/knowledge/mfc/> ;
    ks:requires <https://comcomponent.com/knowledge/cwinapp/> .

<https://comcomponent.com/knowledge/mfc-ddx-ddv/> a skos:Concept ;
    skos:prefLabel "DDX/DDV"@ja ;
    skos:definition "ダイアログ上のコントロールとC++のメンバー変数を対応づけるDDX(Dialog Data Exchange)と、その入力値を検証するDDV(Dialog Data Validation)からなるMFCの仕組み。"@ja ;
    skos:altLabel "Dialog Data Exchange" ;
    skos:altLabel "Dialog Data Validation" ;
    skos:altLabel "DoDataExchange" ;
    skos:broader <https://comcomponent.com/knowledge/mfc/> ;
    ks:requires <https://comcomponent.com/knowledge/resource-script/> .

<https://comcomponent.com/knowledge/resource-script/> a skos:Concept ;
    skos:prefLabel "リソースファイル(.rc/resource.h)"@ja ;
    skos:definition "ダイアログテンプレート、メニュー、アイコン、文字列テーブルなどを定義するWindowsの.rcファイルと、対応するリソースIDを定義するresource.hの組。"@ja ;
    skos:altLabel ".rcファイル"@ja ;
    skos:altLabel "resource.h" ;
    skos:altLabel "リソーススクリプト"@ja .

<https://comcomponent.com/knowledge/cstring-class/> a skos:Concept ;
    skos:prefLabel "CString"@ja ;
    skos:definition "MFC/ATL系のコードで多用される、可変長の文字列を扱うC++クラス。"@ja ;
    skos:altLabel "CStringクラス"@ja .

<https://comcomponent.com/knowledge/vs-mfc-component/> a skos:Concept ;
    skos:prefLabel "Visual Studio InstallerのMFCコンポーネント"@ja ;
    skos:definition "Visual Studio Installerで個別に選択する、MFCのヘッダーとライブラリ(atlmfcフォルダー)を提供するコンポーネント。"@ja ;
    skos:altLabel "C++ MFC for latest build tools" ;
    skos:altLabel "Microsoft.VisualStudio.Component.VC.ATLMFC" .

<https://comcomponent.com/knowledge/mfc-shared-dll-linking/> a skos:Concept ;
    skos:prefLabel "MFCのリンク方式(Use of MFC)"@ja ;
    skos:definition "MFCを共有DLLとして使うか、静的ライブラリとしてリンクするかを選ぶプロジェクト設定(Use of MFC)。"@ja ;
    skos:altLabel "Use MFC in a Shared DLL" ;
    skos:altLabel "Use MFC in a Static Library" .

<https://comcomponent.com/knowledge/mfc-module-state/> a skos:Concept ;
    skos:prefLabel "MFCモジュール状態"@ja ;
    skos:definition "MFC拡張DLLなどで、どのモジュールのリソースを見に行くかを切り替えるためにAFX_MANAGE_STATEマクロで管理する状態。"@ja ;
    skos:altLabel "AFX_MANAGE_STATE" ;
    skos:altLabel "モジュール状態"@ja .

<https://comcomponent.com/knowledge/activex/> a skos:Concept ;
    skos:prefLabel "ActiveX"@ja ;
    skos:definition "実務ではCOMベースのコントロールやその周辺資産をまとめて指す言葉として使われる技術群。特に.ocx形式のUIコントロールやIE/コンテナへ埋め込む部品を含むことが多い。"@ja ;
    skos:altLabel "ActiveXコントロール"@ja ;
    skos:broader <https://comcomponent.com/knowledge/com/> .

<https://comcomponent.com/knowledge/bitness-match-requirement/> a skos:Concept ;
    skos:prefLabel "bitness一致要件"@ja ;
    skos:definition "ネイティブモジュール(in-procのCOMコンポーネント、P/Invokeで呼ぶDLL、ベンダー提供SDKのDLLなど)を読み込むホストプロセスと、そのモジュールのビット構成(32bit/64bit)が一致していなければならないという制約。"@ja ;
    skos:altLabel "32bit/64bitの一致"@ja ;
    skos:altLabel "bitness match" .

<https://comcomponent.com/knowledge/high-dpi-support/> a skos:Concept ;
    skos:prefLabel "高DPI対応"@ja ;
    skos:definition "アプリケーションがディスプレイの拡大率に応じて正しくレイアウト・描画されるようにする、DPI対応モードの明示を含む設計・実装。"@ja ;
    skos:altLabel "DPI Awareness" ;
    skos:altLabel "高DPI"@ja ;
    skos:altLabel "DPI対応"@ja ;
    skos:altLabel "高解像度ディスプレイ対応"@ja .

<https://comcomponent.com/knowledge/new-gui-application-development/> a skos:Concept ;
    skos:prefLabel "完全新規の一般的なGUIアプリ開発"@ja ;
    skos:definition "既存資産との連携を前提としない、これから作る一般的なGUIアプリケーションの新規開発。"@ja ;
    skos:altLabel "新規GUIアプリ開発"@ja ;
    skos:altLabel "グリーンフィールド開発"@ja .

<https://comcomponent.com/knowledge/legacy-app-maintenance-and-migration/> a skos:Concept ;
    skos:prefLabel "既存MFCアプリの保守・段階的移行"@ja ;
    skos:definition "既存MFCアプリの保守・機能追加・ビルド環境更新・別UIへの段階的移行といった、既存資産を対象にした作業。"@ja ;
    skos:altLabel "既存資産の保守"@ja ;
    skos:altLabel "段階的移行"@ja .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/mfc/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/win32-api/> ;
    schema:description "MFCはWin32 APIをC++のクラスとして扱いやすくするためのライブラリであり、Win32 APIの考え方を土台にした薄いフレームワークである"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/cpp/mfc/mfc-and-atl?view=msvc-170> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/mfc/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/cwinapp/> ;
    schema:description "MFCアプリケーションでは通常CWinAppから派生したグローバルオブジェクトが1つ存在し、アプリケーション全体の初期化と終了を担う"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/cpp/mfc/reference/cwinapp-class?view=msvc-170> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/cwinapp/> ;
    rdf:predicate ks:automates ;
    rdf:object <https://comcomponent.com/knowledge/win32-api/> ;
    schema:description "CWinAppはWinMain、ウィンドウクラス登録、メッセージループなど通常Win32 APIで直接書く処理の多くをフレームワーク側で引き受ける"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/cpp/mfc/cwinapp-the-application-class?view=msvc-170> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/mfc/> ;
    rdf:predicate ks:implements ;
    rdf:object <https://comcomponent.com/knowledge/message-map/> ;
    schema:description "MFCはWindowsメッセージやコマンドをハンドラー関数に結びつけるメッセージマップという仕組みの実装を担う"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/cpp/mfc/mapping-messages?view=msvc-170> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/message-map/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/win32-api/> ;
    schema:description "メッセージマップはWM_COMMANDなどのWindowsメッセージを前提とし、自クラスから基底クラスへ対応表をたどってハンドラーへ振り分ける"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/cpp/mfc/mapping-messages?view=msvc-170> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/mfc/> ;
    rdf:predicate ks:implements ;
    rdf:object <https://comcomponent.com/knowledge/document-view-architecture/> ;
    schema:description "MFCはアプリケーションが扱うデータ(Document)と表示(View)を分離するDocument/Viewアーキテクチャの実装を担う"@ja ;
    ks:evidence <https://learn.microsoft.com/ja-jp/cpp/mfc/document-view-architecture?view=msvc-170> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/document-view-architecture/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/cwinapp/> ;
    schema:description "フレーム・ドキュメント・ビューを結びつけるドキュメントテンプレートは、CWinApp派生クラスのInitInstanceの中で登録される"@ja ;
    ks:evidence <https://learn.microsoft.com/ja-jp/cpp/mfc/document-view-architecture?view=msvc-170> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/message-map/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/document-view-architecture/> ;
    schema:description "ON_COMMANDで登録されたコマンドはアクティブビュー・ドキュメント・フレーム・アプリケーションの順に配送されるコマンドルーティングを持ち、Document/View構造を使っているかどうかで配送先が変わる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/cpp/mfc/mapping-messages?view=msvc-170> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/mfc/> ;
    rdf:predicate ks:implements ;
    rdf:object <https://comcomponent.com/knowledge/mfc-ddx-ddv/> ;
    schema:description "MFCはダイアログ上のコントロールとC++メンバー変数を対応づけるDDXと、入力値を検証するDDVの実装を担う"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/cpp/mfc/dialog-data-exchange-and-validation?view=msvc-170> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/mfc-ddx-ddv/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/resource-script/> ;
    schema:description "DoDataExchangeはDDX_TextなどでリソースIDとメンバー変数を対応づけるため、resource.hで定義されたコントロールIDと一致している必要がある"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/cpp/mfc/dialog-data-exchange-and-validation?view=msvc-170> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/mfc/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/cstring-class/> ;
    schema:description "MFCはAPIやコントロールとの相性から、可変長文字列クラスであるCStringを多用する"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/cpp/mfc/mfc-and-atl?view=msvc-170> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/mfc/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/vs-mfc-component/> ;
    schema:description "Visual StudioでMFCを使うには、C++ MFC for latest build toolsなどのコンポーネントをVisual Studio Installerで個別にインストールする必要があり、入っていないとafxwin.hが見つからずビルドが止まる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/visualstudio/install/workload-component-id-vs-build-tools?view=visualstudio> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/mfc/> ;
    rdf:predicate ks:configuredBy ;
    rdf:object <https://comcomponent.com/knowledge/mfc-shared-dll-linking/> ;
    schema:description "MFCはプロジェクト設定のUse of MFCで、共有DLLとして使うか静的ライブラリとしてリンクするかを構成できる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/cpp/windows/redistributing-the-mfc-library?view=msvc-170> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/mfc/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/mfc-module-state/> ;
    schema:description "MFC拡張DLLなどでリソースを読み込む場面では、公開関数の入口でAFX_MANAGE_STATEを呼び正しいモジュール状態に切り替える必要がある"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/cpp/mfc/mfc-and-atl?view=msvc-170> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/mfc/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/activex/> ;
    schema:description "古い業務アプリでは、OLE Automation・ActiveXコントロール・COMサーバーなどCOM/OLE関連の要素がMFCアプリに組み込まれていることがある"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/cpp/mfc/mfc-and-atl?view=msvc-170> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/mfc/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/bitness-match-requirement/> ;
    schema:description "COM/ActiveXを利用するMFCアプリでは、32bit MFCアプリからは32bit COM、64bit MFCアプリからは64bit COMを使う必要があり、x64化の際はCOM/ActiveX依存のビット構成を確認する(COM/ActiveXを使わないMFCアプリには当てはまらない)"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/winprog64/process-interoperability> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/mfc/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/high-dpi-support/> ;
    schema:description "古いMFCアプリを現代のWindowsで正しく表示するには、アプリケーションがDPI対応モードを明示し、固定ピクセル描画を見直す必要がある"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/hidpi/high-dpi-desktop-application-development-on-windows> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/mfc/> ;
    rdf:predicate ks:notRecommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/new-gui-application-development/> ;
    schema:description "MFCのドキュメントには新機能追加やドキュメント更新が行われないという注記があり、完全新規の一般的なGUIアプリケーションでの採用は慎重に判断すべきとされる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/cpp/mfc/mfc-desktop-applications?view=msvc-170> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/mfc/> ;
    rdf:predicate ks:recommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/legacy-app-maintenance-and-migration/> ;
    schema:description "既存MFCアプリの保守・機能追加・ビルド環境更新・別UIへの段階的移行では、MFCの知識が現実的によく必要になる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/cpp/mfc/mfc-desktop-applications?view=msvc-170> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/mfc-module-state/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/resource-script/> ;
    schema:description "AFX_MANAGE_STATEを忘れると、DLL内のダイアログや文字列リソースなどresource.h/.rcで定義したリソースが正しいモジュールから読み込まれなくなる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/cpp/mfc/mfc-and-atl?view=msvc-170> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .
