在学API时,练习时有一个错误,总是检测不出来,帮忙下呗,谢谢!

Eveilei 2009-10-15 12:45:46
# include <windows.h>
LRESULT CALLBACK WndProc (HWND,UINT,WPARAM,LPARAM);
int WINAPI WinMain (HINSTANCE hInstance,HINSTANCE hPrevInstance,
PSTR szCMDLine,int iCmdShow)

{
static TCHAR szAppName[] = TEXT ("Bezier");
HWND hwnd;
MSG msg;
WNDCLASS wndclass;
wndclass.style =CS_HREDRAW | CS_VREDRAW;
wndclass.lpfnWndProc = WndProc ;
wndclass.cbClsExtra =0;
wndclass.cbWndExtra =0;
wndclass.hInstance =hInstance;
wndclass.hIcon =LoadIcon(NULL,IDI_APPLICATION);
wndclass.hCursor =LoadCursor(NULL,IDC_ARROW);
wndclass.hbrBackground =(HBRUSH) GetStockObject (WHITE_BRUSH);
wndclass.lpszMenuName =NULL;
wndclass.lpszClassName =szAppName;

if (!RegisterClass(&wndclass))
{
MessageBox (NULL,TEXT("This program requires Windows NT !"),
szAppName,MB_ICONERROR);
return 0;
}
hwnd =CreateWindow (szAppName,
TEXT ("Bezier Splines"),
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL);
ShowWindow (hwnd,iCmdShow);
UpdateWindow (hwnd);
while (GetMessage (&msg,NULL,0,0))
{
TranslateMessage (&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
void DrawBezier(HDC hdc,POINT apt[])
{
PolyBezier(hdc,apt,4);
MoveToEx(hdc,apt[0].x,apt[0].y,NULL);
LineTo (hdc,apt[1].x,apt[1].y);
MoveToEx(hdc,apt[2].x,apt[2].y,NULL);
LineTo (hdc,apt[3].x,apt[3].y);
}
LRESULT CALLBACK WndProc (HWND hwnd,UINT message,WPARAM wParam,LPARAM IParam)
{
static POINT apt[4];
HDC hdc;
int cxClient,cyClient;
PAINTSTRUCT ps;

switch (message)
{
case WM_SIZE:
cxClient = LOWORD(IPararm);
cyClient = HIWORD(IPararm);
apt[0].x = cxClient/4;
apt[0].y = cyClient/2;
apt[1].x = cxClient/2;
apt[1].y = cyClient/4;
apt[2].x = cxClient/2;
apt[2].y = 3*cyClient/4;
apt[3].x = 3*cxClient/4;
apt[3].y = cyClient/2;
return 0;
case WM_LBUTTONDOWN:
case WM_RBUTTONDOWN:
case WM_MOUSEMOVE:
if(wParam & MK_LBUTTON ||wParam & MK_RBUTTON)
{
hdc = GetDC(hwnd);
SelectObject(hdc,GetStockObject(WHITE_PEN));
DrawBezier(hdc,apt);

if(wParam & MK_LBUTTON)
{
apt[1].x = LOWORD(IParam);
apt[1].y = HIWORD(IParam);
}
if(wParam & MK_RBUTTON)
{
apt[2].x = LOWORD(IParam);
apt[2].y = HIWORD(IParam);
}

SelectObject(hdc,GetStockObject(BLACK_PEN));
DrawBezier(hdc,apt);
ReleaseDC(hwnd,hdc);
}
return 0;


case WM_PAINT:
InvalidateRect(hwnd,NULL,TRUE);
hdc = BeginPaint(hwnd,&ps);
DrawBezier(hdc,apt);
EndPaint(hwnd,&ps);
return 0;

case WM_DESTROY:
PostQuitMessage (0);
return 0;
}
return DefWindowProc (hwnd,message,wParam,IParam);
}

错误代码:D:\MFC\BEZIER\BEZIER.c(66) : error C2065: 'IPararm' : undeclared identifier

实在找不出来了,帮忙看下了,谢了!

我想多了解些VC++6.0编译器的用法以及一些常见错误调试方法,哪里有这方面的书或者教程啊,知道的告诉下呗,谢谢了!
...全文
135 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
wanjingwei 2009-10-15
  • 打赏
  • 举报
回复
楼主要会看错误提示呀,都写很清楚了
loveour 2009-10-15
  • 打赏
  • 举报
回复
wParam的w本意是word,在16位版本的windows中这是一个word,lParam的l本意是long,这个参数当时是32位。只是,到了32位windows两个都是32位了。通常,w传递句柄和参数,l传递指针。
f2378 2009-10-15
  • 打赏
  • 举报
回复
cxClient = LOWORD(IPararm);
cyClient = HIWORD(IPararm);
应该是IParam
la_feng 2009-10-15
  • 打赏
  • 举报
回复
# include <windows.h> 
LRESULT CALLBACK WndProc (HWND,UINT,WPARAM,LPARAM);
int WINAPI WinMain (HINSTANCE hInstance,HINSTANCE hPrevInstance,
PSTR szCMDLine,int iCmdShow)

{
static TCHAR szAppName[] = TEXT ("Bezier");
HWND hwnd;
MSG msg;
WNDCLASS wndclass;
wndclass.style =CS_HREDRAW | CS_VREDRAW;
wndclass.lpfnWndProc = WndProc ;
wndclass.cbClsExtra =0;
wndclass.cbWndExtra =0;
wndclass.hInstance =hInstance;
wndclass.hIcon =LoadIcon(NULL,IDI_APPLICATION);
wndclass.hCursor =LoadCursor(NULL,IDC_ARROW);
wndclass.hbrBackground =(HBRUSH) GetStockObject (WHITE_BRUSH);
wndclass.lpszMenuName =NULL;
wndclass.lpszClassName =szAppName;

if (!RegisterClass(&wndclass))
{
MessageBox (NULL,TEXT("This program requires Windows NT !"),
szAppName,MB_ICONERROR);
return 0;
}
hwnd =CreateWindow (szAppName,
TEXT ("Bezier Splines"),
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL);
ShowWindow (hwnd,iCmdShow);
UpdateWindow (hwnd);
while (GetMessage (&msg,NULL,0,0))
{
TranslateMessage (&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
void DrawBezier(HDC hdc,POINT apt[])
{
PolyBezier(hdc,apt,4);
MoveToEx(hdc,apt[0].x,apt[0].y,NULL);
LineTo (hdc,apt[1].x,apt[1].y);
MoveToEx(hdc,apt[2].x,apt[2].y,NULL);
LineTo (hdc,apt[3].x,apt[3].y);
}
LRESULT CALLBACK WndProc (HWND hwnd,UINT message,WPARAM wParam,LPARAM IParam)
{
static POINT apt[4];
HDC hdc;
int cxClient,cyClient;
PAINTSTRUCT ps;

switch (message)
{
case WM_SIZE:
cxClient = LOWORD(IParam);
cyClient = HIWORD(IParam);
apt[0].x = cxClient/4;
apt[0].y = cyClient/2;
apt[1].x = cxClient/2;
apt[1].y = cyClient/4;
apt[2].x = cxClient/2;
apt[2].y = 3*cyClient/4;
apt[3].x = 3*cxClient/4;
apt[3].y = cyClient/2;
return 0;
case WM_LBUTTONDOWN:
case WM_RBUTTONDOWN:
case WM_MOUSEMOVE:
if(wParam & MK_LBUTTON ||wParam & MK_RBUTTON)
{
hdc = GetDC(hwnd);
SelectObject(hdc,GetStockObject(WHITE_PEN));
DrawBezier(hdc,apt);

if(wParam & MK_LBUTTON)
{
apt[1].x = LOWORD(IParam);
apt[1].y = HIWORD(IParam);
}
if(wParam & MK_RBUTTON)
{
apt[2].x = LOWORD(IParam);
apt[2].y = HIWORD(IParam);
}

SelectObject(hdc,GetStockObject(BLACK_PEN));
DrawBezier(hdc,apt);
ReleaseDC(hwnd,hdc);
}
return 0;


case WM_PAINT:
InvalidateRect(hwnd,NULL,TRUE);
hdc = BeginPaint(hwnd,&ps);
DrawBezier(hdc,apt);
EndPaint(hwnd,&ps);
return 0;

case WM_DESTROY:
PostQuitMessage (0);
return 0;
}
return DefWindowProc (hwnd,message,wParam,IParam);
}
cxClient = LOWORD(IPararm);
cyClient = HIWORD(IPararm); 跟你传的参数IParam不同,自己对照吧
www_adintr_com 2009-10-15
  • 打赏
  • 举报
回复
'IPararm' 拼写错误 IParam
exy337 2009-10-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 adlay 的回复:]
'IPararm'  拼写错误 IParam
[/Quote]
同上
Eveilei 2009-10-15
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 mstlq 的回复:]
楼主请先把英语学好
[/Quote]
好的。
我好长时间没学英语了,都退步了。大二下学期才过的英语六级。
mstlq 2009-10-15
  • 打赏
  • 举报
回复
楼主请先把英语学好

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧