绘制像素点

// demo4_1

//INCLUDES
#define WIN32_LEAN_MEAN


#include<windows.h>
#include<windowsx.h>
#include<mmsystem.h>
#include<stdio.h>
#include<stdlib.h>
#include<math.h>

//DEFINES

#define WINDOW_CLASS_NAME "WINCLASS1"

#define WINDOW_WIDTH 400
#define WINDOW_HEIGHT 300

//MACROS//

#define KEYDOWN(vk_code) ((GetAsyncKeyState(vk_code)&0x8000)?1:0)
#define KEYUP(vk_code)   ((GetAsyncKeyState(vk_code)&0x8000)?0:1)
/*#define KEYDOWN(vk_code) ((GetAsyncKeyState(vk_code) & 0x8000) ? 1 : 0)
#define KEYUP(vk_code)   ((GetAsyncKeyState(vk_code) & 0x8000) ? 0 : 1)*/

//GLOBALS
HWND main_window_handle=NULL;
HINSTANCE hinstance_app=NULL;
char buffer[80];
//functions

LRESULT CALLBACK WindowProc(HWND hwnd,
       UINT msg,
       WPARAM wparam,
       LPARAM lparam)
{
 PAINTSTRUCT ps;
 HDC  hdc;
 char buffer[80];

 switch(msg)
 {
 case WM_CREATE:
  {
   return (0);
  }break;
 case WM_PAINT:
  {
   hdc=BeginPaint(hwnd,&ps);

   EndPaint(hwnd,&ps);

   return (0);
  }break;
 case WM_DESTROY:
  {
   PostQuitMessage(0);
   return (0);

  }break;

 default:break;

 }

 return (DefWindowProc(hwnd,msg,wparam,lparam));
}

int WINAPI WinMain(HINSTANCE hinstance,
       HINSTANCE hprevinstance,
       LPSTR lpcmdline,
       int ncmdshow
       )
{
 WNDCLASSEX winclass;
 HWND hwnd;
 MSG msg;
 HDC hdc;
 winclass.cbSize=sizeof(WNDCLASSEX);
 winclass.style=CS_DBLCLKS|CS_OWNDC|CS_HREDRAW|CS_VREDRAW;
 winclass.lpfnWndProc=WindowProc;
 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(BLACK_BRUSH);

 winclass.lpszMenuName=NULL;
 winclass.lpszClassName=WINDOW_CLASS_NAME;
 winclass.hIconSm=LoadIcon(NULL,IDI_APPLICATION);

 hinstance_app=hinstance;

 if(!RegisterClassEx(&winclass))
  return(0);

 //create the window
 if(!(hwnd=CreateWindowEx(
   NULL,
   WINDOW_CLASS_NAME,
   "Pixel Plotting Demo",
   WS_OVERLAPPEDWINDOW | WS_VISIBLE,
   0,0,
   WINDOW_WIDTH,
   WINDOW_HEIGHT,
   NULL,
   NULL,
   hinstance,
   NULL
  )))
  return (0);

 //save main window handle
 main_window_handle=hwnd;

 //enter main event loop ,but this time we use PeekMessage()
 //instead of GetMessage() to retrieve messages

 while(TRUE)
 {
  //test if there is a message in queue,if so get it
  if(PeekMessage(&msg,NULL,0,0,PM_REMOVE))
  {
   //test if this is a quit
   if(msg.message==WM_QUIT)
    break;
   //translate any accelaerator keys
   TranslateMessage(&msg);

   //send the message to the window proc
   DispatchMessage(&msg);
  }//end if

  hdc=GetDC(hwnd);

  //draw 1000 pixels
  for(int index=0;index<1000;index++)
  {
   //get random position
   int x=rand()%400;
   int y=rand()%300;

   COLORREF color=RGB(rand()%255,rand()%255,rand()%255);
   SetPixel(hdc,x,y,color);

  }//end for index

  //release the dc

  ReleaseDC(hwnd,hdc);

  //main game processing goes here
 /* if(KEYDOWN(VK_ESCAPE))
   SendMessage(hwnd,WM_CLOSE,0,0);*/
  if (KEYDOWN(VK_ESCAPE))
          SendMessage(hwnd, WM_CLOSE, 0,0);

 

 }
 return (msg.wParam);
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值