标题:现场直憋:从零开始学习 使用win32汇编写一个屏幕截图 截屏 小程序 长期更新 ...
只看楼主
信箱有效
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:9
帖 子:1102
专家分:4268
注 册:2012-6-19
结帖率:100%
 问题点数:0 回复次数:30 
现场直憋:从零开始学习 使用win32汇编写一个屏幕截图 截屏 小程序 长期更新
发奋win32汇编也有不少天了,都是在看书,感觉还是大部分能看的明白。
可一想自己写。。。就发现完全不会咧
能看懂离自己会写这简直差了十万八千里。so 我要千里之行 始于足下,我要勇敢的迈出第一步
开始写一个屏幕截图小程序,有木有要一起写的哥哥姐姐弟弟妹妹.

这个帖子我要坚持写下去 ,不再开新贴咧。

---------------------------------------------
使用匈牙利表示法
子程序前加下划线
参数前加下划线
局部变量前加@
尽量封装成子程序
尽量少的使用全局变量
...

---------------------------------------------


[ 本帖最后由 信箱有效 于 2012-10-14 01:45 编辑 ]
搜索更多相关主题的帖子: 下划线 匈牙利 哥哥 子程序 
2012-10-11 00:56
小习小习
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:6
帖 子:1467
专家分:4792
注 册:2012-7-2
得分:0 
向上学习了

实现自己既定的目标,必须能耐得住寂寞单干。
2012-10-11 09:47
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
得分:0 
win32汇编写windows程序可能是开发windows程序比较麻烦的一种方法了 不过如果能写一些东西会对windows的很多原理性的东西有一定的认识

不过现在开发都讲究快 研究这个有没有意义呢 呵呵 我也不知道
2012-10-11 12:18
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
得分:0 
恭喜楼主勇敢地迈出了第一步
强烈帮顶

梅尚程荀
马谭杨奚







                                                       
2012-10-11 14:04
zhu224039
Rank: 8Rank: 8
等 级:贵宾
威 望:17
帖 子:862
专家分:792
注 册:2012-7-29
得分:0 
回帖无意义,都没问题分可拿 楼主小气了

我要成为嘿嘿的黑客,替天行道
2012-10-11 15:11
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:396
帖 子:11713
专家分:43267
注 册:2006-5-13
得分:0 
楼主的第一步是第几次开始迈了?

活到老,学到老! http://www. E-mail:hu-jj@
2012-10-11 22:21
信箱有效
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:9
帖 子:1102
专家分:4268
注 册:2012-6-19
得分:0 
首先取得当前系统的分辨率
填BITMAPINFO
屏幕DC
内存DC
截图拷贝到内存DC
这是第一步。先写成一个子程序。

2012-10-12 00:38
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
得分:0 
截屏程序真心不懂 求代码 雪袭、

梅尚程荀
马谭杨奚







                                                       
2012-10-12 12:33
信箱有效
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:9
帖 子:1102
专家分:4268
注 册:2012-6-19
得分:0 
首先将屏幕截图,然后将图继续显示在屏幕上,鼠标变色,鼠标选择区域,保存。

看书的时候感觉不难都能看懂,一到下手写了,脑子一片空白,不知道从什么地方开始。古人说的好哇 看千遍不如写一遍。

复习一下相关知识
程序代码:
位图                存放在内存中 马上就可以使用的位图  颜色深度跟当前设备对应

设备无关位图DIB     色彩表和位图数据合在一起

位图文件BMP文件     以BMP为扩展名保存在磁盘上,包括一个bitmap文件头和DIB数据 ,
                    bitmap文件头,可验证BMP文件的有效性
使用BMP文件方式:
一 打开bmp文件 读入DIB部分的数据,然后用函数将DIB数据转换成位图数据。
二 在资源文件中定义位图资源,在程序中装入使用。

获取hDC:

当绘图对象是窗口时
WM_PAINT中BeginPaint后返回得到hDC,对应为无效区域,仅在WM_PAINT消息中有效
invoke    GetDC,    hWnd
对应为整个窗口客户区,也是需要在一条消息中使用,然后必须ReleaseDC

当绘图对象是设备时

invoke CreateDC,lpszDriver,lpszDevice,lpszOutput,lpInitData  
lpszDriver为设备名。
invoke CreateCompatibleDC,hDC
创建一个兼容DC,显示表面仅存在于内存中
不使用时都要DeleteDC

2012-10-12 21:35
信箱有效
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:9
帖 子:1102
专家分:4268
注 册:2012-6-19
得分:0 
结构之困惑:

看书的时候,bmp的几个结构还算搞的明白,但是越来越糊涂了 2种结构 又出来个BITMAPINFO结构

现在要发奋把这个bmp结构搞清楚


typedef struct tagBITMAPFILEHEADER {
  WORD    bfType;
  DWORD   bfSize;
  WORD    bfReserved1;
  WORD    bfReserved2;
  DWORD   bfOffBits;
} BITMAPFILEHEADER, *PBITMAPFILEHEADER;

首先是位图文件头BITMAPFILEHEADER。


typedef struct tagBITMAPINFOHEADER{
  DWORD  biSize;
  LONG   biWidth;
  LONG   biHeight;
  WORD   biPlanes;
  WORD   biBitCount;
  DWORD  biCompression;
  DWORD  biSizeImage;
  LONG   biXPelsPerMeter;
  LONG   biYPelsPerMeter;
  DWORD  biClrUsed;
  DWORD  biClrImportant;
} BITMAPINFOHEADER, *PBITMAPINFOHEADER;
然后是位图信息头BITMAPINFOHEADER结构。





typedef struct tagRGBQUAD {
  BYTE    rgbBlue;
  BYTE    rgbGreen;
  BYTE    rgbRed;
  BYTE    rgbReserved;

} RGBQUAD;
再然后是色彩表RGBQUAD结构。



最后就是位图的像素数据了。



=====================================================================

BITMAPINFO结构
typedef struct tagBITMAPINFO {
  BITMAPINFOHEADER bmiHeader;
  RGBQUAD          bmiColors[1];
} BITMAPINFO, *PBITMAPINFO;
它是将位图信息头和色彩表合在一起的一个结构。



这样一个完整的bmp文件就是这样构成:
BITMAPFILEHEADER
BITMAPINFO
位图像素数据

原来以为多复杂。。。实际就是这样简单。


----------------------------------------------------------
----------------------------------------------------------
另外还有一种OS/2兼容的bmp格式,它使用了BITMAPCOREINFO结构。
bmp构成为:
BITMAPFILEHEADER
BITMAPCOREINFO
位图像素数据
其中BITMAPCOREINFO结构为:
typedef struct _BITMAPCOREINFO {
  BITMAPCOREHEADER  bmciHeader;
  RGBTRIPLE         bmciColors[1];
} BITMAPCOREINFO, *PBITMAPCOREINFO;
这种格式一般用的不多,不过要操作一个已有的BMP文件时,最好判断一下是哪种。
2012-10-13 00:22



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-382877-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.672330 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved