1. 程式人生 > >使用API,手工生成 Windows應用程式全過程(圖解+文字說明)

使用API,手工生成 Windows應用程式全過程(圖解+文字說明)

  1. 首先找到VC++6.0應用程式圖示,雙機開啟VC++6.0。





  2. 在VC選單欄,選擇“File"選單。


  3. 選擇“NEW“選單項,開啟”NEW“對話方塊。


  4. 如上對話方塊所示,選擇”Project“欄,選中"Win32 Application",在”Project Name“中輸入工程名,選擇好儲存地址。然後單擊”OK“。



  5. 彈出如上對話方塊,選擇”An empty project“,然後單擊”Finish“。
  6. 此時進入編輯介面。選擇"FileView"檢視,展開”Source Files“資料夾,選中”windows.cpp“.(此時是你定義的,工程名.cpp),點選開啟此cpp檔案。

  7. 將檔案中的原有內容刪除。插入如下程式碼。
    // windows.cpp : Defines the entry point for the application.
    //
    #include "stdafx.h"
    #include <windows.h>
    #include <stdio.h>
    
    LRESULT CALLBACK WinSunProc(
      HWND hwnd,      // handle to window
      UINT uMsg,      // message identifier
      WPARAM wParam,  // first message parameter
      LPARAM lParam   // second message parameter
    );
    
    int WINAPI WinMain(
      HINSTANCE hInstance,      // handle to current instance
      HINSTANCE hPrevInstance,  // handle to previous instance
      LPSTR lpCmdLine,          // command line
      int nCmdShow              // show state
    )
    {	WNDCLASS wndcls;
    	wndcls.cbClsExtra=0;
    	wndcls.cbWndExtra=0;
    	wndcls.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);
    	wndcls.hCursor=LoadCursor(NULL,IDC_CROSS);
    	wndcls.hIcon=LoadIcon(NULL,IDI_ERROR);
    	wndcls.hInstance=hInstance;
    	wndcls.lpfnWndProc=WinSunProc;
    	wndcls.lpszClassName="Computer2016";
    	wndcls.lpszMenuName=NULL;
    	wndcls.style=CS_HREDRAW | CS_VREDRAW;
    	RegisterClass(&wndcls);	//註冊視窗類
    	HWND hwnd;
    	hwnd=CreateWindow("Computer2016","四川理工學院-計算機學院",WS_OVERLAPPEDWINDOW,0,0,600,400,NULL,NULL,hInstance,NULL);	//建立視窗
    	ShowWindow(hwnd,SW_SHOWNORMAL);	//顯示視窗
    	UpdateWindow(hwnd);	//更新視窗
    	MSG msg;
    	while(GetMessage(&msg,NULL,0,0))	//訊息迴圈
    	{
    		TranslateMessage(&msg);
    		DispatchMessage(&msg);
    	}
    	return 0;
    }
    LRESULT CALLBACK WinSunProc(
      HWND hwnd,      // handle to window
      UINT uMsg,      // message identifier
      WPARAM wParam,  // first message parameter
      LPARAM lParam   // second message parameter
    )
    {	switch(uMsg)
    	{
    	case WM_CHAR:
    		char szChar[20];
    		sprintf(szChar,"char is %d",wParam);
    		MessageBox(hwnd,szChar,"weixin",0);
    		break;
    	case WM_LBUTTONDOWN:
    		
    		MessageBeep(10);	//提示音。
    		MessageBox(hwnd,"你按下了滑鼠!","提示",0);
    		HDC hdc;
    		hdc=GetDC(hwnd);
    		TextOut(hdc,0,50,"Widows程式設計實驗",strlen("Widows程式設計實驗"));
    		ReleaseDC(hwnd,hdc);
    		break;
    
    	case WM_PAINT:
    		HDC hDC;
    		PAINTSTRUCT ps;
    		hDC=BeginPaint(hwnd,&ps);
    		TextOut(hDC,0,0," 程式設計實驗",strlen("程式設計實驗")+1);
    		
    		EndPaint(hwnd,&ps);
    		break;
    	case WM_CLOSE:	
    		if(IDYES==MessageBox(hwnd,"是否真的結束?","提示",MB_YESNO))
    		{
    		
    	
    			DestroyWindow(hwnd);
    		}
    		break;
    	case WM_DESTROY:
    		PostQuitMessage(0);
    		break;
    	default:
    		return DefWindowProc(hwnd,uMsg,wParam,lParam);
    	}
    	return 0;
    }
    
  8. 點選工具欄的編譯執行按鈕。


  9. 執行結果如下:


  10. 此程式添加了滑鼠響應函式和視窗銷燬響應函式和視窗重繪函式,所以點選滑鼠左鍵或關閉視窗或移動視窗時,程式會對於做出相應的操作。