1. 程式人生 > >6)創建位圖

6)創建位圖

message bitmap bitblt obj lpar make get jad copy

1)創建位圖步驟,首先 我們需要創建窗口的基本代碼,代碼展示:  

 1 #include<Windows.h>
 2 #include"resource.h"
 3 
 4 
 5 //這個叫  窗口消息處理函數
 6 LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
 7 {
 8     switch(uMsg)
 9     {
10     case WM_CLOSE://點那個×,窗口關閉
11         ::PostQuitMessage(0);//消息推出
12         break
; 13 14 15 } 16 return ::DefWindowProc( hWnd, uMsg, wParam, lParam); 17 } 18 19 20 int CALLBACK WinMain(HINSTANCE hIstance, 21 HINSTANCE hPreInstance, 22 LPSTR pCmdLine, 23 int nCmdShow) 24 { 25 26 HBRUSH hBrush=::CreateSolidBrush(RGB(0
,0,255)); 27 28 29 //1.設計---->就是給WNDCLASSEX結構體初始化(結構體有12個) 30 WNDCLASSEX wndclass; 31 wndclass.cbClsExtra=0; 32 wndclass.cbWndExtra=0;//這兩個是確定是否要分配額外的空間 33 wndclass.cbSize=sizeof(WNDCLASSEX); 34 wndclass.hbrBackground=hBrush;
35 wndclass.hCursor=NULL;//光標 36 //因為上面的那個LoadCUrsor是需要字符串,但是那個IDC_CURSOR1是一個整型數字,所以 需要用那個宏給轉定義一下 37 wndclass.hIcon=NULL;//窗口圖標 38 wndclass.hIconSm=NULL;//窗口左上的圖標 39 wndclass.hInstance=hIstance; 40 wndclass.lpfnWndProc=WndProc; 41 wndclass.lpszClassName="wangchao"; 42 wndclass.lpszMenuName=NULL; 43 wndclass.style=CS_HREDRAW|CS_VREDRAW; 44 45 //2.註冊 46 if(::RegisterClassEx(&wndclass)==FALSE) 47 { 48 ::MessageBox(NULL,"dhsakfljadsf","提示",MB_OK); 49 50 return 0; 51 } 52 //3.創建 53 54 HWND hWnd=::CreateWindow("wangchao","xiao_hua",WS_OVERLAPPEDWINDOW,100,0,500,500,NULL,NULL,hIstance,NULL); 55 56 if(hWnd==NULL) 57 { 58 ::MessageBox(NULL,"創建失敗","提示",MB_OK); 59 return 0; 60 } 61 //4.顯式 62 63 ::ShowWindow(hWnd,SW_SHOW); 64 65 //5.消息循環 66 67 MSG msg; 68 69 while(::GetMessage(&msg,0,0,0)) 70 { 71 //第一步先翻譯 72 ::TranslateMessage(&msg); 73 //第二部分發 74 ::DispatchMessageA(&msg); 75 76 } 77 78 79 ::DeleteObject(hBrush); 80 }

2)然後 創建位圖 步驟:

    1)首先是 視圖--->資源試圖--->Bitmap--->新建

        技術分享圖片

          2)然後 新建:

         技術分享圖片

          3)可以直接修改位圖的大小

技術分享圖片

           4)看我們的那個resource.h中的代碼

技術分享圖片

 

4)真正的修改部分            

      技術分享圖片

      技術分享圖片

       技術分享圖片

5)代碼展示:

 1 #include<Windows.h>
 2 #include"resource.h"
 3 
 4 HBITMAP hBitMap;
 5 //這個叫  窗口消息處理函數
 6 LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
 7 {
 8     switch(uMsg)
 9     {
10     case WM_CLOSE://點那個×,窗口關閉
11         ::PostQuitMessage(0);//消息推出
12         break;
13     case WM_PAINT:
14         HDC hdc=::GetDC(hWnd);//獲得當前這個HDC的句柄
15         HDC hdn_jianrong=::CreateCompatibleDC(hdc);//創建一個兼容性HDC
16         SelectObject(hdn_jianrong, hBitMap);//把剛剛創建的那個位圖hBitMap給hdc_jianrong
17         BitBlt(hdc,0,0,500,500,hdn_jianrong,0,0,SRCCOPY);//那個位圖屬性設置
18         ::DeleteDC(hdn_jianrong);//刪除剛剛那個兼容性HDC
19         ::ReleaseDC(hWnd,hdc);//釋放當前的HDC
20 
21     }
22     return ::DefWindowProc( hWnd, uMsg, wParam, lParam);
23 }
24 
25 
26 int CALLBACK WinMain(HINSTANCE hIstance,
27                      HINSTANCE hPreInstance,
28                      LPSTR pCmdLine,
29                      int nCmdShow)
30 {
31             
32     HBRUSH hBrush=::CreateSolidBrush(RGB(0,0,255));
33             
34     
35     //1.設計---->就是給WNDCLASSEX結構體初始化(結構體有12個)
36             WNDCLASSEX wndclass;
37             wndclass.cbClsExtra=0;
38             wndclass.cbWndExtra=0;//這兩個是確定是否要分配額外的空間
39             wndclass.cbSize=sizeof(WNDCLASSEX);
40             wndclass.hbrBackground=hBrush;
41             wndclass.hCursor=NULL;//光標
42             //因為上面的那個LoadCUrsor是需要字符串,但是那個IDC_CURSOR1是一個整型數字,所以  需要用那個宏給轉定義一下
43             wndclass.hIcon=NULL;//窗口圖標
44             wndclass.hIconSm=NULL;//窗口左上的圖標
45             wndclass.hInstance=hIstance;
46             wndclass.lpfnWndProc=WndProc;
47             wndclass.lpszClassName="wangchao";
48             wndclass.lpszMenuName=NULL;
49             wndclass.style=CS_HREDRAW|CS_VREDRAW;
50 
51     //2.註冊
52             if(::RegisterClassEx(&wndclass)==FALSE)
53             {
54                 ::MessageBox(NULL,"dhsakfljadsf","提示",MB_OK);
55                 
56                 return 0;
57             }
58     //3.創建
59                     
60             HWND hWnd=::CreateWindow("wangchao","xiao_hua",WS_OVERLAPPEDWINDOW,100,0,500,500,NULL,NULL,hIstance,NULL);
61             
62         if(hWnd==NULL)
63         {
64             ::MessageBox(NULL,"創建失敗","提示",MB_OK);
65             return 0;
66         }
67     //4.顯式
68             
69         ::ShowWindow(hWnd,SW_SHOW);
70         hBitMap=::LoadBitmap(hIstance,MAKEINTRESOURCE(BACKGROUND));
71     //5.消息循環
72         
73             MSG msg;
74             
75             while(::GetMessage(&msg,0,0,0))
76         {
77             //第一步先翻譯
78             ::TranslateMessage(&msg);
79             //第二部分發
80             ::DispatchMessageA(&msg);
81 
82         }
83 
84 
85     ::DeleteObject(hBrush);
86 }

目錄關系:  

      技術分享圖片

  

6)創建位圖