アプリ版:「スタンプのみでお礼する」機能のリリースについて

プログラミング初心者です。
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' に変換できません。

です。

A 回答 (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);
}
    • good
    • 0

#3の補足。


要するにWindowsのアプリはUnicode版とANSI版を作成することが出来るのです。
以下を参照
http://www.246.ne.jp/~y-ookubo/program/tips/unic …
    • good
    • 0

> //ウィンドウ・クラス名


> #define MYWNDCLSNAME "MyWindowClass"

//ウィンドウ・クラス名
#define MYWNDCLSNAME TEXT("MyWindowClass")
と直す。

> //メイン・ウィンドウを作成
> hWnd = CreateWindow(MYWNDCLSNAME, "My Window",

//メイン・ウィンドウを作成
hWnd = CreateWindow(MYWNDCLSNAME, TEXT("My Window"),
と直す。

で良いと思います。

CreateWindow()の第1引数、第2引数は、LPCTSTR型ですよ。

後、使用している本と、質問兄さんが使用している開発環境のバージョンが違ったりするのがあるのかもしれません。
    • good
    • 0

文字コードがUNICODEだからだと思います。


プロジェクトのプロパティで文字コードをマルチバイトに直してみてください
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!