「プログラミング/共通知識」の版間の差分

世間では歴史的経緯から、「WindowsのGUI描画はWin32APIをベースにしており、例外としてDirect XでプログラムされたGUIアプリを動作させる時だけDirect Xを使ってる」という解釈が通説ですが、しかし、実はそのような保障はないのです。 もしかしたら、もはやDirect XがWinodws内部のGUI描画でベースのシステムになっている可能性もあります。
(厳密には、Windowsの実行ファイルの言語形式は、機械語ではありません。 Windowsの実行ファイルの書式は、PEフォーマットと言う書式のある、中間言語のようなものです。)
(世間では歴史的経緯から、「WindowsのGUI描画はWin32APIをベースにしており、例外としてDirect XでプログラムされたGUIアプリを動作させる時だけDirect Xを使ってる」という解釈が通説ですが、しかし、実はそのような保障はないのです。 もしかしたら、もはやDirect XがWinodws内部のGUI描画でベースのシステムになっている可能性もあります。)
マイクロソフト社のサイトから、古いバージョンのVisual 〇〇を無償ダウンロードしようにも、そもそもマイクロソフト社が、最新版のVisual〇〇しか、ダウンロードさせてくれません。(どこのIT企業でも、一般に無償ソフトは、サポート作業の人件費の節約のため、最新版しか無償提供していない場合が多いのである。)
 
==== Win32 API と Direct X ====
もし、WindowsをもちいたGUIプログラミングで、(初心者レベルでない、)中級以上の機能のアプリを作りたい場合、Win32 API と Direct X という機能を使うしか、ありません。
 
よく、Windows向けのゲームで「Direct Xランタイムが必要です」などと説明書などで記載されているので、てっきりDirect X をゲーム専用に追加インストールする必要のある追加機能だと誤解しがちだが、実はゲームとは無関係に既にWindowsのインストール時点で Direct X は Windowsに標準インストールされています。
 
 
===== Win32 API =====
Win32 APIを使うには、Visual C++ で、「Windowsデスクトップアプリケーション」というのを選ぶしか、ありません。
 
 
しかし、.Net Framework 開発環境で開発されたアプリには、さらに .Net Framework ランタイムがユーザーに必要になります。(プログラマだけでなく、そのアプリを使う人にもまた、専用のランタイムが必要になる。)
 
===== Direct X =====
Win 32 API でのプログラミングを行っていくと、何かと機能的に不完全なところがあります。
 
そのような機能不足でも、Win32 APIを使って改善するプログラムが作れればよいのですが、しかし、そうとは限りません。
 
 
なぜなら、現在のWinodwsの多くの機能は、Direct X をもとにグラフィック描画をしてる部分もあるからです。
 
 
かつて、Windows95のころは、Direct X はゲーム用の専用のライブラリでした。しかし、現在は違います。現時点のWindowsでは、Direct X は、Windowsでのグラフィック描画用に標準的に使われるライブラリです。
 
世間一般のソースが非公開にされているアプリでは、もしかしたら、ゲームソフトでなくてもDirect Xを動作させるコードを書いているアプリケーションもあるかもしれません。
 
 
 
マイクロソフト社がソース非公開のため、Windows内部でのグラフィック描画機能にWin32APIとDirectXとをどう使いわけているかも非公開であり、詳細は不明です。
 
世間では歴史的経緯から、「WindowsのGUI描画はWin32APIをベースにしており、例外としてDirect XでプログラムされたGUIアプリを動作させる時だけDirect Xを使ってる」という解釈が通説ですが、しかし、実はそのような保障はないのです。
 
もしかしたら、もはやDirect XがWinodws内部のGUI描画でベースのシステムになっている可能性もあります。ひょっとしたら、近年のWindowsでは(GUIのコードの原則はDirect Xとして)、Win32APIのコードのほうが例外的に処理されている可能性もあります。
 
 
少なくとも明確な事実として、マイクロソフト社は、最新の画像技術のサポートなどは、Win32APIではなくDirect Xを通してサポートを提供しています。
 
このため、もしかしたら将来的には、マイクロソフト社によるGUI技術のサポートは、Win32APIではなくDirectXを優先する可能性もありえます。
 
 
 
23,094

回編集