读书人

语法有关问题2

发布时间: 2012-02-10 21:27:41 作者: rapoo

语法问题2!
[code=C/C++][/code]
class Application
{
public:
HINSTANCE instance;
HINSTANCE prev_instance;
LPSTR cmd_line;
INT cmd_show;
void *entity; //这个定义的是什么意思?
Application():instance(NULL), prev_instance(NULL), cmd_line(NULL), cmd_show(0){}; //这里是什么用法?
void init(HINSTANCE inst, HINSTANCE prev_inst, LPSTR cl, INT cs)
{
instance = inst; prev_instance = prev_inst, cmd_line = cl, cmd_show = cs;
};
};
Application application;
/****************************************************************************************/
class Game
{
const int wnd_w, wnd_h;
Grid grid;
HPEN border_pen;
Wnd wnd;
HBITMAP canvas;
static LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
return ((Game*)application.entity)->proc(hWnd, message, wParam, lParam); //这句中的(Game*)和->是什么意思?以及这句话的用法与意思?
}
public:
Game(LPCTSTR name):wnd_w(640), wnd_h(480),grid(640,480)
{
srand(time(NULL));
border_pen = NULL;
wnd.handle = CreateWindowEx(0, "STATIC", name, WS_POPUP,
(GetSystemMetrics(SM_CXFULLSCREEN)-wnd_w)/2,( GetSystemMetrics(SM_CYFULLSCREEN)-wnd_h)/2,
wnd_w, wnd_h,
NULL, NULL, application.instance, NULL
);

LRESULT CALLBACK proc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
……
}
};
以上是一个小游戏中的两个类。麻烦高手解说一下,非常感谢!


[解决办法]
void *entity; //这个定义的是什么意思?
声明了一个void *指针

Application():instance(NULL), prev_instance(NULL), cmd_line(NULL), cmd_show(0){}; //这里是什么用法?
构造函数,并初始化成员变量
[解决办法]
return ((Game*)application.entity)->proc(hWnd, message, wParam, lParam); //这句中的(Game*)和->是什么意思?以及这句话的用法与意思?
把application.entity强制转化成Game*,然后调用Game类的proc函数
[解决办法]
void *entity; //这个定义的是什么意思?
定义void*类型的指针变量entity
Application():instance(NULL), prev_instance(NULL), cmd_line(NULL), cmd_show(0){}; //这里是什么用法?
初始化成员变量
return ((Game*)application.entity)->proc(hWnd, message, wParam, lParam); //这句中的(Game*)和->是什么意思?以及这句话的用法与意思?
(Game*)把application对象的entity成员强制转换为Game*类型的指针,->用前面得到的指针调用proc函数,这是典型的通过类指针调用成员函数来实现回调的用法

读书人网 >C++

热点推荐