锘??xml version="1.0" encoding="utf-8" standalone="yes"?> 浣跨敤gdi+鍜屼箣鍓嶅啓鐨?CTimerMgr 鍐欎簡涓涓挱鏀緂if鍔ㄧ敾鐨勫皬鎺т歡銆傚師鐞嗗氨鏄嬌鐢╣di+瑙g爜gif錛岃鍑哄姩鐢誨撫闂撮殧錛屼嬌鐢–TimerMgr
璁劇疆瀹氭椂鍣ㄣ傚畾鏃跺櫒瓚呭湪鏂板垱寤虹殑綰跨▼涓緗綋鍓嶅簲璇ユ挱鏀劇殑甯э紙SelectActiveFrame()錛夛紝騫惰姹傛帶浠墮噸緇?Invalidate())銆?/p>
浣跨敤涓彂鐜癲ebug涓媜utput紿楀彛鎬繪槸杈撳嚭 First-chance exception at 0x4aeee2e0
0x80000001: 灝氭湭瀹炵幇錛屼絾騫朵笉褰卞搷紼嬪簭榪愯銆傚悗鏉ュ彂鐜伴棶棰樺氨婧愯嚜浜庡湪 瀹氭椂鍣ㄧ嚎紼嬩腑璋冪敤浜?GDI+ 鐨処mage綾葷殑
SelectActiveFrame錛堬級銆傚簲璇ユ槸 Image涓嶆槸綰跨▼瀹夊叏鐨勭被瀵艱嚧鐨勩?/p>
瑙e喅鏂規寰堢畝鍗曪紝浣跨敤WM_Timer鍋氬畾鏃跺櫒銆傚叾瀹炰粠涓寮濮嬬殑瀹炵幇涓婂氨搴旇浣跨敤WM_TIMER錛岃屼笉鏄畾鏃跺櫒綰跨▼銆傚綋鍒濅嬌鐢ㄥ畾鏃跺櫒綰跨▼鏄昒I綰跨▼涓湁鑰楁椂鎿嶄綔浼氬鑷磄if鍗°?/p>
浣嗘槸瀹氭椂鍣ㄧ嚎紼嬪茍涓嶈兘瑙e喅榪欎釜闂錛屽洜涓哄畾鏃跺櫒綰跨▼浠呬粎鏄緗簡搴斿綋緇樺埗鐨勪笅涓甯э紝鍏蜂綋鐨勭粯鍒惰繕鏄湪UI綰跨▼涓鐞嗙殑銆?/p>
]]>
1: /* format 鍙栧間負錛?/span>
2: image/bmp
3: image/jpeg
4: image/gif
5: image/tiff
6: image/png
7: */
8: int GetEncoderClsid( const WCHAR* format, CLSID* pClsid )
9: {
10: UINT num = 0; // number of image encoders
11: UINT size = 0; // size of the image encoder array in bytes
12:
13: ImageCodecInfo* pImageCodecInfo = NULL;
14:
15: GetImageEncodersSize(&num, &size);
16: if(size == 0)
17: return -1; // Failure
18:
19: pImageCodecInfo = (ImageCodecInfo*)(malloc(size));
20: if(pImageCodecInfo == NULL)
21: return -1; // Failure
22:
23: GetImageEncoders(num, size, pImageCodecInfo);
24:
25: for(UINT j = 0; j < num; ++j)
26: {
27: if( wcscmp(pImageCodecInfo[j].MimeType, format) == 0 )
28: {
29: *pClsid = pImageCodecInfo[j].Clsid;
30: free(pImageCodecInfo);
31: return j; // Success
32: }
33: }
34:
35: free(pImageCodecInfo);
36: return -1; // Failure
37:
38: }
涓嬮潰鐨勪唬鐮佸彲浠ユ妸涓涓狦DI涓嬌鐢ㄧ殑HBITMAP鍙ユ焺淇濆瓨鍒扮鐩?/p>
1: CLSID bmpClsid;
2: GetEncoderClsid(L"image/bmp", &bmpClsid);
3:
4: //淇濆瓨鍒扮鐩樹笂鐨刡mp鏂囦歡
5: Gdiplus::Bitmap bitmap(hBitmap,NULL);
6: bitmap.Save(L"1.bmp", &bmpClsid, NULL);
7:
8: // 杞崲涓簆ng錛屽啀淇濆瓨鍒扮鐩樹笂
9: CLSID pngid;
10: GetEncoderClsid(L"image/png", &pngid);
11: bitmap.Save(L"1.png",&pngid,NULL);
涓嬮潰鐨勪唬鐮佷粠紓佺洏涓婅鍙栦竴涓猨pg鏂囦歡錛岃漿鎹負bmp鍐嶄繚瀛樺埌紓佺洏涓?/p>
1: Gdiplus::Image * pImage = Gdiplus::Image::FromFile(L"E:/Dropbox/MyDocument/緹庡浘鍥懼簱/紺轟緥鍥劇墖_03.jpg");
2: pImage->Save(L"2.bmp",&bmpClsid,NULL);