VC擷取當前滑鼠圖片

來源:互聯網
上載者:User
對於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)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.