星期三, 5月 30, 2007

[VC] 快捷鍵整理

Ctrl+O   :Open
Ctrl+P   :Print
Ctrl+N   :New
Ctrl+Shift+F2 :清除所有書籤
F2    :上一個書籤
Shift+F2  :上一個書籤
Alt+F2   :編輯書籤
Ctrl+F2  :添加/刪除一個書籤
F12    :Goto definition
Shift+F12  :Goto reference


星期四, 5月 24, 2007

[MFC] 抓取全螢幕 存成 BMP

//***********************************************************// 
//抓取全螢幕 存成 BMP
CDC dc;
dc.CreateDC("DISPLAY",NULL,NULL,NULL);
CBitmap bm;
int Width=GetSystemMetrics(SM_CXSCREEN);//螢幕寬
int Height=GetSystemMetrics(SM_CYSCREEN);//螢幕高
bm.CreateCompatibleBitmap(&dc,Width,Height);
CDC tdc;
tdc.CreateCompatibleDC(&dc);
CBitmap*pOld=tdc.SelectObject(&bm);
tdc.BitBlt(0,0,Width,Height,&dc,0,0,SRCCOPY);
tdc.SelectObject(pOld);
BITMAP btm;
bm.GetBitmap(&btm);
DWORD size=btm.bmWidthBytes*btm.bmHeight;
LPSTR lpData=(LPSTR)GlobalAlloc(GPTR,size);
BITMAPINFOHEADER bih;
bih.biBitCount=btm.bmBitsPixel;
bih.biClrImportant=0;
bih.biClrUsed=0;
bih.biCompression=0;
bih.biHeight=btm.bmHeight;
bih.biPlanes=1;
bih.biSize=sizeof(BITMAPINFOHEADER);
bih.biSizeImage=size;
bih.biWidth=btm.bmWidth;
bih.biXPelsPerMeter=0;
bih.biYPelsPerMeter=0;
GetDIBits(dc,bm,0,bih.biHeight,lpData,(BITMAPINFO*)&bih,DIB_RGB_COLORS);
static int filecount=0;
CString name;
name.Format("pict%04d.bmp",filecount++);
name="C:\\IDP3\\"+name;
BITMAPFILEHEADER bfh;
bfh.bfReserved1=bfh.bfReserved2=0;
bfh.bfType=((WORD)('M'<< 8)|'B');
bfh.bfSize=54+size;
bfh.bfOffBits=54;
CFile bf;
if(bf.Open(name,CFile::modeCreate|CFile::modeWrite))
{
bf.WriteHuge(&bfh,sizeof(BITMAPFILEHEADER));
bf.WriteHuge(&bih,sizeof(BITMAPINFOHEADER));
bf.WriteHuge(lpData,size);
bf.Close();
nCount++;
}
//GlobalFreePtr(lpData);
GlobalFree((HGLOBAL)lpData);
UpdateData(FALSE);