




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、VC基于對話框的程序如何顯示圖片?用什么控件?或是什么其他的方法?在網(wǎng)上查了好久都沒有符合要求的,都是基于視圖的.最簡便的方法.在窗口上點(diǎn)右鍵插入ActiveX控件里面以Microsoft開頭的控件里尋找關(guān)于圖片的控件.比如Microsoft ListView Control.等等.在對話框類中的OnPaint(函數(shù)中用DrawIcon(函數(shù)來加載就可以了。有這個控件 名字叫picture就在編輯框的上面,把它拖到對話框上再加載你要的圖片就可以了簡單的ICON可以直接使用picture控件,它是一個位圖,大小16*16 or 32*32方法一:CDC * dc; dc=GetDC(; /得到對
2、話框的設(shè)備環(huán)境 CDC dcMemory; dcMemory.CreateCompatibleDC(dc; /得到與對話框設(shè)備環(huán)境相兼容的內(nèi)存DC bitmap=new CBitmap(; HBITMAP hbitmap; /裝載圖片 hbitmap=(HBITMAP:LoadImage(NULL,C:pan.bmp,IMAGE_BITMAP,0,0,LR_LOADFROMFILE; if(hbitmap /成功 bitmap-Attach(hbitmap; else /出錯。返回 AfxMessageBox(打開圖像文件出錯; /釋放內(nèi)存中的設(shè)備環(huán)境 ReleaseDC(dc; Releas
3、eDC(&dcMemory; delete bitmap; return; /取得圖像的大小 long bmWidth,bmHeight; /圖像的寬度,和高度 BITMAP bm; bitmap-GetBitmap(&bm; bmWidth=bm.bmWidth; bmHeight=bm.bmHeight; dcMemory.SelectObject(bitmap; dc-BitBlt(0,0,bmWidth,bmHeight,&dcMemory,0,0,SRCCOPY;/把內(nèi)存中的圖像復(fù)制到對話框DC中去另外,轉(zhuǎn)一篇描述的比較詳細(xì)的資料供參考:想做個東西,用VC,希望是在程序界面上能把指定
4、 URL 的圖片顯示出來,還沒找到如何顯示 HTTP 資源的圖片,先還是讓本地圖片能在 VC 的窗口(包括各種控件中顯示出來吧。在網(wǎng)上搜索了一番,大家代碼都如出一轍,我也不能生搬硬載,不由又親手實踐了一下,并連同原來學(xué)過的 Window SDK 做窗口程序也復(fù)習(xí)了一遍,沒有使用到 MFC,只需存成單個源文件,甚至用 CL 命令來編譯都無須打開 VC 的,在 VC6 中測試通過。代碼如下:(僅需關(guān)鍵最后一個方法 ShowPic(char *lpstrFile, HWND hWnd#include / Windows SDK 要用到的 #include / 打開文件的窗口要包含這個頭文件 /用到了
5、 IPicture 接口,要包含下面兩個 頭文件 #include #include / 聲明窗口函數(shù)的原型 LRESULT CALLBACK MainWndProc (HWND, UINT, WPARAM, LPARAM; / 聲明顯示圖片的函數(shù)原型 HRESULT ShowPic(char *lpstrFile,HWND hWnd ; /圖片文件名 char lpstrFileMAX_PATH=; int WINAPI WinMain (HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszArgument, int nFu
6、nsterStil / 窗口類名 char szClassName = ShowPicture; WNDCLASSEX windclass; /用描述主窗口的參數(shù)填充 WNDCLASSEX 結(jié)構(gòu) windclass.cbSize = sizeof(windclass; /結(jié)構(gòu)大小 windclass.hInstance = hThisInstance; /實例句酚 windclass.lpszClassName = szClassName; windclass.lpfnWndProc = MainWndProc; /窗口函數(shù)指針 windclass.style = CS_DBLCLKS; /捕
7、獲雙擊事件 windclass.cbSize = sizeof (WNDCLASSEX; windclass.hIcon = LoadIcon (NULL, IDI_APPLICATION; /使用預(yù)定義圖標(biāo) windclass.hIconSm = LoadIcon (NULL, IDI_APPLICATION; /使用預(yù)定義類的小圖標(biāo) windclass.hCursor = LoadCursor (NULL, IDC_ARROW; /使用預(yù)定義光標(biāo) windclass.lpszMenuName = NULL; /不指定主菜單 windclass.cbClsExtra = 0; /沒有額外的類
8、內(nèi)存 windclass.cbWndExtra = 0; /沒有額外的窗口內(nèi)存 windclass.hbrBackground = (HBRUSH COLOR_BACKGROUND; /使用預(yù)定義背景畫刷 /注冊這個窗口類,如果失敗直接退出程序 if (!RegisterClassEx (&windclass return 0; /創(chuàng)建主窗口 HWND hWnd = CreateWindowEx ( 0, /dwExStyle, 擴(kuò)展樣式 szClassName, /lpClassName, 類名 顯示圖片 - 鼠標(biāo)雙擊瀏覽圖片文件 - Author:Unmi, /lpWindowName,
9、標(biāo)題 WS_OVERLAPPEDWINDOW, /dwStyle, 窗口風(fēng)格 CW_USEDEFAULT, /X, 初始 X 坐標(biāo) CW_USEDEFAULT, /Y, 初始 YX 坐標(biāo) 640, /nWidth, 寬度 480, /nHeight, 高度 HWND_DESKTOP, /hWndParent, 父窗口句柄 NULL, /hMenu, 菜單句柄 hThisInstance, /hInstance, 程序?qū)嵗浔?NULL /lpParam, 用戶數(shù)據(jù) ; /顯示窗口,刷新窗口客戶區(qū) ShowWindow (hWnd, nFunsterStil; / 從消息隊列中取出消息,交給窗口
10、函數(shù)處理 / 直到 GetMessage 取出的消息是 WM_QUIT,即FALSE,則結(jié)束消息循環(huán) MSG messages; while (GetMessage (&messages, NULL, 0, 0 /轉(zhuǎn)換鍵盤消息,把虛擬鍵轉(zhuǎn)換為字符消息 TranslateMessage(&messages; /將消息發(fā)送到相應(yīng)的窗口函數(shù) DispatchMessage(&messages; / GetMessage 返回 FALSE,程序結(jié)束 PostQuitMessage( 發(fā)出這一消息 return messages.wParam; / 窗口函數(shù),消息由 DispatchMessage 派發(fā)
11、 LRESULT CALLBACK MainWndProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam switch (message /處理消息 case WM_DESTROY: /向消息隊列投遞一個 WM_QUIT 消息,促使 GetMessage 函數(shù)返回0,結(jié)束消息循環(huán) PostQuitMessage (0; break; case WM_LBUTTONDBLCLK: OPENFILENAME file = 0; file.lStructSize = sizeof(file; file.lpstrTitle = 請選擇一
12、個圖片文件; file.lpstrFile = lpstrFile; file.nMaxFile = MAX_PATH; file.lpstrFilter = Pictures(*.jpg,*.gif,*.bmp0*.jpg;*.gif;*.bmp00; if(:GetOpenFileName(&file /清除原來的圖像 HDC hdc=GetDC(hWnd; RECT rect; :GetWindowRect(hWnd, :FillRect(hdc,&rect,(HBRUSH COLOR_BACKGROUND; :SendMessage(hWnd,WM_PAINT,NULL,NULL; b
13、reak; case WM_PAINT: ShowPic(lpstrFile,hWnd; break; default: /將我們不處理的消息交給系統(tǒng) 做默認(rèn)處理 return DefWindowProc (hWnd, message, wParam, lParam; return 0; / 顯示圖片,此文的重點(diǎn)之所在了, lpstrFile 為圖片文件名,hWnd 為窗口句柄 HRESULT ShowPic(char *lpstrFile,HWND hWnd HDC hDC_Temp=GetDC(hWnd; IPicture *pPic; IStream *pStm; BOOL bResul
14、t; HANDLE hFile=NULL; DWORD dwFileSize,dwByteRead; /打開圖形文件 hFile=CreateFile(lpstrFile,GENERIC_READ, FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL; if (hFile!=INVALID_HANDLE_VALUE dwFileSize=GetFileSize(hFile,NULL;/獲取文件字節(jié)數(shù) if (dwFileSize=0xFFFFFFFF return E_FAIL; else return E_FAIL; /
15、分配全局存儲空間 HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, dwFileSize; LPVOID pvData = NULL; if (hGlobal = NULL return E_FAIL; if (pvData = GlobalLock(hGlobal = NULL/鎖定分配內(nèi)存塊 return E_FAIL; ReadFile(hFile,pvData,dwFileSize,&dwByteRead,NULL;/把文件讀入內(nèi)存緩沖區(qū) GlobalUnlock(hGlobal; CreateStreamOnHGlobal(hGlobal, T
16、RUE, &pStm; /裝入圖形文件 bResult=OleLoadPicture(pStm,dwFileSize,TRUE,IID_IPicture,(LPVOID*&pPic; if(FAILED(bResult return E_FAIL; OLE_XSIZE_HIMETRIC hmWidth; /圖片的真實寬度, 單位為英寸 OLE_YSIZE_HIMETRIC hmHeight; /圖片的真實高度, 單位為英寸 pPic-get_Width(&hmWidth; pPic-get_Height(&hmHeight; /轉(zhuǎn)換hmWidth和hmHeight為pixels距離,1英寸=2
17、5.4毫米 int nWidth = MulDiv(hmWidth,GetDeviceCaps(hDC_Temp,LOGPIXELSX,2540; int nHeight = MulDiv(hmHeight,GetDeviceCaps(hDC_Temp,LOGPIXELSY,2540; /將圖形輸出到屏幕上(有點(diǎn)像BitBlt) bResult=pPic-Render(hDC_Temp,0,0,nWidth,nHeight, 0,hmHeight,hmWidth,-hmHeight,NULL; pPic-Release(; CloseHandle(hFile;/關(guān)閉打開的文件 if (SUCCEEDED(bResult return S_O
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年CFA考試行業(yè)監(jiān)管分析試題及答案
- 站內(nèi)公共服務(wù)設(shè)施優(yōu)化考核試卷
- 關(guān)注市場變化的證券從業(yè)資格證試題及答案
- 烘焙食品企業(yè)生產(chǎn)設(shè)備升級考核試卷
- 玻璃保溫容器市場營銷渠道拓展考核試卷
- 電池制造與戶外廣告屏考核試卷
- 銀行從業(yè)資格證的復(fù)習(xí)建議試題及答案
- 出租資產(chǎn)招商方案范本
- 微生物樣本管理中的生態(tài)道德審視試題及答案
- 2024年項目管理考試知識點(diǎn)提煉試題及答案
- 《觀察人口腔上皮細(xì)胞結(jié)構(gòu)》說課課件
- 2022四川成都市邛崍市天府現(xiàn)代種業(yè)園管理委員會公開招聘員額制社會化專業(yè)人才9人(必考題)模擬卷和答案
- 2022云南省氣象事業(yè)單位公開招聘氣象類專業(yè)(第一批)高校畢業(yè)生45人(必考題)模擬卷及答案
- GB∕T 23349-2020 肥料中砷、鎘、鉻、鉛、汞含量的測定
- DB32-T 769-2021餐飲計量規(guī)范-(高清現(xiàn)行)
- 北京市引進(jìn)人才審批表格模板
- 第14篇局部水基滅火系統(tǒng)(修改后版本)
- 配管配線工程量計算實例
- 【圖文】攝影技巧-專題攝影(138頁精品培訓(xùn)課件-PPT)
- 后印象主義美術(shù)頁P(yáng)PT課件
- 多芒寺陽塘仁波切生平簡介(PPT)
評論
0/150
提交評論