
プログラミング初心者です。
WIN32APIの勉強を始めたばかりの状態です。
本を見ながら、ウィンドウを表示させるだけのプログラムを書いてみたのですが、エラーになってしまいます。
#include <windows.h>
//ウィンドウ・クラス名
#define MYWNDCLSNAME "MyWindowClass"
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
int WINAPI WinMain(HINSTANCE hInst,
HINSTANCE hPrevInst,
LPSTR lpCmdLine, int nCmdShow)
{
WNDCLASS wndcls;
HWND hWnd;
MSG msg;
//ウィンドウ・クラスを登録
ZeroMemory(&wndcls, sizeof(wndcls));
wndcls.lpfnWndProc = WndProc;
wndcls.hInstance = hInst;
wndcls.hIcon = LoadIcon(0, IDI_APPLICATION);
wndcls.hCursor = LoadCursor(0, IDC_ARROW);
wndcls.hbrBackground = (HBRUSH)COLOR_BACKGROUND;
wndcls.lpszClassName = MYWNDCLSNAME;
if(RegisterClass(&wndcls) == 0) return -1;
//メイン・ウィンドウを作成
hWnd = CreateWindow(MYWNDCLSNAME, "My Window",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, CW_USEDEFAULT,
0, 0, hInst, NULL);
if(hWnd == 0) return -2;
//ウィンドウの表示状態を指定する
ShowWindow(hWnd,nCmdShow);
UpdateWindow(hWnd);
//メッセージループ
while(GetMessage(&msg, 0, 0, 0)){
DispatchMessage(&msg);
}
//WM_QUITメッセージのwParamを終了コードにする
return msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg,
WPARAM wParam, LPARAM lParam)
{
switch(uMsg){
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
//自分で処理しないメッセージはWindowsに任せる
return DefWindowProc(hWnd, uMsg, wParam, lParam);
}
本を読み直しても原因がよくわかりません。
どこがいけないのかご指摘いただけるとうれしいです。お願いします。
エラーの内容は
error C2440: '=' : 'const char [14]' から 'LPCWSTR' に変換できません。
error C2664: 'CreateWindowExW' : 2 番目の引数を 'const char [14]' から 'LPCWSTR' に変換できません。
です。
No.4
- 回答日時:
こんにちは。
ついでに此れも。「GetMessage()API」
http://msdn.microsoft.com/ja-jp/library/cc364699 …
//メッセージループ
while(GetMessage(&msg, 0, 0, 0)){
DispatchMessage(&msg);
}
↓
//メッセージループ
while(::GetMessage(&msg, NULL, 0, 0) == TRUE)
{
::TranslateMessage(&msg);
::DispatchMessage(&msg);
}
No.3
- 回答日時:
#3の補足。
要するにWindowsのアプリはUnicode版とANSI版を作成することが出来るのです。
以下を参照
http://www.246.ne.jp/~y-ookubo/program/tips/unic …
No.2
- 回答日時:
> //ウィンドウ・クラス名
> #define MYWNDCLSNAME "MyWindowClass"
を
//ウィンドウ・クラス名
#define MYWNDCLSNAME TEXT("MyWindowClass")
と直す。
> //メイン・ウィンドウを作成
> hWnd = CreateWindow(MYWNDCLSNAME, "My Window",
を
//メイン・ウィンドウを作成
hWnd = CreateWindow(MYWNDCLSNAME, TEXT("My Window"),
と直す。
で良いと思います。
CreateWindow()の第1引数、第2引数は、LPCTSTR型ですよ。
後、使用している本と、質問兄さんが使用している開発環境のバージョンが違ったりするのがあるのかもしれません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで作った新しいウイン...
-
「アイテムは収集されました」...
-
勝手にウィンドウが開いて止ま...
-
皆さん、おはようございます♪ ...
-
ExcelVBAでAPIを使って外部ウイ...
-
検索の画面がでなくなってしま...
-
Vba LongPtrについて教えてくだ...
-
指定したインアクティブウィン...
-
C#でファイル転送プログラムWin...
-
他のアプリケーションの終了処理
-
作成したウインドウのサイズを...
-
最大化と最小化ボタン
-
親ウインドウにあるOKボタンを...
-
Excelの上下を固定したい
-
VC++でタスクバーに表示させな...
-
CTなどでいう,ウィンドウレベ...
-
OutlookでRSSフィードやメモの...
-
[VBA] UserForm を Excel の W...
-
パソコン関連)何度消してもま...
-
非アクティブのウィンドウを最...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで作った新しいウイン...
-
「アイテムは収集されました」...
-
Vba LongPtrについて教えてくだ...
-
検索の画面がでなくなってしま...
-
勝手にウィンドウが開いて止ま...
-
ラジオボタンの初期指定
-
皆さん、おはようございます♪ ...
-
エクセルで1行目から3行目が消...
-
ExcelのBOOKが消えた!
-
[VBA] UserForm を Excel の W...
-
「&HFFFF」「&H1A」とは?
-
Alt+P,Alt+NをPostmessageで送...
-
作成したウインドウのサイズを...
-
最大化と最小化ボタン
-
Excelの上下を固定したい
-
MFC ダイアログ上のID取得につ...
-
ゲームでは結局どっちが良いの?
-
UWSCで特定のChromeのタブをア...
-
ExcelVBAでAPIを使って外部ウイ...
-
他のアプリケーションの終了処理
おすすめ情報