【猫プロ】Windows SDK 第1部 (1) イントロダクション ~ 第5章
2008.08.16 |Category …PC/プログラミング
【感想】
はじめてのWindowsプログラム。
サイトのソースをコピーして、
解説を読みながら、
コメントを入れていくという方法で勉強開始。
型名がちんぷんかんぷん。
サイトには全部知る必要はないとあるので、
とりあえず流している状態。
今まではOSの載ったプログラムを組んだことがないため、
色々用意されている状態が不安に感じる…。
慣れていかねば。
【本日の進捗】
猫でもわかるプログラミング
Windows SDK編 第1部
第5章まで完了 5 / 350
▽【発生した問題点とその解決策】
【発生した問題点とその解決策】
・新規プロジェクトで立ち上げる場合の設定がわからない。
(章)
イントロダクション
(詳細)
サイトでは、少し前のVersionの開発環境ツールを
使っている前提で記述されているため、
現在のツールでの表記と異なっており、
設定の仕方が不明。
(解決策)
Visual Studio 2008では下記手順で行えば、同等の設定の様。
1. 「ファイル」→「新規作成」→「プロジェクト」を選択
2. プロジェクトの種類を「Visual C++」→「Win32」と選択
3. テンプレートを「Win32プロジェクト」と選択
4. 「プロジェクト名」・「場所」を記入し、「OK」をクリック
5. 「次へ」で進んでいき、アプリケーションの設定にて、
下記のように設定し、「完了」をクリック
> アプリケーションの種類 … Windowsアプリケーション
> 追加のオプション … 空のプロジェクト
> 共通ヘッダーファイルを追加 … チェックなし
(無料版だとチェックできない)
・サイトからコピー&ペーストしたソースのコンパイルが通らない。
(章)
イントロダクション
(詳細)
サイトにて提示されているソースをそのままコピー&ペーストし、
ビルドを行ったが、下記のようなコンパイルエラーが発生する。
[a] main.cpp(22) :
error C2440: '=' : 'HGDIOBJ' から 'HBRUSH' に変換できません。
'void*' から非 'void' 型への変換には明示的なキャストが必要です。
[b] main.cpp(24) :
error C2440: '=' : 'char [25]' から 'LPCWSTR' に変換できません。
指示された型は関連がありません。
変換には reinterpret_cast、C スタイル キャストまたは
関数スタイルのキャストが必要です。
[c] main.cpp(38) :
error C2664: 'CreateWindowExW' :
2 番目の引数を 'char [25]' から 'LPCWSTR' に変換できません。
(新しい機能 ; ヘルプを参照)
指示された型は関連がありません。
変換には reinterpret_cast、C スタイル キャストまたは
関数スタイルのキャストが必要です。
(解決策)
コンパイラのVersion Upにより型の差異をより強化してみているため、
発生したエラーのようです。
[a]については、単純に明示的にキャストすればOKのようです。
(参考サイト(1),(2))
[b][c]については、下記手順で発生しなくなります。
(参考サイト(3))
1. 「プロジェクト」→「XXX(プロジェクト名)のプロパティ」をクリック。
2. 「構成プロパティ」→「全般」を選択。
3. 「文字セット」を「Unicode 文字セットを使用する」から
「マルチ バイト文字セットを使用する」に変更
(参考サイト)
(1) VC++.NETでSDKソースがコンパイルできない - VC++超初心者のHP
(2) VC++6.0でうまくビルドできない時は - 猫でもできるプログラミング
(3) LPCWSTRとchar - 教えて!goo
以上