求解Windows编程代码问题(未声明 怎么定义)

#include <Windows.h>
#include <tchar.h>

HWND g_hWnd;

#include <gdiplus.h>
#pragma comment(lib,"gdiplus.lib")
using namespace Gdiplus;
ULONG_PTR g_GdiplusToken;   //GDI+使用标志
Graphics * g_pGraphics;    //画图对象指针
WCHAR g_text[1024] = L"test";  //文字数组

enum SCRAWLTYPE{LINE,RECTANGLE,ELLIPSE};
enum newColor{red,green,blue,white,purple};
static SCRAWLTYPE type = LINE;
static newColor newcolor;

Point g_startPoint(0,0),g_endPoint(100,100);
POINTS begin,end;
int temp = 0;

HMENU g_hPopMenu;
int Game_Init()  //游戏资源的初始化
{
 int x = 0;

 //初始化GDI+图形库
 GdiplusStartupInput gdiplusStartupInput;
 GdiplusStartup(&g_GdiplusToken, &gdiplusStartupInput, NULL);
 g_pGraphics = new Graphics(GetDC(g_hWnd));
 if (g_pGraphics == NULL)
  return 0;

 return 1;
}
void Game_Main() //游戏画图
{
  int x = 0,y = 0,z = 0,s=0,q=0;
 Font * m_pTextFont = new Font(&FontFamily(L"宋体"),25,FontStyleRegular,UnitPixel);
 SolidBrush * m_pTextBrush;
 m_pTextBrush = new SolidBrush(Color(255,255,255,255));
 g_pGraphics->DrawString(g_text,wcslen(g_text),m_pTextFont,PointF(35,50),m_pTextBrush);

 


 switch(newcolor){

   case green:
    y=255;
    break;}
    switch(newcolor){

   case red:
    x=255;
    break;}
   switch(newcolor){

   case blue:
    z=255;
    break;}


 Pen pen(Color(255,x,y,z),1);

 g_pGraphics->DrawLine(&pen,g_startPoint,g_endPoint);
 g_pGraphics->DrawRectangle(&pen,0,0,300,400);
 g_pGraphics->DrawEllipse(&pen,100,200,100,200);
 
 

}

void Game_Shutdown() //释放游戏资源
{
 //释放GDI+图形库
 delete g_pGraphics;
 GdiplusShutdown(g_GdiplusToken);

}

LRESULT CALLBACK WinProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
 //wstring str = std::wstring(g_text);
 POINTS pt;
 int len = wcslen(g_text);
 switch (message)
 {
 case WM_COMMAND:
  switch(LOWORD(wParam))
  {
  case  ID_STYLE_LINE:
   type=LINE;
      break;
  case  ID_STYLE_RECTANGLE:
     type=RECTANGLE;
     break;
  case  ID_STYLE_ELLIPSE:
     type=ELLIPSE;
     break;


  }
  ::PostQuitMessage(0);
  break;
 case  WM_CHAR:
  switch(wp)
  {
  case 56:
   if (len == 0) 
   {
    return 0;
   }
   g_text[len-1] = '\0';
   break;
  default:
   if (len == 1024)
   {
    return 0;
   }
   g_text[len] = char(wp);

  }
  break;
 case  WM_KEYDOWN:
  switch(wParam)
  {
  case VK_ESCAPE:
   ::PostQuitMessage(0);
   break;
  case '7':
   type = RECTANGLE;
   ::InvalidateRect(hwnd,NULL,true);
   break;
  case '8':
   type = LINE;
   ::InvalidateRect(hwnd,NULL,true);
   break;
  case 'A':
   newcolor=green;
   InvalidateRect(hwnd,NULL,true);
   break;
        case 'B':
   newcolor=blue;
   InvalidateRect(hwnd,NULL,true);
   break;
  case 'W':
   newcolor=red;
   InvalidateRect(hwnd,NULL,true);
   break;

  }
  break;
 case  WM_DESTROY:
  PosQuitMessage(0);//程序结束
  //Game_Main();
  break;

 case WM_LBUTTONDOWN:
        pt.x = LOWORD(lParam);
  pt.y = HIWORD(lParam);
  ClientToScreen(hWnd,&pt);
  TrackPopupMenu(g_hPopMenu,TPM_LEFTBUTTON,pt.x,pt.y,0,hWnd,0);
  break;
 case WM_LBUTTONUP:

  end = MAKEPOINTS(lParam);
  if (end.x != begin.x && end.y != begin.y)
  {
   g_startPoint.X = begin.x;
   g_startPoint.Y = begin.y;
   g_endPoint.X = end.x;
   g_endPoint.Y = end.y;
  }
  ::InvalidateRect(hWnd,NULL,true);
  break;
 }
 return DefWindowProc(hwnd,message, wp, lp);
}
int WINAPI WinMain(HINSTANCE histance,HINSTANCE hprevinst,LPSTR lpcmdine,int ncmdshow)
{
 WNDCLASS wc;
 wc.cbClsExtra = 0;
 wc.cbWndExtra = 0;
 wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
 wc.hCursor = LoadCursorFromFile(L"资源/cursor/attack.cur");
 wc.hIcon = NULL;
 wc.hInstance = hinstance;
 wc.lpfnWndProc = WinProc;
 wc.lpszClassName = L"mygame";
 wc.lpszMenuName = MAKEINTRESOURCE(IDR_MENU1);//窗口菜单
 wc.style = CS_HREDRAW | CS_VREDRAW;
 ::RegisterClass(&wc);
 g_hWnd = CreateWindow(L"mygame",L"游戏窗口",WS_OVERLAPPEDWINDOW,0,0,800,600,NULL,NULL,hi,NULL);
 ShowWindow(g_hWnd,SW_SHOW);

 if (Game_Init() == 0)
 {
  MessageBox(NULL,L"游戏初始化失败",L"错误",MB_OK);
  return 0;
 }
 HMENU hMenu=LoadMenu(hinstance,MAKEINTRESOURCE(IDR_MENU2));
 g_hPopMenu=GetSubMenu(hWnd,0);

 MSG msg;//定义一个消息对象
 HACCEL hAcce=LoadAccelerator(hinstance,MAKEINTRESOURCE(IDR_ACCELERATOR1));//进入消息循环

 while (true)
 {
  if (PeekMessage(&msg,NULL,0,0,PM_REMOVE))//接收系统消息(&msg为MSG类型的信息结构体,NULL是窗口句柄,0,是表示接收所有信息的窗口
  {

   if(!TranslateAccelerator(g_hWnd,hAcce,&msg))
   {

   if (msg.message == WM_QUIT)
  
    break;
  
   TranslateMessage(&msg);//把键盘等码转换为系统识别的虚拟键码信息
   DispatchMessage(&msg);//转到消息的回调函数处理消息
  }
  }
  else
   Sleep(100);
  Game_Main();
 }
 Game_Shutdown();
}

 

 

求高手把修改好的代码发给我

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值