開発環境はMicrosoft Visual Studio 2010 Expressで以下のソースでウインドウを表示したいだけなのですがうまく行きません。
1>------ ビルド開始: プロジェクト: d3d, 構成: Debug Win32 ------
1> D3D.cpp
1>D3D.obj : error LNK2019: 未解決の外部シンボル "long __stdcall WinProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WinProc@@YGJPAUHWND__@@IIJ@Z) が関数 _WinMain@16 で参照されました。
1>C:\Users\zin\Documents\Visual Studio 2010\Projects\d3d\Debug\d3d.exe : fatal error LNK1120: 外部参照 1 が未解決です。
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========
と表示されてビルドができません。
プロシージャのリンクに失敗しているのは分かるのですが解決方法がわかりません。
#include <Windows.h>
#define W_W 300
#define W_H 300
LRESULT CALLBACK WinProc(HWND hWnd,UINT UMsg,WPARAM Wparam,LPARAM Lparam);
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPlnstance,PSTR szCmdLine, int iCmdShow)
{
HWND hWnd;
MSG Msg;
Msg.message = 0;
WNDCLASSEX Wndclass;
Wndclass.cbSize = sizeof(Wndclass);
Wndclass.style = CS_HREDRAW | CS_VREDRAW;
Wndclass.lpfnWndProc = WinProc;
Wndclass.cbClsExtra = 0;
Wndclass.cbWndExtra = 0;
Wndclass.hInstance = hInstance;
Wndclass.hIcon = LoadIcon(NULL,IDI_APPLICATION);
Wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
Wndclass.lpszMenuName = NULL;
Wndclass.lpszClassName = "test";
RegisterClassEx(&Wndclass);
hWnd = CreateWindow("a","b",WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,W_W,W_H,NULL,NULL,hInstance,NULL);
ShowWindow(hWnd,iCmdShow);
UpdateWindow(hWnd);
while(Msg.message != WM_QUIT){
if(PeekMessage(&Msg,NULL,0U,0U,PM_REMOVE)){
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
}
UnregisterClass("test",hInstance);
return 0;
}
LRESULT CALLBACK WndProc(HWND hWnd,UINT UMsg, WPARAM WParam, LPARAM lParam)
{
switch(UMsg){
case WM_DESTROY:
PostQuitMessage(0) ;
return 0;
}
return DefWindowProc (hWnd, UMsg, WParam, lParam);
}