subject_14265.htm

来自「一些关于vc的问答」· HTM 代码 · 共 66 行

HTM
66
字号
<p>
序号:14265 发表者:浪子 发表日期:2002-09-05 13:23:32
<br>主题:结构的初始化
<br>内容:请问高手: 我用BITMAP 定义了一个 bmp 怎样初始化它:具体如下:<BR> BITMAP bmp;//怎样初始化bmp;<BR>请高手指点。先谢了。<BR>
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:Norton AntivVirus 回复日期:2002-09-06 12:45:43
<br>内容:bmp.GetObject();
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:浪子 回复日期:2002-09-06 21:34:02
<br>内容:to Norton: bmp没有GetObject()这样的成员函数的。有没有其他的办法?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:yanqingguang 回复日期:2002-09-07 09:15:14
<br>内容:你的问题提的很好,关于结构的初始化问题:比如<BR>VARIANT variant_inp;<BR>COleSafeArray safearray_inp;<BR>这两个变量的初始化该如何解决?<BR>希望哪位高手指点一下各种类型的变量的初始化问题,谢谢!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:史列因 回复日期:2002-09-07 11:16:31
<br>内容:1:API:CreateBitmap()<BR>2:API:VariantInit()<BR>3:构造函数<BR>1和2是WINDOWS用的传统结构,需要用API函数初始化。<BR>3是C++类,有构造函数,构造时会自动初始化<BR><BR>另外,GetObject()是用来从句柄中提取数据的,和构造没有关系。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:浪子 回复日期:2002-09-07 18:32:37
<br>内容:to 史列因 :谢谢你的解答。对于的解答中的1和2 我比较赞同,用CreateBitmap()能初始化<BR>结构BITMAP吗?我今天刚好看到些资料,他是用GetObject()来初始化的。如下:<BR>CBitmap bitmap;<BR>BITMAP bmp;<BR>bitmap.GetObject(sizeof(BITMAP),&bmp);<BR>可以初始化结构 bmp;<BR>但用这种方法来初始化bmp我终觉得有点古怪。试问这是一种标准的初始化结构的方法吗。有没有其他方法。看上去比较 一般化,容易理解。<BR>对于史列因朋友的3,我觉得结构好象没有构造函数吧。能这样初始化吗?如下:<BR>BITMAP bit;//构造bit !??<BR>如果是<BR>CBitmap bit;//构造bit 没问题的。<BR>不知我的看法是否真确。请史列因 等朋友指点。先谢了。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:史列因 回复日期:2002-09-07 23:01:18
<br>内容:&nbsp;&nbsp;&nbsp;&nbsp;不好意思,我才发现CreateBitmap()返回的是HBITMAP.不过接下来可以用API GetObject()填充BITMAP结构。<BR><BR>HBITMAP hBmp = CreateBitmap(...);<BR>BITMAP bmp;<BR>GetObject( hBmp, sizeof(BITMAP), &bmp );<BR><BR>关于API GetObject()的介绍:<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;The GetObject function obtains information about a specified graphics object. Depending on the graphics object, the function places a filled-in BITMAP, DIBSECTION, EXTLOGPEN, LOGBRUSH, LOGFONT, or LOGPEN structure, or a count of table entries (for a logical palette), into a specified buffer. <BR><BR>int GetObject(<BR>&nbsp;&nbsp;HGDIOBJ hgdiobj,&nbsp;&nbsp;// handle to graphics object of interest<BR>&nbsp;&nbsp;int cbBuffer,&nbsp;&nbsp;&nbsp;&nbsp; // size of buffer for object information<BR>&nbsp;&nbsp;LPVOID lpvObject&nbsp;&nbsp;// pointer to buffer for object information<BR>)<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;其实你也可以自己填充BITMAP结构,很简单的。要注意的是要为最后一个指针分配内存。<BR><BR>对于:<BR>CBitmap bitmap;<BR>BITMAP bmp;<BR>bitmap.GetObject(sizeof(BITMAP),&bmp);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;CBitmap类只是简单的封装了位图的句柄(就是CreateBitmap()返回的是HBITMAP),各种成员函数大都是简单的以封装起来的句柄为参数调用相应的API函数,例如bitmap.GetObject(sizeof(BITMAP),&bmp);用封装的句柄作为参数调用API GetObject();其它GDI Object类也差不多.<BR><BR>3:构造函数指的是COleSafeArray safearray_inp;
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:史列因 回复日期:2002-09-07 23:07:41
<br>内容:&nbsp;&nbsp;&nbsp;&nbsp;By the way: 所谓“初始化结构”很难下定义。看你的意思应该是“赋予合法的数据”。<BR>&nbsp;&nbsp;&nbsp;&nbsp;严格的讲,对于结构,只有下面的形式才能叫“初始化”:<BR>&nbsp;&nbsp;&nbsp;&nbsp;POINT a = { 10,10 };<BR>&nbsp;&nbsp;&nbsp;&nbsp;也就是分配内存的同时赋予初值。对于类对象,执行构造函数初始化就是这种情况。<BR>&nbsp;&nbsp;&nbsp;&nbsp;像前面说到的的做法,只能叫赋予合法的值。<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:浪子 回复日期:2002-09-08 08:33:56
<br>内容:to 史列因 :谢谢你的解答:看了你的帖子 对本人收获很大。对于BITMAP 结构可以用 CBitmap 类的成员函数GetObject().如果对于一般的结构有“标准”的初始化(赋予合法的数据)的方法吗?只有类似与&nbsp;&nbsp;POINT a = { 10,10 };这样吗?如果是这样,我把bmp的结构体成员一个一个的赋予合法的数据,可以吗?如下:<BR>BITMAP bmp;<BR>bmp.xxxx=aaa;<BR>bmp.jjjj=bbbbb;<BR>bmp.ffff=cccc;<BR>.....<BR>与bitmap.GetObject(sizeof(BITMAP),&bmp);等价吗?再请史列因 等高手指点。先谢了 。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:史列因 回复日期:2002-09-08 09:34:17
<br>内容:<BR>&nbsp;&nbsp;&nbsp;&nbsp;像这种形式叫作初始化:<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;POINT a = { 10,10 };<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;像这种形式叫作定义后马上赋值:<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;POINT a;<BR>&nbsp;&nbsp;&nbsp;&nbsp;a.x = 10;<BR>&nbsp;&nbsp;&nbsp;&nbsp;a.y = 10;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;“对于一般的结构有“标准”的初始化(赋予合法的数据)的方法吗?”<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;从逻辑上分析一下,你觉着可能有吗?换句话说,可能有“标准”的确定数据是否合法的方法吗?<BR>&nbsp;&nbsp;&nbsp;&nbsp;不过对于一些Win32结构,倒是有一些辅助函数可以对其进行填充。<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;对于:<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;BITMAP bmp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;bmp.xxxx=aaa;<BR>&nbsp;&nbsp;&nbsp;&nbsp;bmp.jjjj=bbbbb;<BR>&nbsp;&nbsp;&nbsp;&nbsp;bmp.ffff=cccc;<BR>&nbsp;&nbsp;&nbsp;&nbsp;.....<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;与<BR>&nbsp;&nbsp;&nbsp;&nbsp;bitmap.GetObject(sizeof(BITMAP),&bmp);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;功能和效果上基本等价,但形式和过程上不等价。<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;前者是自己填充结构体使其符合自己的要求(相当于自己创建位图),后者是将已经建立的位图对象的信息填充到bmp结构中。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:浪子 回复日期:2002-09-09 12:39:52
<br>内容:非常感谢史列因 朋友。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?