搜索
查看: 991|回复: 5

SendMessage疑问咨询

[复制链接]

15

主题

56

帖子

340

积分

二级会员

Rank: 3Rank: 3

积分
340
发表于 2017-12-8 11:59:46 | 显示全部楼层 |阅读模式
mainForm.wndproc = function(hwnd,message,wParam,lParam){
        select(message){
                case 0xAFFE/*打开收银台*/ {
                        win.msgbox("收到通知");
                        platForm=mainForm.loadForm("/forms/plat.aardio",mainForm);
                        loginForm.show(false);
                }
        }
}

我在另一个窗口使用 ::SendMessage(..mainForm.hwnd,0xAFFE);

mainForm这边接收不到。。。不清楚是哪个环节弄错了。。以前也是这样写的。。。
回复

使用道具 举报

185

主题

2541

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
13973
发表于 2017-12-8 12:07:46 | 显示全部楼层
在论坛提问,发代码要能重现问题
回复

使用道具 举报

185

主题

2541

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
13973
发表于 2017-12-8 12:15:24 | 显示全部楼层
使用自定义消息注意看帮助文档

0 ~ WM_USER–1
操作系统保留的消息。

WM_USER ~ 0x7FFF
私有窗口级别的自定义消息。

WM_APP ~ 0xBFFF
应用程序级别的自定义消息。其中0xAAAA 至 0xBFFF 为aardio标准库保留值请勿使用。

0xC000 ~ 0xFFFF
::RegisterWindowMessage函数定义一个新的窗口消息,该消息保证在整个系统范围内是唯一的。

0xFFFF ~
操作系统保留的消息。

回复

使用道具 举报

15

主题

56

帖子

340

积分

二级会员

Rank: 3Rank: 3

积分
340
 楼主| 发表于 2017-12-8 12:33:25 | 显示全部楼层
找到原因了。。。谢谢哈。。
回复

使用道具 举报

185

主题

2541

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
13973
发表于 2017-12-8 12:37:23 | 显示全部楼层
yootou 发表于 2017-12-8 12:33
找到原因了。。。谢谢哈。。

用自定义消息,代码可读性不好,消息ID容易相互冲突。
如果是跨线程可以用 thread.command,同线程可以用 publish

实际上 mainForm是一个全局变量,也可以传到线程里使用。
你用这种写法,就不如给 mainForm增加一个函数, 例如:
mainForm.test = function(){
   
}
在其他地方,直接调用 mainForm.text() 就可以了
回复

使用道具 举报

15

主题

56

帖子

340

积分

二级会员

Rank: 3Rank: 3

积分
340
 楼主| 发表于 2017-12-8 12:47:33 | 显示全部楼层
嗯嗯,谢谢哈。。先前我把wndproc的方法放在loadForm后边去了,所以loadForm打开的窗口那边,没有接收到对mainForm.wndproc定义的内容。。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

手机版|未经许可严禁引用或转载本站文章|站长邮箱|aardio.com|aardio官方社区 ( 皖ICP备09012014号 )

GMT+8, 2018-10-17 15:02 , Processed in 0.062500 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表