Win32API講座1回
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
Win32APIとは
Windowsが提供するWindows APIのバージョンの一つです
(DXライブラリと違い、Microsoft公式のライブラリです)
API (Application Programming Interface) とは
OSやシステムが提供する機能にアクセスするためのインターフ...
つまりこのAPIを理解することができれば、Windowsの根幹を理...
また、ネイティブコードなので.Net Frameworkより処理は速い...
ネット上、書籍限らず情報が圧倒的に多いのもメリットのひと...
ただし、.Net Frameworkより冗長なコードになりがちだったり
さらに公式のホームページでもわかりにくい記述があったり
日本語訳がなく英語のみだったり(色々やりたいことが増えて...
なので
この講座では
使いたいなーと思う機能に絞り
少しでもわかりやすく噛み砕いて
紹介したいと思います(^^;;
C/C++で描画や音鳴らしたりGUI扱いたいとき
その橋渡しになればいいかなと思います
(全体的にめんどくさいものですが・・・)
よく使われるであろうと思われる
基本機能をすべてまとめたライブラリも用意しました。
Win32APIライブラリ
Windows 7からは本格的に上位バージョンのWin64APIも導入され...
XP,Vistaでは動かないためWin32APIはまだまだ現役です
(逆にWindows 7でもWin32APIは動く)
また、Win64APIでも基本理念はそこまで違いはないため
Win32APIが理解できればWin64APIもすぐ理解できるでしょう
(あとはネット上の情報が多いのも利点の一つです)
第1回では、Win32APIに入る前に
ウィンドウズプログラムの基本的な概念を説明します。
おそらく、一度見ただけでは理解できないかもしれません
プログラムを実際に動かしたあと見返してくれれば理解が深ま...
まず、ウィンドウズプログラミングをする上で重要となる用語...
SIZE(30){ COLOR(#ffaa00){ ■ウィンドウ } }
SIZE(30){ COLOR(#ffaa00){ ■メッセージ } }
SIZE(30){ COLOR(#ffaa00){ ■ハンドル } }
SIZE(30){ COLOR(#ffaa00){ ■ダイナミックリンクスライブラリ...
SIZE(30){ COLOR(#ffaa00){ ■COM } }
-----------------------------------------
SIZE(30){ COLOR(#ffaa00){ ■ウィンドウ } }
ブラウザにしたってそうだし、エクセルやワードだってそうで...
アプリケーションをグラフィカルに表示して、マウスなどで操...
実は、意外に思われるかもしれませんが
ウィンドウズ上では
ボタンやエディットボックスなどのコントロールもウィンドウ...
ここで大事になるのは
SIZE(25){ COLOR(#00aaff){ ○ウィンドウクラス } }
SIZE(25){ COLOR(#00aaff){ ○ウィンドウスタイル } }
の2つです
この2つがウィンドウの機能を決めます
ウィンドウクラスはウィンドウの機能を決めます
たとえば、ボタンを作りたいならばボタン用のウィンドウクラ...
なお、自分でウィンドウクラスを定義してそのウィンドウを作...
ウィンドウスタイルはウィンドウの外見などを決めます
ウィンドウの右上の最大、最小ボタンを設定したり
ウィンドウサイズの変更を可能にするなどの設定ができます
SIZE(30){ COLOR(#ffaa00){ ■メッセージ } }
ウィンドウに送られてくる処理する内容の通知をメッセージと...
たとえば、キーが押された、マウスが押されたなどのときに
それに対応したメッセージが送られ、そのときにやりたい処理...
メッセージは順番に送られてきて、
メッセージキューと呼ばれるものに詰められます、
そして基本的にはメッセージが送られてきた順番に処理をして...
従来の処理がウォータフォール型(処理の流れが一直線)の
コンソールのプログラムに対し、
メッセージが送られたときに対応した処理を書くので
イベントドリブン型といいます。
ここがコンソールのプログラムと大きく違う点で初心者が悩む...
SIZE(30){ COLOR(#ffaa00){ ■ハンドル } }
ウィンドウズが提供するリソースを識別するためのポインタで...
どんなものがあるかというと
○ウィンドウ系ハンドル
○描画系オブジェクトハンドル
○プロセス系ハンドル
○レジストリ系ハンドル
○メニュー系ハンドル
などがあります
ハンドルはOSのカーネル(OSのコア)
となる部分でリソースを作成し、それを操作するために提供さ...
ハンドルの実態はvoidポインタです
つまり、データの型を隠蔽したポインタということになります
なのでハンドルは使い終わったら、その種類によって適切な解...
(ハンドルのメモリリークをハンドルリークと呼ぶ)
具体的には、次の3つのダイナミックリンクスライブラリ(DLL...
SIZE(20){ COLOR(#00aaff){ ・kernel32.dll } }
SIZE(20){ COLOR(#00aaff){ ・gdi32.dll } }
SIZE(20){ COLOR(#00aaff){ ・user32.dll } }
この3つのDLLはウィンドウズのコアとなるライブラリです
SIZE(30){ COLOR(#ffaa00){ ■ダイナミックリンクスライブラリ...
ダイナミックリンクスライブラリはライブラリの一種です。
ライブラリと言われてもピンとこない方、
コンパイル済みのプログラムの部品と言ったほうがしっくり来...
VisualStudioC++でコンパイルした.cppファイルは.obj形式とし...
(VC++でビルドを行うとDebugやReleaseフォルダが作成され、
.objファイルができているので見てみるとよいでしょう)
複数の.objファイル(.libファイル含む)をリンカーと呼ばれる...
実行ファイル.exeができます。
ここで問題となるのは、プログラムをビルドするたびにリンク...
(VC++ではビルドを行うことでコンパイル・リンクの作業をま...
小規模なプログラムならよいですが、
大規模なプログラムになるとプログラムをビルドするたびにリ...
アプリケーション本体でのライブラリのリンク作業を
ダイナミックスリンクライブラリ(DLL)は分離することができ...
具体的には、アプリケーションを実行するときにライブラリ(.d...
(したがって、DLLを使用したアプリケーションは、実行ファイ...
DLLへのパスを通しておかなければ実行ファイルが起動できませ...
DLLを作るためには別途DLL用プロジェクトを作る必要があります
また、これが重要なことなのですが
実装部分のみを差し替えることでプラグイン的な使い方ができ...
SIZE(30){ COLOR(#ffaa00){ ■COM } }
COMと関連して以下の用語も重要です
○OLE
○ActiveX
○COM
○.Net Framework
詳しい説明は下にパワポで用意しました
&ref(COM.pptx);
COMだけに関して言えば、
インターフェイスと実装を完全に分離させたもので、実態は大...
DLLの実装部分を書きかえることで前のDLLと差し替えるだけで...
上記のDLLのプラグイン機能を最大限に生かしたものでしょう
なお、DirectXもCOMです
|(^ω^)やったお|18|
|何これwww意味不すぎwww|18|
|。(`ω´#)。あぁん?最近、だらしねぇな|13|
終了行:
Win32APIとは
Windowsが提供するWindows APIのバージョンの一つです
(DXライブラリと違い、Microsoft公式のライブラリです)
API (Application Programming Interface) とは
OSやシステムが提供する機能にアクセスするためのインターフ...
つまりこのAPIを理解することができれば、Windowsの根幹を理...
また、ネイティブコードなので.Net Frameworkより処理は速い...
ネット上、書籍限らず情報が圧倒的に多いのもメリットのひと...
ただし、.Net Frameworkより冗長なコードになりがちだったり
さらに公式のホームページでもわかりにくい記述があったり
日本語訳がなく英語のみだったり(色々やりたいことが増えて...
なので
この講座では
使いたいなーと思う機能に絞り
少しでもわかりやすく噛み砕いて
紹介したいと思います(^^;;
C/C++で描画や音鳴らしたりGUI扱いたいとき
その橋渡しになればいいかなと思います
(全体的にめんどくさいものですが・・・)
よく使われるであろうと思われる
基本機能をすべてまとめたライブラリも用意しました。
Win32APIライブラリ
Windows 7からは本格的に上位バージョンのWin64APIも導入され...
XP,Vistaでは動かないためWin32APIはまだまだ現役です
(逆にWindows 7でもWin32APIは動く)
また、Win64APIでも基本理念はそこまで違いはないため
Win32APIが理解できればWin64APIもすぐ理解できるでしょう
(あとはネット上の情報が多いのも利点の一つです)
第1回では、Win32APIに入る前に
ウィンドウズプログラムの基本的な概念を説明します。
おそらく、一度見ただけでは理解できないかもしれません
プログラムを実際に動かしたあと見返してくれれば理解が深ま...
まず、ウィンドウズプログラミングをする上で重要となる用語...
SIZE(30){ COLOR(#ffaa00){ ■ウィンドウ } }
SIZE(30){ COLOR(#ffaa00){ ■メッセージ } }
SIZE(30){ COLOR(#ffaa00){ ■ハンドル } }
SIZE(30){ COLOR(#ffaa00){ ■ダイナミックリンクスライブラリ...
SIZE(30){ COLOR(#ffaa00){ ■COM } }
-----------------------------------------
SIZE(30){ COLOR(#ffaa00){ ■ウィンドウ } }
ブラウザにしたってそうだし、エクセルやワードだってそうで...
アプリケーションをグラフィカルに表示して、マウスなどで操...
実は、意外に思われるかもしれませんが
ウィンドウズ上では
ボタンやエディットボックスなどのコントロールもウィンドウ...
ここで大事になるのは
SIZE(25){ COLOR(#00aaff){ ○ウィンドウクラス } }
SIZE(25){ COLOR(#00aaff){ ○ウィンドウスタイル } }
の2つです
この2つがウィンドウの機能を決めます
ウィンドウクラスはウィンドウの機能を決めます
たとえば、ボタンを作りたいならばボタン用のウィンドウクラ...
なお、自分でウィンドウクラスを定義してそのウィンドウを作...
ウィンドウスタイルはウィンドウの外見などを決めます
ウィンドウの右上の最大、最小ボタンを設定したり
ウィンドウサイズの変更を可能にするなどの設定ができます
SIZE(30){ COLOR(#ffaa00){ ■メッセージ } }
ウィンドウに送られてくる処理する内容の通知をメッセージと...
たとえば、キーが押された、マウスが押されたなどのときに
それに対応したメッセージが送られ、そのときにやりたい処理...
メッセージは順番に送られてきて、
メッセージキューと呼ばれるものに詰められます、
そして基本的にはメッセージが送られてきた順番に処理をして...
従来の処理がウォータフォール型(処理の流れが一直線)の
コンソールのプログラムに対し、
メッセージが送られたときに対応した処理を書くので
イベントドリブン型といいます。
ここがコンソールのプログラムと大きく違う点で初心者が悩む...
SIZE(30){ COLOR(#ffaa00){ ■ハンドル } }
ウィンドウズが提供するリソースを識別するためのポインタで...
どんなものがあるかというと
○ウィンドウ系ハンドル
○描画系オブジェクトハンドル
○プロセス系ハンドル
○レジストリ系ハンドル
○メニュー系ハンドル
などがあります
ハンドルはOSのカーネル(OSのコア)
となる部分でリソースを作成し、それを操作するために提供さ...
ハンドルの実態はvoidポインタです
つまり、データの型を隠蔽したポインタということになります
なのでハンドルは使い終わったら、その種類によって適切な解...
(ハンドルのメモリリークをハンドルリークと呼ぶ)
具体的には、次の3つのダイナミックリンクスライブラリ(DLL...
SIZE(20){ COLOR(#00aaff){ ・kernel32.dll } }
SIZE(20){ COLOR(#00aaff){ ・gdi32.dll } }
SIZE(20){ COLOR(#00aaff){ ・user32.dll } }
この3つのDLLはウィンドウズのコアとなるライブラリです
SIZE(30){ COLOR(#ffaa00){ ■ダイナミックリンクスライブラリ...
ダイナミックリンクスライブラリはライブラリの一種です。
ライブラリと言われてもピンとこない方、
コンパイル済みのプログラムの部品と言ったほうがしっくり来...
VisualStudioC++でコンパイルした.cppファイルは.obj形式とし...
(VC++でビルドを行うとDebugやReleaseフォルダが作成され、
.objファイルができているので見てみるとよいでしょう)
複数の.objファイル(.libファイル含む)をリンカーと呼ばれる...
実行ファイル.exeができます。
ここで問題となるのは、プログラムをビルドするたびにリンク...
(VC++ではビルドを行うことでコンパイル・リンクの作業をま...
小規模なプログラムならよいですが、
大規模なプログラムになるとプログラムをビルドするたびにリ...
アプリケーション本体でのライブラリのリンク作業を
ダイナミックスリンクライブラリ(DLL)は分離することができ...
具体的には、アプリケーションを実行するときにライブラリ(.d...
(したがって、DLLを使用したアプリケーションは、実行ファイ...
DLLへのパスを通しておかなければ実行ファイルが起動できませ...
DLLを作るためには別途DLL用プロジェクトを作る必要があります
また、これが重要なことなのですが
実装部分のみを差し替えることでプラグイン的な使い方ができ...
SIZE(30){ COLOR(#ffaa00){ ■COM } }
COMと関連して以下の用語も重要です
○OLE
○ActiveX
○COM
○.Net Framework
詳しい説明は下にパワポで用意しました
&ref(COM.pptx);
COMだけに関して言えば、
インターフェイスと実装を完全に分離させたもので、実態は大...
DLLの実装部分を書きかえることで前のDLLと差し替えるだけで...
上記のDLLのプラグイン機能を最大限に生かしたものでしょう
なお、DirectXもCOMです
|(^ω^)やったお|18|
|何これwww意味不すぎwww|18|
|。(`ω´#)。あぁん?最近、だらしねぇな|13|
ページ名: