MFC中的小问题

lq651659889 2010-05-26 09:21:21
最近在学习MFC,一直有个问题想不明白望高手指教.里面定义的DWORD类型是怎么转换成别的数据结构类型的?举个小列子哈
...全文
77 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
patricxuqi 2010-05-26
  • 打赏
  • 举报
回复
类型转换只是涉及到内存单元的数据解释问题。如果转换后的内存大小没有变小就不会丢失精度。
azure110 2010-05-26
  • 打赏
  • 举报
回复
typedef unsigned long DWORD; 其实DWORD是无符号长整型;
你的问题应该是 传入 结构体指针吧, 一般 DWORD 占用四个字节,而指针也是四个字节,可以完整地保存结构体的地址,因此可以强制转换.
比如
#include "stdafx.h"
#include <windows.h>
struct T_
{
int a;
char a1;
};

int main(int argc, char* argv[])
{
T_ t1;
t1.a=1;
t1.a1='a';
DWORD bb;
bb=(DWORD)& t1;
T_ t2=*((T_*)bb);

printf("Hello World!\n");
return 0;
}
AlanBruce 2010-05-26
  • 打赏
  • 举报
回复
至于使用DWORD类型保存指针其实在WIN32里面用的不是很多

用到了的话

一般只保存普通类型temp指针

在自定义类型的情况下

存在指针转换,那么它的条件是:自定义类型之间有继承关系或者就是同一种类型

尽量避免"向下转换"
AlanBruce 2010-05-26
  • 打赏
  • 举报
回复
32bit不管你是用按位强制转换都可以。


只要你对转换的数据类型有把握

不会出现数据溢出或有无符号区别

static_cast<>()

reinterpret_cast<>()
yanran_hill 2010-05-26
  • 打赏
  • 举报
回复
就是UNSIGN LONG
在win32下是4个字节

它的长度是定义的
也就是在win32中有这样的定义:
#define DWORD unsigned long

所以比较方便移植用的

Windows下经常用来保存地址(或者存放指针)
其他unsigned long可以用的地方,它也是可以用的
某某9 2010-05-26
  • 打赏
  • 举报
回复
友情up!
hoya5121 2010-05-26
  • 打赏
  • 举报
回复
通常是别的结构指针转换为dword存储。用的时候转换为指针

64,639

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧