⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 winview.c

📁 C#一个实例源代码
💻 C
字号:
/*---------------------------------------
    WinView.c
  ---------------------------------------*/

#include <windows.h>
#include "resource.h"
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                    PSTR szCmdLine, int iCmdShow)
{
     static TCHAR szAppName[] = TEXT ("WinView") ;
     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  = szAppName ;
     wndclass.lpszClassName = szAppName ;
     
     if (!RegisterClass (&wndclass))
     {
          MessageBox (NULL, TEXT ("Program requires Windows NT!"), 
                      szAppName, MB_ICONERROR) ;
          return 0 ;
     }
     
     hwnd = CreateWindow (szAppName, TEXT ("Window And Viewport"),
                          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 ;
}


LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	   
     HDC          hdc ;
     static int          cxClient, cyClient ;
     PAINTSTRUCT  ps ;
	 HANDLE    hPen,hPenPre;
	 static     int nMode=1;

	 hPen=CreatePen(PS_SOLID,10,RGB(255,0,0));


     
     switch (message)
     {
     case WM_SIZE:
          cxClient = LOWORD (lParam) ;
          cyClient = HIWORD (lParam) ;                             
          return 0 ;
	 case WM_COMMAND:
		 switch(LOWORD(wParam))
		 {
		 case IDM_MODE1:
			 nMode=1;
			 break;

		 case IDM_MODE2:
			 nMode=2;
			 break;
		 case IDM_MODE3:
			 nMode=3;
			 break;
		 case IDM_MODE4:
			 nMode=4;
			 break;
		 case IDM_MODE5:
			 nMode=5;
			 break;
		 case IDM_MODE6:
			 nMode=6;
			 break;
		 case IDM_MODE7:
			 nMode=7;
			 break;




		 }
		 InvalidateRect(hwnd,NULL,TRUE);
		 return 0;

    
    
          
     case WM_PAINT:
          
          
          hdc = BeginPaint (hwnd, &ps) ;
		  hPenPre=SelectObject(hdc,hPen);
		  switch(nMode)
		  {
		  case 1:
		  Ellipse(hdc,-cxClient,-cyClient,cxClient,cyClient);
		  MoveToEx(hdc,0,0,NULL);
		  LineTo(hdc,0,50);
		  MoveToEx(hdc,0,0,NULL);
		  LineTo(hdc,50,0);

		  break;

		  case 2:
		  Ellipse(hdc,-400,-330,400,300);
		  MoveToEx(hdc,0,0,NULL);
		  LineTo(hdc,0,50);
		  MoveToEx(hdc,0,0,NULL);
		  LineTo(hdc,50,0);

		  break;

		  case 3:
		  SetViewportOrgEx(hdc,cxClient/2,cyClient/2,NULL);
		  Ellipse(hdc,-cxClient/2,-cyClient/2,cxClient/2,cyClient/2);
		  MoveToEx(hdc,0,-50,NULL);
		  LineTo(hdc,0,50);
		  MoveToEx(hdc,-50,0,NULL);
		  LineTo(hdc,50,0);

		  break;
		  case 4:
		  SetWindowOrgEx(hdc,-cxClient/2,-cyClient/2,NULL);
		  Ellipse(hdc,-cxClient/2,-cyClient/2,cxClient/2,cyClient/2);
		  MoveToEx(hdc,0,-50,NULL);
		  LineTo(hdc,0,50);
		  MoveToEx(hdc,-50,0,NULL);
		  LineTo(hdc,50,0);
		  break;

		  case 5:
		  SetViewportOrgEx(hdc,cxClient/2,cyClient/2,NULL);
		  SetWindowOrgEx(hdc,-cxClient/2,-cyClient/2,NULL);
		  Ellipse(hdc,-cxClient/2,-cyClient/2,cxClient/2,cyClient/2);
		  MoveToEx(hdc,0,-50,NULL);
		  LineTo(hdc,0,50);
		  MoveToEx(hdc,-50,0,NULL);
		  LineTo(hdc,50,0);

		  break;
		  case 6:
		  SetMapMode(hdc,MM_ISOTROPIC);
		  SetWindowExtEx(hdc,800,600,NULL);
		  SetViewportExtEx(hdc,cxClient,-cyClient,NULL);
		  SetViewportOrgEx(hdc,cxClient/2,cyClient/2,NULL);
		  Ellipse(hdc,-400,-300,400,300);
		  MoveToEx(hdc,0,-50,NULL);
		  LineTo(hdc,0,50);
		  MoveToEx(hdc,-50,0,NULL);
		  LineTo(hdc,50,0);

		  break;
		  case 7:
		  SetMapMode(hdc,MM_ANISOTROPIC);
		  SetWindowExtEx(hdc,800,600,NULL);
		  SetViewportExtEx(hdc,cxClient,-cyClient,NULL);
		  SetViewportOrgEx(hdc,cxClient/2,cyClient/2,NULL);
		  Ellipse(hdc,-400,-300,400,300);
		  MoveToEx(hdc,0,-50,NULL);
		  LineTo(hdc,0,50);
		  MoveToEx(hdc,-50,0,NULL);
		  LineTo(hdc,50,0);

		  break;




		  }
		  SelectObject(hdc,hPenPre);
          EndPaint (hwnd, &ps) ;
          return 0 ;
          
     case WM_DESTROY:

          PostQuitMessage (0) ;
          return 0 ;
     }
     return DefWindowProc (hwnd, message, wParam, lParam) ;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -