游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2845|回复: 5

关于Win32消息处理的问题.

[复制链接]

1

主题

1

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2004-6-11 20:05:00 | 显示全部楼层 |阅读模式
OK我的问题是这样:
我的程序有一个类CEngine, 这个类有一个静态成员函数MsgProc(), 现在我给这程序加入了标准Windows菜单, 并希望通过该菜单用户能够修改类中的某些公有成员(变量).

现在的问题是, 若要想在一个类中现消息处理(message handler), 这个成员函数必须被声明为静态, 即MsgProc()必须为静态, 但不幸的是, 静态成员不能够访问类中的其它非静态成员变量. 即MsgProc()在接到用户点击菜单命令时不能对指定的公有成员做出相应修改. 我相信MFC中一定有类似的问题, 但我没学过.

谁能教我怎么解决这个问题? 我只想能正常使用菜单而已. 谢谢!

201

主题

1437

帖子

1963

积分

金牌会员

Rank: 6Rank: 6

积分
1963
QQ
发表于 2004-6-11 20:36:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

37

主题

378

帖子

388

积分

中级会员

Rank: 3Rank: 3

积分
388
QQ
发表于 2004-6-12 07:02:00 | 显示全部楼层

Re:关于Win32消息处理的问题.

若要想在一个类中现消息处理(message handler), 这个成员函数必须被声明为静态, 即MsgProc()必须为静态


不是必需的吧……我见过用一个总的WinProc来调用各类中的MsgProc

36

主题

1047

帖子

1147

积分

金牌会员

Rank: 6Rank: 6

积分
1147
发表于 2004-6-15 10:30:00 | 显示全部楼层

Re:关于Win32消息处理的问题.

再外部定义一个 MsgProc,然后申明一个全局的 engine 对象,在 MsgProc 内部调用 CEngine 的 MsgProc (非静态的)
void MsgProc( ... ){
    g_engine->MsgProc( .... );
}

2

主题

13

帖子

17

积分

新手上路

Rank: 1

积分
17
发表于 2004-6-17 12:31:00 | 显示全部楼层

Re:关于Win32消息处理的问题.

利用SetWindowsLong
和GetWindowsLong
传递this指针

或者在CEngine前,定义Cengine对象,然后用这个对象调用内部函数!

37

主题

378

帖子

388

积分

中级会员

Rank: 3Rank: 3

积分
388
QQ
发表于 2004-6-17 21:31:00 | 显示全部楼层

Re:关于Win32消息处理的问题.

楼上的你更强!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-7-2 00:28

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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