bool onMouseButtonDown(const EventArgs & e)
{
const MouseEventArgs & eMouse = static_cast<const MouseEventArgs &>(e);
// 取得控件(窗口)在屏幕主窗口中的绝对像数位置
//Rect rectScreen = eMouse.window->getUnclippedPixelRect();
Rect rectScreen = eMouse.window->getPixelRect();
// 取得控件相对于父窗口的相对位置
CEGUI::Size parentSize = eMouse.window->getParentPixelSize(); // 父窗口的像数大小
Vector2 pos = eMouse.window->getPosition().asAbsolute(parentSize); // 相对于父窗口的像数位置
Vector2 relPos = eMouse.window->getPosition().asRelative(parentSize); // 相对于父窗口的百分比位置
// 鼠标事件参数中的位置信息eMouse.position是主窗口屏幕的绝对位置
Point absMousePos = eMouse.position;
// 变化为相对于该控件的相对位置
Point relMousePos;
relMousePos.d_x = absMousePos.d_x - rectScreen.d_left;
relMousePos.d_y = absMousePos.d_y - rectScreen.d_top;
ListboxItem* curPosItem = this->getItemAtPoint(relMousePos);
MessageBoxA(0, curPosItem->getText().c_str(), 0, 0);
return true;
}