青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Welcome to ErranLi's Blog!

  C++博客 :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
  106 Posts :: 1 Stories :: 97 Comments :: 0 Trackbacks

常用鏈接

留言簿(12)

搜索

  •  

積分與排名

  • 積分 - 178126
  • 排名 - 152

最新評(píng)論

閱讀排行榜



在WinCE中, 由于WinCE的精簡(jiǎn),有很多win32下的標(biāo)準(zhǔn)API不支持,所以有很多在vc上能夠輕易實(shí)現(xiàn)的功能, 在evc中有點(diǎn)難度,必須變通一下,就拿截取屏幕來說,一個(gè)常用的函數(shù)GetDIBits在wince就Unsupported.當(dāng)時(shí)為了實(shí)現(xiàn)這個(gè)功能,頗費(fèi)了了一番心血,當(dāng)然其主要還是因?yàn)閷?duì)api不是很熟悉。

最初使用的截屏方法說來還真有些丟人,一個(gè)一個(gè)點(diǎn)的取得顏色值,再保存到bmp文件中去,這樣程序運(yùn)行的速度超慢,保存一個(gè)800X600的bmp差不多要一兩分鐘(研華8251板),覺得有些不對(duì)頭,決定想辦法改進(jìn)一下,就使勁地看了一下Charles Petzold先生的《Programming Windows》(這本書很經(jīng)典,值得好好研究一下),終于把時(shí)間縮短到幾秒鐘了,下面這個(gè)函數(shù)在evc和vc下都test pass(不用更改),有不足之處歡迎指正,函數(shù):

// this function create a bmp file to save the current screen;
// supported eVC++ 4.0 (wince 4.0) and vc++ 6.0 , test pass;

void CSnapDlg::OnScreenSave(const char *filename)

    HDC  hScrDC, hMemDC;        
    int  width, height; 
 
 //the pointer will save all pixel point's color value
 BYTE  *lpBitmapBits = NULL;
       
 //creates a device context for the screen device
    hScrDC = CreateDC(_T("DISPLAY"), NULL, NULL, NULL);

  //get the screen point size
    width = GetDeviceCaps(hScrDC, HORZRES);
    height = GetDeviceCaps(hScrDC, VERTRES);

    //creates a memory device context (DC) compatible with the screen device(hScrDC) 
    hMemDC = CreateCompatibleDC(hScrDC);

 //initialise the struct BITMAPINFO for the bimap infomation,
 //in order to use the function CreateDIBSection
 //
on wince os, each pixel stored by 24 bits(biBitCount=24) 
 //and no compressing(biCompression=0)

    BITMAPINFO RGB24BitsBITMAPINFO;
    ZeroMemory(&RGB24BitsBITMAPINFO, sizeof(BITMAPINFO));
    RGB24BitsBITMAPINFO.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
    RGB24BitsBITMAPINFO.bmiHeader.biWidth = width;
    RGB24BitsBITMAPINFO.bmiHeader.biHeight = height;
    RGB24BitsBITMAPINFO.bmiHeader.biPlanes = 1;
    RGB24BitsBITMAPINFO.bmiHeader.biBitCount = 24;
  
 
//use the function CreateDIBSection and SelectObject 
 //in order to get the bimap pointer : lpBitmapBits

    HBITMAP directBmp = CreateDIBSection(hMemDC, (BITMAPINFO*)&RGB24BitsBITMAPINFO,
       DIB_RGB_COLORS, (void **)&lpBitmapBits, NULL, 0);
 HGDIOBJ previousObject = SelectObject(hMemDC, directBmp);

 // copy the screen dc to the memory dc
 BitBlt(hMemDC, 0, 0, width, height, hScrDC, 0, 0, SRCCOPY);
 
 //if you only want to get the every pixel color value,
 //you can begin here and the following part of this function will be unuseful;
 //the following part is in order to write file;

 //bimap file header in order to write bmp file
 BITMAPFILEHEADER bmBITMAPFILEHEADER;
 ZeroMemory(&bmBITMAPFILEHEADER, sizeof(BITMAPFILEHEADER));
 bmBITMAPFILEHEADER.bfType = 0x4d42;  //bmp 
    bmBITMAPFILEHEADER.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER);
    bmBITMAPFILEHEADER.bfSize = bmBITMAPFILEHEADER.bfOffBits + ((width*height)*3); ///3=(24 / 8)
 
 //write into file
 FILE *mStream = NULL;
 if((mStream = fopenfilename, "wb")))
 {  
  //write bitmap file header
  fwrite(&bmBITMAPFILEHEADER, sizeof(BITMAPFILEHEADER), 1, mStream);
  //write bitmap info
  fwrite(&(RGB24BitsBITMAPINFO.bmiHeader), sizeof(BITMAPINFOHEADER), 1, mStream);
  //write bitmap pixels data
  fwrite(lpBitmapBits, 3*width*height, 1, mStream);
 
 //close file
  fclose(mStream);
 }
 
 //delete
 DeleteObject(hMemDC);
 DeleteObject(hScrDC);
 DeleteObject(directBmp);
 DeleteObject(previousObject);
}

還是用英語作了注釋,雖然英語學(xué)的很糟糕,還是覺得這個(gè)習(xí)慣比較好~~ ..


posted on 2006-05-14 01:34 erran 閱讀(3986) 評(píng)論(4)  編輯 收藏 引用 所屬分類: WinCE

Feedback

# re: EVC實(shí)現(xiàn)WIN CE下截屏并且保存到文件[By Erran] 2007-06-13 00:12 S.S.Pang
萬分感謝!!正需要這個(gè).呵呵.  回復(fù)  更多評(píng)論
  

# re: EVC實(shí)現(xiàn)WIN CE下截屏并且保存到文件[By Erran] [未登錄] 2007-12-26 13:08 Terry
if((mStream = fopenfilename, "wb")))

應(yīng)該是...

if((mStream = fopen(filename, "wb")))
  回復(fù)  更多評(píng)論
  

# re: EVC實(shí)現(xiàn)WIN CE下截屏并且保存到文件[By Erran] [未登錄] 2008-11-07 17:06 Feng
十分感謝  回復(fù)  更多評(píng)論
  

# re: EVC實(shí)現(xiàn)WIN CE下截屏并且保存到文件[By Erran] 2010-03-06 09:34 xiaoI000
如果只是需要一個(gè)截屏的工具,就不需要自己寫代碼了,網(wǎng)上有這種工具
我用了下下面這個(gè),還很好用,可以直接在PC上遠(yuǎn)程截取Windows CE上的屏幕.
http://www.wceui.cn/blog/article/wceui_capturescreen.html
  回復(fù)  更多評(píng)論
  

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            1000部精品久久久久久久久| 久久久免费精品| 性色av一区二区三区| 亚洲一区二区免费| 午夜久久久久久| 午夜日韩电影| 噜噜噜91成人网| 欧美激情精品久久久久久黑人 | 久久九九热re6这里有精品| 亚洲欧美日韩一区在线| 久久九九有精品国产23| 玖玖综合伊人| 亚洲精品久久在线| 正在播放亚洲一区| 久久夜色撩人精品| 欧美日韩亚洲一区二区| 国产亚洲精品bt天堂精选| 精品51国产黑色丝袜高跟鞋| 日韩一级视频免费观看在线| 欧美一区二区视频在线| 欧美激情免费观看| 亚洲欧美日本国产有色| 欧美99在线视频观看| 国产精品一区二区久久国产| 亚洲激情六月丁香| 香港成人在线视频| 亚洲激情综合| 久久精品二区| 国产精品第13页| 亚洲国产女人aaa毛片在线| 亚洲欧美成人综合| 亚洲成人资源网| 久久电影一区| 国产精品日韩欧美一区| 亚洲精品视频一区| 久久影院午夜片一区| 黄色亚洲网站| 午夜国产精品影院在线观看| 欧美激情一区二区在线| 亚洲影院在线观看| 欧美日韩你懂的| 1024国产精品| 久久婷婷成人综合色| 亚洲一区二区三区午夜| 欧美日韩精品一区二区三区| 亚洲级视频在线观看免费1级| 久久国产精品久久久久久电车| 亚洲美女视频在线免费观看| 欧美成年人视频网站| 亚洲国产成人精品女人久久久 | 国产精品九九久久久久久久| 亚洲日本视频| 欧美不卡视频| 久久人人看视频| 国产自产2019最新不卡| 欧美一区二区三区在线观看| 亚洲五月六月| 国产精品丝袜91| 欧美一区二区播放| 亚洲一区二区视频在线观看| 国产精品vvv| 亚洲一级电影| 亚洲免费人成在线视频观看| 国产精品毛片高清在线完整版| 午夜精品久久久久久久久久久| 在线视频免费在线观看一区二区| 欧美图区在线视频| 午夜激情综合网| 午夜精品久久久久久久久久久久久| 国产精品美女999| 欧美一区二区在线播放| 羞羞答答国产精品www一本| 国产一区二区毛片| 欧美成人免费全部| 欧美国产在线电影| 亚洲免费婷婷| 欧美一区二区视频观看视频| 在线不卡欧美| 亚洲精品影视在线观看| 国产精品看片你懂得| 久久天天综合| 欧美日韩国产综合视频在线观看| 亚洲永久字幕| 久久久精品国产一区二区三区 | 久久久久久久999精品视频| 久久国产天堂福利天堂| 91久久精品一区二区三区| 亚洲精品网址在线观看| 欧美一区二区三区精品电影| 一色屋精品视频免费看| 亚洲欧洲在线一区| 国产精品久久一区主播| 蜜桃av噜噜一区| 欧美性片在线观看| 猛男gaygay欧美视频| 欧美视频中文一区二区三区在线观看 | 国产精品免费久久久久久| 久久久精品999| 欧美高清视频www夜色资源网| 在线一区视频| 久久视频一区二区| 亚洲欧美日韩国产成人精品影院| 久久久久久久波多野高潮日日| 日韩视频免费在线观看| 欧美一区二区三区免费视| 亚洲伦理精品| 久久久久久穴| 先锋亚洲精品| 欧美欧美午夜aⅴ在线观看| 久久久亚洲精品一区二区三区| 欧美日韩国产91| 女生裸体视频一区二区三区| 国产精品一区二区在线| 亚洲激情在线视频| 亚洲大胆视频| 欧美一区二区三区四区夜夜大片| 一区二区三区欧美| 免费成人高清视频| 久久久久久国产精品mv| 国产精品区一区| 亚洲最新视频在线播放| 亚洲精品乱码久久久久久蜜桃91 | 久久久久久免费| 欧美一区二区大片| 欧美午夜大胆人体| 亚洲精品欧美一区二区三区| 亚洲精品国久久99热| 美国十次成人| 欧美sm视频| 国产最新精品精品你懂的| 午夜日韩在线观看| 午夜在线精品偷拍| 国产精品久久精品日日| 一区二区日韩欧美| 亚洲视频二区| 国产精品porn| 亚洲一区二区三区四区中文| 亚洲在线观看免费视频| 国产精品国产三级欧美二区 | 免播放器亚洲| 美日韩精品免费| 亚洲丰满在线| 女主播福利一区| 亚洲国产成人在线视频| 日韩一级黄色大片| 国产精品h在线观看| 亚洲一区二区伦理| 激情欧美一区二区三区| 午夜精品久久久久久久久久久| 欧美亚洲综合久久| 国内伊人久久久久久网站视频| 久久精品成人| 亚洲韩国日本中文字幕| 亚洲性图久久| 黑人巨大精品欧美一区二区小视频 | 91久久国产综合久久蜜月精品| 亚洲人成高清| 欧美午夜欧美| 午夜一级久久| 欧美激情一区在线| 一区二区日韩伦理片| 国产伦精品免费视频| 久久久精品日韩欧美| 亚洲激情视频网| 午夜精品美女自拍福到在线| 激情成人av| 欧美性大战久久久久久久蜜臀| 欧美一级一区| 最新精品在线| 久久这里只有精品视频首页| 亚洲免费成人| 国内一区二区在线视频观看| 欧美激情免费在线| 午夜精品久久久久久久99热浪潮| 亚洲第一福利社区| 欧美日韩一区高清| 久久久久久成人| 久久米奇亚洲| 亚洲天堂av在线免费观看| 精品不卡一区| 国产精品久久久久久久7电影| 久久久久久久久蜜桃| 一区二区三区欧美在线| 欧美成人精品三级在线观看| 午夜精品久久久久久久99水蜜桃 | 亚洲精品永久免费精品| 久久久久久久欧美精品| 欧美日韩精品中文字幕| 欧美一区在线直播| aa国产精品| 亚洲国产三级在线| 久久亚裔精品欧美| 性色av一区二区怡红| 一区二区三区国产精华| 亚洲国产精品久久人人爱蜜臀| 国产日韩欧美精品在线| 欧美午夜视频在线| 欧美日韩午夜激情| 欧美精品日韩| 性亚洲最疯狂xxxx高清|