C言語とC++の入門書を読み終えた初心者です。
C++/CLIではなく、標準C++を言語に選び、windowsAPI(Win32API)を使ってアプリケーションを開発したいと考えています。
正直にお伝えしておくと、入門書を読み終えた段階で「C++言語×WinAPIのみでアプリケーション開発」は相当に高難易度かと思います。C++言語とWinAPIそれぞれにある程度慣れていたとしても、その組み合わせでの開発は 苦痛 と言って差し支えないレベルです。
プログラミング言語やAPI・ライブラリ・フレームワークには適材適所がありますので、絶対にC++言語×WinAPIの組み合わせで学習するのだという強い意志が無いと途中で挫折することになります。まずは、どんなアプリケーションを作りたいのか?(便利なGUIツール?ゲーム?など)という点を整理してみてください。
おすすめのURLサイトや書籍
majiponiさん回答にある「猫でもわかるプログラミング WindowsSDK編」が一番情報が充実していると思います。
C言語を標準C++で置き換えた場合にwindowsAPIの使われ方がどう違うのか分かっていません。
WinAPIの使い方は、C言語とC++言語で全く同じです。WinAPIはC言語向けの関数として提供されますが、C++言語からはCの関数をそのまま呼び出せます(C++プログラムからC言語ライブラリのprintf
関数を呼びだせるのと同じ)。
補足:DirectXなどCOMベースのAPIでは、C言語よりもC++言語からの方が扱いやすいことはあります。ただ、一般にWinAPIというときはレガシーなC言語インターフェイスの範囲内を指すと思われますので、C/C++での差異は無いと説明しています。
(厳密にはリンク時の名前マングリング規約などの留意点があるのですが、WinAPI提供ヘッダファイル内で考慮されているのでここでは無視します)
さらにAPIとC言語とで型名がちがうらしいのですが、どの型がどれに相当しているのかということや、
WinAPIは固有の型(LPCTSTR
, DWORD
, LPVOID
等)を大量に定義しています。これらはWindows OSの歴史的経緯もあり、全てを学習するのは難しいと思います。正直なところ相当な時代遅れ感もあり、これから新たに学習するのは全くおすすめできません。
ここでは、頻出の型のみを簡単に説明します:
WORD
=16bit符号なし整数型, DWORD
=32bit符号なし整数型
- 型名の先頭が
LP
またはP
= ポインタ型
LPxxSTR
(xx
はW
/T
/C
/CW
/CT
)型 = 文字列型。無印=ANSI(Native)/W
=UTF-16/T
=Universal、C
=const
。
より詳細を知りたければ、MSDN内を検索してください。
どの範囲までをC言語或いはC++で記述し、どの範囲からAPIで記述すればいいのかということも分かっていません。
絶対的な指標はありません。一部の機能(例:ファイルの読み書きなど)はC/C++標準ライブラリとWinAPI両方で提供されますが、どちらが好ましいかはケース・バイ・ケースでしょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/12/14 02:24
2016/12/14 09:10
2016/12/14 14:20
2016/12/18 09:27 編集