对于warning C4005: 'WINVER' : macro redefinition的处理 在Windows.h中有如下定义: #ifndef WINVER #define WINVER 0x0400 #endif 如果你把#define WINVER 0x500置于#include <windows.h>之前,就不会出现警告.
需要包含的文件:#include "Winuser.h"
HCURSOR GetCur() { CURSORINFO hCur; // HCURSOR hCur; ZeroMemory(&hCur,sizeof(hCur)); hCur.cbSize=sizeof(hCur); GetCursorInfo(&hCur); return hCur.hCursor; } void CMy123Dlg::OnButton1() { Sleep(2000); //warning: this code snippet is not bullet proof. HCURSOR hcur = GetCur();//::GetCursor(); if(hcur==NULL) return; ICONINFO icon; ::GetIconInfo(hcur,&icon); HBITMAP hbmp; BITMAP bm; ::GetObject(icon.hbmMask,sizeof(BITMAP),&bm); HDC hGlobal,hDCMask,hDCColor; hGlobal = ::GetDC(NULL); hDCMask = ::CreateCompatibleDC(hGlobal); hDCColor = ::CreateCompatibleDC(hGlobal); hbmp = ::CreateCompatibleBitmap(hGlobal,bm.bmWidth,bm.bmWidth); ::SelectObject(hDCColor,hbmp); ::FloodFill(hDCColor,0,0,RGB(255,255,255));//背景色 ::SelectObject(hDCMask,icon.hbmMask); ::BitBlt(hDCColor,0,0,bm.bmWidth,bm.bmWidth,hDCMask,0,0,SRCAND); if (icon.hbmColor == NULL) ::BitBlt(hDCColor,0,0,bm.bmWidth,bm.bmWidth,hDCMask,0,bm.bmWidth,SRCINVERT); else { ::SelectObject(hDCMask,icon.hbmColor); ::BitBlt(hDCColor,0,0,bm.bmWidth,bm.bmWidth,hDCMask,0,0,SRCINVERT); } PICTDESC picdesc; picdesc.cbSizeofstruct = sizeof(PICTDESC); picdesc.picType = PICTYPE_BITMAP ; picdesc.bmp.hbitmap = hbmp; IPicture* pPicture=NULL; OleCreatePictureIndirect(&picdesc, IID_IPicture, TRUE,(VOID**)&pPicture); LPSTREAM pStream; CreateStreamOnHGlobal(NULL,TRUE,&pStream); LONG size; HRESULT hr=pPicture-> SaveAsFile(pStream,TRUE,&size); char pathbuf[1024]; strcpy(pathbuf, "c:\\myarrow.bmp "); FILE *stream; stream = fopen( pathbuf, "w " ); LARGE_INTEGER li; li.HighPart =0; li.LowPart =0; ULARGE_INTEGER ulnewpos; pStream-> Seek( li,STREAM_SEEK_SET,&ulnewpos); ULONG uReadCount = 1; while(uReadCount> 0) { pStream-> Read(pathbuf,sizeof(pathbuf),&uReadCount); if(uReadCount> 0) fwrite( pathbuf,sizeof(char),uReadCount,stream); } pStream-> Release(); fclose( stream ); ::DeleteObject(icon.hbmMask); if (icon.hbmColor != NULL) ::DeleteObject(icon.hbmColor); ::DeleteObject(hbmp); ::ReleaseDC(NULL,hDCMask); ::ReleaseDC(NULL,hDCColor); ::ReleaseDC(NULL,hGlobal); AfxMessageBox(_T("OK")); }
CBitmap bmp; CDC memDC; memDC.CreateCompa... memDC.SelectObiect(bmp) memDC.GetPixel(x, y)