error C2182: “Buffer”: 非法使用“void”类型//请问下面错误只能把PVOID64改成void*? typedef void * PVOID64;typedef union _FILE_SEGMENT_ELEMENT { PVOID64 Buffer; ULONGLONG Alignment; }FILE_SEGMENT_ELEMENT, *PFILE_SEGMENT_ELEMENT; 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 typedef void* PVOID64;是这样么 “typedef void * PVOID64;”放的 位置不对 吧?头文件 ? error C2182: “Buffer”: 非法使用“void”类型都是在同一个.cpp文件内呀 1.看看 PVOID64 是否已经有定义;2.PVOID64 Buffer;使用 可能 有问题。因为 union 的 成员 必须等长。而 void *PVOID64,并没有 长度信息,你想要 8字节长度的指针吗 ? union 的成员必须等长谁说的?PVOID64 在这里很明显是一个指针,那么长度就已经确定下来了。不过你说的第一个点我觉得可能,这个微软很有可能已经定义过了。 因为 union 的 成员 通常等长。楼主在这里是要个 8字节的 指针吧。void *PVOID64 只是 4字节指针如果 64 位 环境 就达到目的了。 我查了 这是系统 :“winnt.h”中的 代码 ////////////////////////////////////typedef union _FILE_SEGMENT_ELEMENT { PVOID64 Buffer; ULONGLONG Alignment;}FILE_SEGMENT_ELEMENT, *PFILE_SEGMENT_ELEMENT;//////////////////////////////////////typedef void *PVOID;typedef void * POINTER_64 PVOID64;/////////////////////////////////////typedef void *PVOID64;//没错FILE_SEGMENT_ELEMENT //union' type redefinition vs08编译不过啊 我手动改头文件里的 改成void*了 既然是“winnt.h”有定义。你就不要定义了。直接使用就可以了。08 不会没有 “winnt.h”吧? 产生兼容的位图(CreateCompatibleBitmap)要 看 与 谁 兼容。所谓兼容 就是 格式 兼容,即 那个 DC如果 这个 DC 是 memDC 那就 产生 一个 黑白位图,因为 memDC 默认是 单色DC,如果 这个 DC 是 客户区DC 那就 产生 一个 彩色位图。CreateCompatibleBitmap 要给出 宽高, 一般 不会是 1*1. 我说的不是长*宽 是一个点的位数(比如8位、24位)//不是位数越多表示的颜色越丰富吗???CreateCpmpatibleDC 是 产生一个 内存DC ,这个内存dc 刚开始创建时 有 一个 默认的 1点 黑白 单色 位图。如果 你不为他 创建 一个 兼容的 彩色 位图,那么对这个内存DC的 绘图操作 (如 setpixel) 只能 产生 黑白的 位图。createcompatibledc创建hdc;用这个hdc生成的bmp 一个点的位数就1位吧(黑白图);所以,要加载一张兼容的 彩色 hdc创建的点位数高的位图进去;setpixel才能管用不是这原理吗????????????? “createcompatibledc创建hdc;用这个hdc生成的bmp 一个点的位数就1位吧(黑白图);所以,要加载一张兼容的 彩色 hdc创建的点位数高的位图进去;setpixel才能管用”你不是已经明白了吗?彩色位图 现在 很少 有 《8位的 (256)色 , 另外:使用:GetDeviceCapsule(hdc,BITSPIXEL);得到 客户区DC 的 bpp (bits per pixel) 严重不相信msdn呀!!!我看下msdn的getdc函数没有说是彩色的设备啊//或者说与craetecompatiblebitmap的区别比较msdn里有吗??? 如何把一个文件添加到一个.exe文件中 请问这句该怎么翻译 VC 查询数据库的问题 求用VC将Excel转换成TXT的代码 如何对文档进行加密?100分求教!! 要回家了,好久不能见大家了,散分100! 高手请进!!!关于theApp的问题! 请问c中的memcpy在vc中应该用什么啊? 靠,我再出200分,我就不信偌大的CSDN连这个问题都解决不了!关于老式的手柄,就是插在打印机接口上的那种,如果在XP安装使用??? 易水大哥,你的qq是多少呀??? 调整BMP亮度 MFC对话框程序: 直接关掉对话框后 资源没法释放的问题
是这样么
放的 位置不对 吧?
头文件 ?
error C2182: “Buffer”: 非法使用“void”类型
都是在同一个.cpp文件内呀
2.PVOID64 Buffer;使用 可能 有问题。
因为 union 的 成员 必须等长。
而 void *PVOID64,并没有 长度信息,
你想要 8字节长度的指针吗 ?
楼主在这里是要个 8字节的 指针吧。
void *PVOID64 只是 4字节指针如果 64 位 环境 就达到目的了。
“winnt.h”
中的 代码
////////////////////////////////////
typedef union _FILE_SEGMENT_ELEMENT {
PVOID64 Buffer;
ULONGLONG Alignment;
}FILE_SEGMENT_ELEMENT, *PFILE_SEGMENT_ELEMENT;
//////////////////////////////////////
typedef void *PVOID;
typedef void * POINTER_64 PVOID64;
/////////////////////////////////////
typedef void *PVOID64;//没错
FILE_SEGMENT_ELEMENT //union' type redefinition
“winnt.h”
有定义。
你就不要定义了。
直接使用就可以了。
08 不会没有 “winnt.h”
吧?
所谓兼容 就是 格式 兼容,
即 那个 DC
如果 这个 DC 是 memDC 那就 产生 一个 黑白位图,因为 memDC 默认是 单色DC,
如果 这个 DC 是 客户区DC 那就 产生 一个 彩色位图。
CreateCompatibleBitmap 要给出 宽高, 一般 不会是 1*1.
CreateCpmpatibleDC 是 产生一个 内存DC ,这个内存dc 刚开始创建时 有 一个 默认的 1点 黑白 单色 位图。如果 你不为他 创建 一个 兼容的 彩色 位图,那么对这个内存DC的 绘图操作 (如 setpixel) 只能 产生 黑白的 位图。createcompatibledc创建hdc;用这个hdc生成的bmp 一个点的位数就1位吧(黑白图);所以,要加载
一张兼容的 彩色 hdc创建的点位数高的位图进去;setpixel才能管用
不是这原理吗?????????????
一张兼容的 彩色 hdc创建的点位数高的位图进去;setpixel才能管用”
你不是已经明白了吗?彩色位图 现在 很少 有 《8位的 (256)色 ,
使用:
GetDeviceCapsule(hdc,BITSPIXEL);
得到 客户区DC 的 bpp (bits per pixel)
我看下msdn的getdc函数没有说是彩色的设备啊//或者说与craetecompatiblebitmap的区别比较msdn里有吗???