游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1538|回复: 1

一个类的函数调用问题,求教!

[复制链接]

2

主题

2

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2009-3-27 13:11:00 | 显示全部楼层 |阅读模式
"xxxx.h"

class GameStarWindow{
public:
static        LRESULT CALLBACK WndProc(HWND hwnd,        UINT msg, WPARAM wParam,LPARAM lParam);//创建消息回调函数
public:
        void        Gamemaster();
};                                               
=============================================================


#include"xxxx.h"
LRESULT CALLBACK GameStarWindow::WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
        switch(msg)
        {
        case WM_DESTROY:
                PostQuitMessage(0);
                return 0;
        case WM_ACTIVATE:
                   Gamemaster();//这里调用非静态函数会出现问题 error C2352:     “GameStarWindow::Gamemaster”:  非静态成员函数的非法调用
                break;
        }
    return DefWindowProc( hwnd, msg, wParam, lParam );
}
......

我不想改变程序的逻辑,请问怎么解决这个问题。

3

主题

263

帖子

267

积分

中级会员

Rank: 3Rank: 3

积分
267
发表于 2009-3-27 19:12:00 | 显示全部楼层

Re:一个类的函数调用问题,求教!

一个方法:
使用带有用户自定义数据扩展的窗口接口,cbWndExtra = sizeof(GameStarWindow*),或者void*,因为指针大小都一样.
创建窗口之后,使用GetWindowLong(GWL_USERDATA)得到自定义数据,把this指针写进去.
这样在消息处理的时候,就可以通过GetWindowLong得到用户数据,强制转换成GameStarWindow* 指针.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-20 15:46

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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