交通论坛

首页 » 交通论坛 » 职场考试 » API可视化程序设计考试题-----鼠标显示程序代码
joycj - 2007-8-13 10:26:00
设计一鼠标应用程序,当按下Ctrl键的同时按下鼠标左键,在窗口中拖动鼠标,可以画一个圆;在按下shift键的同时按下鼠标左键,在窗口中拖动鼠标,可以画一个矩形.

#include<windows.h>
#include<stdlib.h>
#include<string.h>
long WINAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG IParam);
BOOL InitWindowsClass(HINSTANCE hInstance);
BOOL InitWindows(HINSTANCE hInstance, int nCmdShow);
HWND hWndMain;
RECT rectl;
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
    MSG Message;
    if(! InitWindowsClass(hInstance))
    return FALSE;
    if(! InitWindows(hInstance,nCmdShow))
    return FALSE;
    while(GetMessage(&Message,0,0,0))
    {
    TranslateMessage(&Message);
    DispatchMessage(&Message);
    }
    return Message.wParam;
}
long WINAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG IParam)
{
    HDC hDC;
    WORD x,y;
    HCURSOR hCusor;
    static BOOL bCircle=FALSE,bRect=FALSE;
    PAINTSTRUCT ps;
    x=LOWORD(IParam);
    y=HIWORD(IParam);
    switch(iMessage)
    {
    case WM_LBUTTONDOWN:
      if(wParam&MK_CONTROL)
      {
      bCircle=TRUE;
      bRect=FALSE;
      rectl.left=x;
      rectl.top=y;
      }
      else if(wParam&MK_SHIFT)
      {
      bRect=TRUE;
      bCircle=FALSE;
      rectl.left =x;
      rectl.top =y;
      }
      else
      {
      bRect= FALSE;
      bCircle=FALSE;
      }
      break;
    case WM_LBUTTONUP:
      bRect=FALSE;
      bCircle=FALSE;
      break;
      case WM_MOUSEMOVE:
        rectl.right =x;
        rectl.bottom=y;
        if(bRect==TRUE||bCircle==TRUE)
        {
        InvalidateRect(hWnd,NULL,TRUE);
        }
        break;
      case WM_PAINT:
        hDC=BeginPaint(hWnd,&ps);
        if(bCircle==TRUE)
        {
        Ellipse(hDC,rectl.left,rectl.top,rectl.right,rectl.bottom);
        }
        if(bRect ==TRUE)
        {
          Rectangle(hDC,rectl.left,rectl.top,rectl.right,rectl.bottom);
        }
        EndPaint(hWnd,&ps);
        break;
      case WM_DESTROY:
          PostQuitMessage(0);
          return 0;
      default :
          return(DefWindowProc(hWnd,iMessage,wParam,IParam));
    }
    return 0;
}
BOOL InitWindows(HINSTANCE hInstance,int nCmdShow)
{
    HWND hWnd;
    hWnd=CreateWindow("6-5zz",
        "a mouse application programe!",
        WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT,
        0,
        CW_USEDEFAULT,
        0,
        NULL,
        NULL,
        hInstance,
        NULL);
    if(! hWnd)
    return FALSE;
    hWndMain=hWnd;
    ShowWindow(hWnd,nCmdShow);
    UpdateWindow(hWnd);
    return TRUE;
}
BOOL InitWindowsClass(HINSTANCE hInstance)
{
    WNDCLASS WndClass;
    WndClass.cbClsExtra =0;
    WndClass.cbWndExtra =0;
    WndClass.hbrBackground =(HBRUSH)(GetStockObject(WHITE_BRUSH));
    WndClass.hCursor=LoadCursor(NULL,IDC_ARROW);
    WndClass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
    WndClass.hInstance=hInstance;
    WndClass.lpfnWndProc =WndProc;
    WndClass.lpszClassName ="6-4";
    WndClass.lpszMenuName =NULL;
    WndClass.style =0;
    return RegisterClass(&WndClass);
}

chenjunbo8013 - 2007-8-14 14:18:00
好多代码,顶
 1 
查看完整版本: API可视化程序设计考试题-----鼠标显示程序代码