麻烦帮我看看这个程序(书上的例子)是怎么回事,编译总是通不过
麻烦哪位高手帮我看看,编译通不过呀。#include<iostream.h>
LRESULT CALLBACK WndProc(HWND,UNIT,WPARAM,LPARAM);
char szClassName[]="windowclass";
char szAppTitle[]="API 建立窗口实例";
INT PASCAL WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpszCmdParam,INT nCmdShow)
{
HWND hMainWnd;
MSG msg;
WNDCLASS winclass;
if(!hPrevInstance)
//判断是否已有应用程序的实例存在运行,给窗口结构体的数据成员赋值来规定所要建立的窗口的特征
{
winclass.style=CS_HREDRAW|CS_AVERDRAW;//窗口风格
winclass.lpfnWndProc=WndProc; //窗口的消息处理函数
winclass.cbClsExtra=0; //窗口类无扩展
winclass.cbWndExtra=0; //窗口实例无扩展
winclass.hInstance=hInstance; //当前应用程序实例句柄
winclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);//窗口最小化图标为缺省图标
winclass.hCursor=LoadCursor(NULL,IDC_ARROW);//窗口采用箭头光标
winclass.hbrBackground=(HBRUSH)GetStockObject(LTGRAY_BRUSH);//窗口背景色为浅灰色
winclass.lpszMenuName=NULL; //无窗口菜单
winclass.lpszClassName=szClassName; //给窗口结构体命名
RegisterClass(&winclass);
}
//下面用CreateWindow()函数建立窗口,并返回所建立的窗口句柄
hMainWnd=CreateWindow(
szClassName, //窗口结构体名称
szAppTitle, //窗口的标题
WS_OVERLAPPEDWINDOW, //窗口风格为可重叠窗口
//下面4个参数代表窗口左上角x,y坐标和窗口的宽度以及高度,都使用缺省值
CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,
//下面参数分别为父窗口句柄、窗口菜单句柄、应用程序实例句柄和附加参数
NULL,NULL,hInstance,NULL);
ShowWindow(hMainWnd,SW_SHOWNORMAL);
UpdateWindow(hMainWnd);
while(GetMessage(&msg,NULL,0,0)) //获取消息,填充msg结构体
{
TranslateMessage(&msg); //翻译键盘消息
DispatchMessage(&msg); //向窗口函数发送消息,让窗口函数处理
}
return msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hMainWnd,UNIT message,WPARAM wParam,LPARAM lParam)
//窗口函数的定义
{
HDC hdc; //设备描述表
PAINTSTRUCT ps; //刷新区域
RECT rect; //矩形结构
char messageleft[]="按下了鼠标左键!";
char messageright[]="按下了鼠标右键!";
switch(message)
{
case WM_PAINT:
{
hdc=BeginPaint(hMainWnd,&ps);
GetClientRect(hMainWnd,&rect);
DrawText(hdc,TEXT("使用API建立Windows窗口实例!"),-1,&rect,DT_SINGLELINE|
DT_CENTER|DT_Visual C++ENTER);
EndPaint(hMainWnd,&ps);
break;
}
case WM_RBUTTONDOWN:
{
MessageBox(GetFocus(),messageright,"API建立窗口实例!",MB_OK|MB_ICONINFORMATION);
break;
}
case WM_LBUTTONDOWN:
{
MessageBox(GetFocus(),messageleft,"API建立窗口实例",MB_OK|MB_ICONINFORMATION);
break;
}
case WM_DESTROY:
{
PostQuitMessage(0);
return 0;
}
default:
break;
}
return DefWindowProc(hMainWnd,message,wParam,lParam);
}
[[it] 本帖最后由 yc0708 于 2008-11-30 18:36 编辑 [/it]]