首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

一个初始化实例的有关问题

2012-03-27 
一个初始化实例的问题 - C++ Builder / Windows SDK/APIC/C++ codevoid CALLBACK PlayDrawFun(long nPort,

一个初始化实例的问题 - C++ Builder / Windows SDK/API

C/C++ code
void CALLBACK PlayDrawFun(long nPort,HDC hDc,LONG nUser) {    CPlayer264demoDlg* pDlg = (CPlayer264demoDlg*)nUser;    pDlg->m_VideoWndDC = hDc;        if (!pDlg->m_bLButtonDown) return ;        if ((pDlg->m_StartPoint.x == pDlg->m_EndPoint.x)         && (pDlg->m_StartPoint.y == pDlg->m_EndPoint.y))        return ;        SelectObject(hDc, CreatePen(PS_SOLID, 2, RGB(255,0,0)));        MoveToEx(pDlg->m_VideoWndDC, pDlg->m_StartPoint.x, pDlg->m_StartPoint.y, 0);     LineTo(pDlg->m_VideoWndDC, pDlg->m_EndPoint.x, pDlg->m_StartPoint.y);     LineTo(pDlg->m_VideoWndDC, pDlg->m_EndPoint.x, pDlg->m_EndPoint.y);        MoveToEx(pDlg->m_VideoWndDC, pDlg->m_StartPoint.x, pDlg->m_StartPoint.y, 0);     LineTo(pDlg->m_VideoWndDC, pDlg->m_StartPoint.x, pDlg->m_EndPoint.y);     LineTo(pDlg->m_VideoWndDC, pDlg->m_EndPoint.x, pDlg->m_EndPoint.y);            DeleteObject(SelectObject(hDc, GetStockObject(BLACK_PEN)));    DeleteObject(SelectObject(hDc, GetStockObject(WHITE_BRUSH)));}



这里面的
C/C++ code
CPlayer264demoDlg* pDlg = (CPlayer264demoDlg*)nUser;

为何意呢。
CPlayer264demoDlg为我自己的一个类

[解决办法]
PlayDrawFun是回调函数,一般通过参数将要操作的对象的地址传进来,nUser是你对象的地址。CPlayer264demoDlg* pDlg = (CPlayer264demoDlg*)nUser;的意思是将你回调函数传入的对象赋值给本地局部变量,通过操作本地局部变量就可以完成对你传入对象的操作。



[解决办法]
nUser强制转换CPlayer264demoDlg *类型

热点排行