为什么这段代码粘贴进c++编译器不能运行

#include<windows.h>LRESULTCALLBACKWndProc(HWND,UINT,WPARAM,LPARAM);intPASCALWinMain(H... #include <windows.h>

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

int PASCAL WinMain(
HINSTANCE hInstance, // 应用程序的实例句柄
HINSTANCE hPrevInstance, // 该应用程序前一个实例的句柄
LPSTR lpszCmdLine, // 命令行参数串
int nCmdShow) // 程序在初始化时如何显示窗口
{
char szAppName[] = "Window";
HWND hwnd;
MSG msg;
WNDCLASS wndclass;
if (!hPrevInstance) {
// 该实例是程序的第一个实例,注册窗口类
wndclass.style = CS_VREDRAW | CS_HREDRAW;
wndclass.lpfnWndProc = WndProc;
wndclass.cbClsExtra = 0;
wndclass.cbWndExtra = 0;
wndclass.hInstance = hInstance;
wndclass.hIcon = LoadIcon(hInstance, IDI_APPLICATION);
wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
wndclass.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
wndclass.lpszMenuName = NULL;
wndclass.lpszClassName = szAppName;

if (!RegisterClass(&wndclass))
// 如果注册失败
return FALSE;
}

// 对每个实例,创建一个窗口对象
hwnd = CreateWindow(
szAppName,
"Sample Program",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL);

ShowWindow(hwnd, nCmdShow);
UpdateWindow(hwnd);

while(GetMessage(&msg, NULL, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}

return msg.wParam;
}
为什么我加了wndproc的实例后还是运行不了
展开
 我来答
635976510
2010-08-24 · TA获得超过113个赞
知道答主
回答量:43
采纳率:0%
帮助的人:53.3万
展开全部
你这个程序中的回调函数只做了声明,而没有进行定义(就是写内容),系统不知道这个回调函数是干什么的,所以没有办法执行,你要在这个程序后面加上回调函数的定义以实现它的功能,格式像这样:(这只是一种写法)
LRESULT CALLBACK WndProc(
HWND hwnd, // handle to window
UINT uMsg, // message identifier
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
)
{
switch(uMsg)
{
case WM_PAINT:
HDC hDC;
PAINTSTRUCT ps;

hDC=BeginPaint(hwnd,&ps);
TextOut(hDC,0,0,"Cashey's Sample",strlen("Cashey's Sample"));
EndPaint(hwnd,&ps);
break;

case WM_CLOSE:
if(IDYES == MessageBox(hwnd,"是否真的结束?","关闭",MB_YESNO))
{DestroyWindow(hwnd);}
break;

case WM_DESTROY:
PostQuitMessage(0);
break;

default:
return DefWindowProc(hwnd,uMsg,wParam,lParam);
}
return 0;

}
kaladijia
2010-08-24 · TA获得超过4326个赞
知道小有建树答主
回答量:1737
采纳率:25%
帮助的人:522万
展开全部
函数WndProc()只有声明,没有定义。
这是WINDOWS应用程序的必要的函数。

WndProc名称可以任意规定,

但是主函数中
wndclass.lpfnWndProc = WndProc;
必须要有对应的名称。

例如如果定义为Proc()

wndclass.lpfnWndProc = Proc;

我这里有个WndProc ()实例。

LRESULT CALLBACK WndProc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch (uMsg)
{
case WM_CREATE:
return 0 ;
case WM_COMMAND:
switch(LOWORD(wParam))
{
case 40001:
SendMessage(hWnd,WM_CLOSE, (WPARAM)0, (LPARAM)0);
break;
}//switch
break ;

case WM_DESTROY:
PostQuitMessage (0);
return 0 ;
}
return DefWindowProc (hWnd, uMsg, wParam, lParam) ;
}

其中,switch (uMsg)是个消息分支。
每个分支WM_CREATE、WM_COMMAND和WM_DESTROY等是窗口的窗口消息。
具体需要那些窗口消息,建议你找Windows应用程序编程相关内容。

你只要适当的修改即使用。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
machunleilei
2010-08-24 · TA获得超过467个赞
知道小有建树答主
回答量:141
采纳率:0%
帮助的人:185万
展开全部
你应该是工程建错了,应该是Win32 application工程。你看一下
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lleihai123
2010-08-24
知道答主
回答量:38
采纳率:0%
帮助的人:0
展开全部
函数WndProc()只有声明,没有定义。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
信息学选手
2010-08-24 · 超过17用户采纳过TA的回答
知道答主
回答量:335
采纳率:0%
帮助的人:85.7万
展开全部
函数WndProc()只有声明
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式