首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

急用win32项目敲得一段代码,想实现一个人的走路功能,总报错说小弟我的hdc未声明是咋回事

2013-09-05 
急!!!!!!用win32项目敲得一段代码,想实现一个人的走路功能,总报错说我的hdc未声明是怎么回事现在这段代码

急!!!!!!用win32项目敲得一段代码,想实现一个人的走路功能,总报错说我的hdc未声明是怎么回事
现在这段代码只写了up键
这是全局变量:
HINSTANCE hInst;
TCHAR szTitle[MAX_LOADSTRING];
TCHAR szWindowClass[MAX_LOADSTRING];
HBITMAP girl[4],bg;
HDC hdc,mdc,bufdc;
HWND hWnd;
DWORD tPre,tNow;
int num,dir,x,y;

————————————————————————————————————————————————

下面是几段改过的函数

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
int wmId, wmEvent;
PAINTSTRUCT ps;
HDC hdc;

switch (message)
{
case WM_COMMAND:
wmId    = LOWORD(wParam);
wmEvent = HIWORD(wParam);
// 分析菜单选择:
switch (wmId)
{
case IDM_ABOUT:
DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
break;
case IDM_EXIT:
DestroyWindow(hWnd);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
break;
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
// TODO: 在此添加任意绘图代码...
EndPaint(hWnd, &ps);
break;

case WM_KEYDOWN:

switch(wParam){
case VK_UP:

switch(dir){
case 0:
y -= 10;
break;
case 1:
x -=1;
y -=8;
break;
case 2:
x += 2;
y -= 10;
break;
case 3:
x += 2;
y -= 10;
break;
}
if(y<0)
y = 0;
dir = 0;
break;


}
case WM_DESTROY:
int i;
DeleteDC(mdc);
DeleteDC(bufdc);

for(i = 0;i < 4;i ++)
DeleteObject(girl[i]);

DeleteObject(bg);
ReleaseDC(hWnd,hdc);


PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
————————————————————————————————————————————————

BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
   HWND hWnd;
   HBITMAP bmp;


   hInst = hInstance; // 将实例句柄存储在全局变量中

   hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
      CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);



   if (!hWnd)
   {
      return FALSE;
   }
   MoveWindow(hWnd,10,10,640,480,true);
   ShowWindow(hWnd, nCmdShow);
   UpdateWindow(hWnd);

   hdc = GetDC(hWnd);
   mdc = CreateCompatibleDC(hdc);
   bufdc = CreateCompatibleDC(hdc);

   bmp = CreateCompatibleBitmap(hdc,640,480);
   SelectObject(mdc,bmp);

   x = 300;
   y = 250;
   dir = 0;
   num = 0;

   girl[0] = (HBITMAP)LoadImage(NULL,_T("E:\\project\\Ancient_01\\photo\\人物.bmp"),IMAGE_BITMAP,440,180,LR_LOADFROMFILE);
   girl[1] = (HBITMAP)LoadImage(NULL,_T("E:\\project\\Ancient_01\\photo\\人物.bmp"),IMAGE_BITMAP,424,154,LR_LOADFROMFILE);
   girl[2] = (HBITMAP)LoadImage(NULL,_T("E:\\project\\Ancient_01\\photo\\人物.bmp"),IMAGE_BITMAP,480,148,LR_LOADFROMFILE);
   girl[3] = (HBITMAP)LoadImage(NULL,_T("E:\\project\\Ancient_01\\photo\\人物.bmp"),IMAGE_BITMAP,480,148,LR_LOADFROMFILE);

   bg = (HBITMAP)LoadImage(NULL,_T("E:\\project\\Ancient_01\\photo\\地图.bmp"),IMAGE_BITMAP,640,480,LR_LOADFROMFILE);

   MyPaint(hdc);



   return TRUE;
}

————————————————————————————————————————————————


void MyPaint(HDC hdc){

int w,h;

SelectObject(bufdc,bg);
BitBlt(mdc,0,0,640,480,bufdc,0,0,SRCCOPY);

SelectObject(bufdc,girl[dir]);
switch(dir){

case 0:
w = 55;
h = 74;
break;

case 1:
w = 53;
h = 77;
break;

case 2:
w = 60;
h = 74;
break;

case 3:
w = 60;
h = 74;
break;
}

BitBlt(mdc,x,y,w,h,bufdc,num*w,h,SRCAND);
BitBlt(mdc,x,y,w,h,bufdc,num*w,0,SRCPAINT);
BitBlt(hdc,0,0,640,480,mdc,0,0,SRCCOPY);

tPre = GetTickCount();

num++;
if(num = 8)
num = 0;

}
win32


[解决办法]
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
   HWND hWnd;
   HBITMAP bmp;
   HDC hdc;

热点排行