当我尝试编译非常简单的程序时,我不断收到以下错误:
对WindowProc的未定义引用(HWND __ *,unsigned int,unsigned int,long)@ 16'
我没有看到问题,这让我发疯了!
#include <iostream>
#include <windows.h>
using namespace std;
int sizeX = 500;
int sizeY = 500;
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
char szClassName[ ] = "WindowsApp";
int WINAPI WinMain(
HINSTANCE hThisInstance,
HINSTANCE hPrevInstance,
LPSTR lpszArgument,
int nFunsterStil
)
{
HWND hwnd;
MSG messages;
WNDCLASSEX wincl;
wincl.hInstance = hThisInstance;
wincl.lpszClassName = szClassName;
wincl.lpfnWndProc = WindowProc;
wincl.style = CS_DBLCLKS;
wincl.cbSize = sizeof(WNDCLASSEX);`
wincl.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wincl.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
wincl.hCursor = LoadCursor(NULL, IDC_ARROW);
wincl.lpszMenuName = NULL;
wincl.cbClsExtra = 0;
wincl.cbWndExtra = 0;
wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;
if(!RegisterClassEx(&wincl))
return 0;
hwnd = CreateWindowEx(
0,
szClassName,
"Windows App",
WS_SYSMENU,
CW_USEDEFAULT,
CW_USEDEFAULT,
sizeX,
sizeY,
HWND_DESKTOP,
NULL,
hThisInstance,
NULL
);
}
代码有什么问题?
答案 0 :(得分:1)
您没有提供WindowProc()
的定义。你声明了它,并将它分配给你的WNDCLASSEX
,现在你必须实际实现它的身体,例如:
#include <iostream>
#include <windows.h>
using namespace std;
int sizeX = 500;
int sizeY = 500;
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
const char szClassName[ ] = "WindowsApp";
int WINAPI WinMain(
HINSTANCE hThisInstance,
HINSTANCE hPrevInstance,
LPSTR lpszArgument,
int nFunsterStil
)
{
HWND hwnd;
MSG messages;
WNDCLASSEX wincl;
wincl.hInstance = hThisInstance;
wincl.lpszClassName = szClassName;
wincl.lpfnWndProc = WindowProc;
wincl.style = CS_DBLCLKS;
wincl.cbSize = sizeof(WNDCLASSEX);`
wincl.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wincl.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
wincl.hCursor = LoadCursor(NULL, IDC_ARROW);
wincl.lpszMenuName = NULL;
wincl.cbClsExtra = 0;
wincl.cbWndExtra = 0;
wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;
if(!RegisterClassEx(&wincl))
return 0;
hwnd = CreateWindowEx(
0,
szClassName,
"Windows App",
WS_SYSMENU,
CW_USEDEFAULT,
CW_USEDEFAULT,
sizeX,
sizeY,
HWND_DESKTOP,
NULL,
hThisInstance,
NULL
);
// message loop here ...
return 0;
}
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
// your code here ...
return DefWindowProc(hwnd, uMsg, wParam, lParam);
}
有关详细信息,请参阅MSDN的文档: