对于warning C4005: 'WINVER' : macro redefinition的处理
在Windows.h中有如下定义:
#ifndef WINVER
#define WINVER 0x0400
#endif
如果你把#define WINVER 0x500置于#include 之前,就不会出现警告.
需要包含的文件:#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)