windows程式設計之點陣圖
前言:本來今天想學著在VC++裡插入圖片的,結果這一弄就弄了一下午,終於有一點會了。這這是是一次艱難的學習經歷。我看的是一本比較就的書《Visual C++ 物件導向與視覺化程式設計》(第2版),下午剛開始照著書上的例子寫程式碼的,結果,嗚嗚嗚,貌似根本就不管用。書上插入點陣圖用的是LoadBitmap()。當時我就鬱悶了,到網上找資料,相關方面的資料也不是很多,要麼就是MFC的,要麼就是比較高深的影象處理的都沒找到我想要的。找了好久,終於讓我找到一個函式LoadImage()。照著網上的例子試了一下,終於成功了。好開心好開心啊。哈哈哈哈。希望這篇博文能給與那些向我一樣的初學者一些幫助。廢話不多說了。下面進入正題。
主要就是LoadImage的用法,如下(這是MSDN裡的)
HANDLE LoadImage( HINSTANCE hinst, // handle to instance LPCTSTR lpszName, // image to load UINT uType, // image type int cxDesired, // desired width int cyDesired, // desired height UINT fuLoad // load options );
還有就是資原始檔(點陣圖檔案)的插入,步驟如下:
1.新建資源指令碼
2.建完之後效果如下:
3.出入點陣圖,點選新建
.
4.畫圖並儲存
5.新增標頭檔案,如圖
以上就是資源的插入了,接下來就到了程式碼的實現部分了
這是主要的程式碼,有註釋:
#include<windows.h>
#include<string.h>
#include<stdlib.h>
#include<stdio.h>
#include "resource.h"
HDC hdcmem;//裝置記憶體環境控制程式碼
HBITMAP hbitmap;//點陣圖控制程式碼
BITMAP bitmap;//BITMAP結構
LRESULT CALLBACK WndProc(
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 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 = "我的視窗";
wndclass.lpszMenuName = NULL;
wndclass.style = CS_HREDRAW | CS_VREDRAW;
RegisterClass(&wndclass); //註冊視窗類
HWND hwnd;
hwnd = CreateWindow("我的視窗", "視窗", WS_OVERLAPPEDWINDOW,
0, 0, 1000, 600, NULL, NULL, hInstance, NULL);
ShowWindow(hwnd, nCmdShow);
UpdateWindow(hwnd);
MSG Msg;
while(GetMessage(&Msg, NULL, 0, 0))
{
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
return 0;
}
LRESULT CALLBACK WndProc(
HWND hwnd, // handle to window
UINT uMsg, // message identifier
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
)
{
HDC hdc;
PAINTSTRUCT ps;
HANDLE hb;
switch(uMsg)
{
case WM_CREATE:
hdc = GetDC(hwnd);
hdcmem = CreateCompatibleDC(hdc);//獲取記憶體裝置環境控制程式碼
ReleaseDC(hwnd, hdc);
break;
case WM_PAINT:
hdc = BeginPaint(hwnd, &ps);
hb = LoadImage(NULL, "bitmap2.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
GetObject(hb, sizeof(BITMAP), &bitmap);
SelectObject(hdcmem, hb); //將點陣圖選入記憶體裝置
BitBlt(hdc, 10, 10, bitmap.bmWidth, bitmap.bmHeight, hdcmem, 0, 0, SRCCOPY);
EndPaint(hwnd, &ps);
DeleteObject(hb);
break;
case WM_CLOSE:
DestroyWindow(hwnd);
break;
case WM_DESTROY:
DeleteDC(hdcmem);
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd, uMsg, wParam, lParam);
}
return 0;
}
工程已經打包上傳了,這是資源連結:http://download.csdn.net/detail/u010084308/6692547
基本上就是這樣了。
相關文章
- Windows Phone 7 點陣圖程式設計Windows程式設計
- Java-GUI程式設計之處理點陣圖JavaGUI程式設計
- 《程式設計珠璣》第一章-點陣圖排序程式設計排序
- UITableView佔點陣圖的低耦合性設計UIView
- C語言程式設計-漢字點陣C語言程式設計
- Windows程式設計系列:圖形程式設計基礎Windows程式設計
- CodingTrip攜程程式設計大賽-點陣圖畫素的顏色程式設計
- 5-Windows程式設計 -繪圖基礎Windows程式設計繪圖
- 使用點陣圖選單項——設定點陣圖型別標記 (轉)型別
- 點陣圖
- 終身程式設計之新起點程式設計
- windows核心程式設計--程式Windows程式設計
- 計算機演算法:資料壓縮之點陣圖(2)計算機演算法
- 使用點陣圖選單項——建立點陣圖 (轉)
- 程式設計師方陣程式設計師
- 點陣圖排序排序
- Windows Shell 程式設計Windows程式設計
- 線上生成佔點陣圖片工具:簡便快捷的設計利器
- Windows 程式設計簡介從C/C++到Windows程式設計Windows程式設計C++
- windows核心程式設計--windows程式的執行Windows程式設計
- 程式設計師必備畫圖技能之——時序圖程式設計師時序圖
- 如何優雅地使用Redis之點陣圖操作Redis
- 微信小程式image載入成功前顯示預設佔點陣圖微信小程式
- windows核心程式設計--精華Windows程式設計
- Windows核心程式設計_HookWindows程式設計Hook
- windows程式設計簡介Windows程式設計
- Windows Phone 7程式設計Windows程式設計
- 點陣圖索引.sql索引SQL
- C語言入門基礎之陣列——數學和程式設計的完美結合(圖)C語言陣列程式設計
- 點陣圖索引(Bitmap Index)——從B*樹索引到點陣圖索引索引Index
- 好程式設計師web前端之JavaScript陣列去重方法程式設計師Web前端JavaScript陣列
- Redis 精確去重計數 —— 咆哮點陣圖Redis
- 遊戲開發新手入門之Windows程式設計(轉)遊戲開發Windows程式設計
- Java程式設計:圖Java程式設計
- 遊戲開發新手入門之點陣圖化圖形(轉)遊戲開發
- Java 程式設計要點之 I/O 流詳解Java程式設計
- 點陣圖索引(Bitmap Index)——點陣圖索引與資料DML鎖定索引Index
- 使用點陣圖選單項——點陣圖選單項例項 (轉)