游戏开发论坛

 找回密码
 立即注册
搜索
楼主: shengkz

如何获得一个函数内对象?

[复制链接]

8

主题

716

帖子

716

积分

高级会员

Rank: 4

积分
716
发表于 2007-6-13 11:16:00 | 显示全部楼层

Re:如何获得一个函数内对象?

在实现一个WINDOWS FRAME类时
WndProc所造成的混乱在于向WINDOWS注册的必须声明为static
而class却无法将自己non-static的WndProc注册进去

一个简单的解决办法就是声明一个static class WINFRAME的指针
在class的ctor中将它赋值为this
然后在static defAppWndProc中调用 static_thisPtr->WndProc

此方法带来的问题就是前提是创建的窗体只能有一个

154

主题

4567

帖子

4579

积分

论坛元老

Rank: 8Rank: 8

积分
4579
QQ
 楼主| 发表于 2007-6-14 23:00:00 | 显示全部楼层

Re:如何获得一个函数内对象?

恩,乱试了一把,在一个类class A里建了一个 protected : static int s_Val ,也建了一个成员函数public : static A::GetVal() { return s_Val; }

我在主窗口里用 A::GetVal();来获得这个s_Val……

可以编译过,但一生成就报错说,无法解析的外部命令……这是怎么回事,郁闷

154

主题

4567

帖子

4579

积分

论坛元老

Rank: 8Rank: 8

积分
4579
QQ
 楼主| 发表于 2007-6-14 23:07:00 | 显示全部楼层

Re:如何获得一个函数内对象?

6spring 和 千里马肝 的回复意思是在类中写一个 static 的 WndProc ? 然后用一个此类的指针来调用这个类中的WndProc ?

154

主题

4567

帖子

4579

积分

论坛元老

Rank: 8Rank: 8

积分
4579
QQ
 楼主| 发表于 2007-6-15 00:08:00 | 显示全部楼层

Re:如何获得一个函数内对象?

还是改回全局了……是可以用 API ,但我觉得虽然这样是方便了,但这样破坏了程序规格……?显得比较乱

86

主题

2251

帖子

2384

积分

金牌会员

Rank: 6Rank: 6

积分
2384
QQ
发表于 2007-6-15 00:22:00 | 显示全部楼层

Re: Re:如何获得一个函数内对象?

shengkz: Re:如何获得一个函数内对象?

恩,乱试了一把,在一个类class A里建了一个 protected : static int s_Val ,也建了一个成员函数public : ...

没写定义,所以s_Val根本不存在
在源文件中加上int A::s_Val = ?;

0

主题

172

帖子

176

积分

注册会员

Rank: 2

积分
176
发表于 2007-6-15 11:23:00 | 显示全部楼层

Re:如何获得一个函数内对象?

-___-|||

还没有解决啊,我说的是利用Win32 API SetWindowLong给你的对象HWND句柄在GWL_USERDATA绑上一个窗口对象指针,然后在static的CALLBAK里,使用GetWindowLong获取该指针,从而达到转到此对象上去执行。

具体的用法查MSDN好了

154

主题

4567

帖子

4579

积分

论坛元老

Rank: 8Rank: 8

积分
4579
QQ
 楼主| 发表于 2007-6-16 00:12:00 | 显示全部楼层

Re:如何获得一个函数内对象?

= =  只好慢慢理解了

362

主题

3023

帖子

3553

积分

论坛元老

Rank: 8Rank: 8

积分
3553
发表于 2008-2-28 03:43:00 | 显示全部楼层

Re:如何获得一个函数内对象?

...为什么要这样用呢?

好吧。。。SmartPtr,

或者,用VB,C#,java

3

主题

101

帖子

101

积分

注册会员

Rank: 2

积分
101
发表于 2009-9-14 13:36:00 | 显示全部楼层

Re:如何获得一个函数内对象?

研究一下CALLBACK机制,就一目了然了.

护卫骑士???????==========>怎么混出来的?

USER_DATA是一种方法,,还有"全局实例";

ClassA a;

WndProc funcion(...)
{
  a.MsgProc(....);
}

0

主题

4

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2009-9-18 22:45:00 | 显示全部楼层

Re: 如何获得一个函数内对象?

想法是好的,把关健变量放到局部,就算不用CALLBACK也是能操作这个变量,搜索内存管你放哪里都是一样的,
做外挂开发的人是不管你的变量是在winpro还是在do while那,就算你修改了存储这个变量的内存页面的放问属性,别人一样可以读取的,因为你能做的事做外挂的人一样能做的。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-6-20 13:01

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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