社区
Delphi
帖子详情
请教各位:关于强制类型转换
GipsyCN
2001-10-08 03:43:39
子窗口中:
SendMessage(hMainFormHandle, WM_MERGE_MENU, 0, LongInt(@aMainMenu));
主窗口处理WM_MERGE_MENU消息时:
procedure TfmDTMMain.MergeSubMenu(var aMsg: TMessage);
begin
MainMenu1.Merge(TMainMenu(aMsg.LParam));
end;
为什么会出错???
...全文
141
14
打赏
收藏
请教各位:关于强制类型转换
子窗口中: SendMessage(hMainFormHandle, WM_MERGE_MENU, 0, LongInt(@aMainMenu)); 主窗口处理WM_MERGE_MENU消息时: procedure TfmDTMMain.MergeSubMenu(var aMsg: TMessage); begin MainMenu1.Merge(TMainMenu(aMsg.LParam)); end; 为什么会出错???
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
GipsyCN
2001-10-23
打赏
举报
回复
在“大富翁”上搞定!多谢各位参与!
MainMenu1.Merge(PTMainMenu(Pointer(aMsg.LParam)^)!!!
hantao
2001-10-16
打赏
举报
回复
up
klcn
2001-10-08
打赏
举报
回复
现在你的消息传递和类型转换都是没有问题的,
也就是说在你的消息处理函数中已经成功的得到
了aMainMenu,你可以调试一下看看,在消息处理函数
中经过类型转换后的值是否仍然指向一块有效的内存。
如果这些都没有问题,只能说明你在消息处理函数中对
这个值的使用有问题。
GipsyCN
2001-10-08
打赏
举报
回复
下面的代码没问题:
procedure SendStrToMainForm(asMsg: string);
begin
SendMessage(gAppInfo.hMainFormHandle, WM_GET_STR, 0, LongInt(PChar(asMsg)));
end;
procedure TfmDTMMain.DispGetStr(var aMsg: TMessage);
begin
stbMain.Panels[2].Text := string(aMsg.LParam);
end;
klcn
2001-10-08
打赏
举报
回复
使用@aMainMenu是取得对象引用本身的的地址,这样是不对的。
改了以后仍然有问题,可能是你的处理函数有问题。
GipsyCN
2001-10-08
打赏
举报
回复
我也尝试过使用先定义: PTMainMenu = ^TMainMenu;
MainMenu1.Merge(PTMainMenu(aMsg.LParam)^)
同样不行。
GipsyCN
2001-10-08
打赏
举报
回复
我的程序框架模仿资源管理器,
所有的子窗口显示时都显示在主窗口右半部分的NoteBook的不同页面上,
而子窗口和主窗口的通信,都是使用SendMessage。
我怀疑可能这种强制转换对TMainMenu不适合(也没道理啊)。
saimaya
2001-10-08
打赏
举报
回复
gz
hellion
2001-10-08
打赏
举报
回复
不存在的话当然出错了。
1、改成全局变量
2、处理消息前不要free
GipsyCN
2001-10-08
打赏
举报
回复
应该是不存在,是强制转换不成功,我想,否则不会出错了。
hellion
2001-10-08
打赏
举报
回复
主窗口处理WM_MERGE_MENU消息时aMainMenu还存在么?
GipsyCN
2001-10-08
打赏
举报
回复
首先感谢这位朋友。我曾试过,结果一样。
chechy
2001-10-08
打赏
举报
回复
改一下:
SendMessage(hMainFormHandle, WM_MERGE_MENU, 0, LongInt(aMainMenu));
注意Delphi的类本身就是一个指针,所以不必使用@符号。
MFC中强制转换总结
强制类型转换
符号的一般形式如下: cast_name(expression); 其中cast_name为static_cast,dynamic_cast,const_cast和reinterpret_cast之一,type为转换的目标类型,而expression则是被强制转换的值。强制转换的类型指定了在expression上执行某种特定类型的转换。 1.static_cast 它
数据类型转换的整理
说明:本文纯粹是总结一下有关类型转换的贴子,
本人并未对所有方法都做测试,仅仅是为了给大家一个参考。
读者层次:初学
int i = 100;
long l = 2001;
float f=300.2;
double d=12345.119;
char username[]="程佩君";
char temp[200];
char *buf;
CString str;
_variant_t
对论坛中有关数据类型转换的整理
说明:本文纯粹是总结一下有关类型转换的贴子, 本人并未对所有方法都做测试,仅仅是为了给大家一个参考。 读者层次:初学 int i = 100;long l = 2001;float f=300.2;double d=12345.119;char username[]="程佩君";char temp[200];char *buf;CString str;_variant_t v1;_bstr_t v...
【Rust 基础篇】Rust Never类型:表示不会返回的
考察二叉树的深度优先遍历。自我介绍webrtc 传输,协议,websocket,用于udp,tcp,场景,特点quic,解决了什么,http3Http2 多路复用,为什么还会队头阻塞,答。1.考察知识点:二叉树遍历、递归2.编程语言: C3.解题思路: 直接采用递归,返回左子树深度+右子树深度+1(表示根节点深度)即可4.完整代码:/**1.考察知识点:long、
强制类型转换
2.编程语言: C3.解题思路: 直接返回long类型的结果即可4.完整代码:/** * 代码中的类名、方法名、参。
转:VC++常用数据类型转换
留着方便自查
VC++数据类型转换
int i = 100;
long l = 2001;
float f=300.2;
double d=12345.119;
char username[]="巩俐&周润发";
char temp[200];
char *buf;
CString str;
_variant_t v1;
_bstr_t v2;
Delphi
5,386
社区成员
262,729
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章