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

DirectXについて学びたくなり「15歳から始めるDirectX9 3Dゲームプログラミング」という本を使って勉強しています。
しかしウインドウを作り×ボタンを押したら終了というプログラムの所でエラーがでています。
どうかエラーの原因を教えてください。

#include<windows.h>
#include<tchar.h>

int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPInst,LPSTR lpCmd, int nCmd){

    WNDCLASSEX wc = {sizeof  (WNDCLASSEX),CS_CLASSDC,MsgProc,0L,0L,hInst,NULL,NULL,NULL,NULL,_T("My Window"),NULL};
    RegisterClassEx(&wc);

    HWND hWnd = CreateWindow(_T("BUTTON"),_T("ウインド名"),WS_OVERLAPPEDWINDOW,100,100,300,300,NULL,NULL,hInst,NULL);
    ShowWindow(hWnd,SW_SHOWDEFAULT);

    MSG msg;
    ZeroMemory(&msg,sizeof(msg));
    while(msg.message!=WM_QUIT){
        if(PeekMessage(&msg,NULL,0L,0L,PM_REMOVE)){
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
    }
    UnregisterClass(_T("My Window"),hInst);
    return 0;
}

エラー内容は
: error C2065: 'MsgProc' : 定義されていない識別子です。
です。

環境は
Microsoft Visual Studio 8
Microsoft DirectX SDK (March 2008)
で、環境設定はきちんとできていると思います。
どうかお願いします。

A 回答 (2件)

同じ本使って勉強してます。

んで、これ前のページ(P87)でMsgProcのコード載ってますよね。これを加えないとだめです。

LRESULT WINAPI MsgProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam)
{
switch(msg)
{
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hWnd,msg,wParam,lParam);
}
    • good
    • 0

 こんばんは。

エラーを呼んで字の如く"MsgProc"が存在しないか、見えていないのでしょう。
 因みに要求されているのはWNDPROC型で、
 LRESULT CALLBACK MsgProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
 と言う関数のポインタです。
    • good
    • 0

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