本文整理汇总了C++中ThreadMessageCallback类的典型用法代码示例。如果您正苦于以下问题:C++ ThreadMessageCallback类的具体用法?C++ ThreadMessageCallback怎么用?C++ ThreadMessageCallback使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了ThreadMessageCallback类的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: ProcessMessage
void CApplicationMessenger::ProcessMessage(ThreadMessage *pMsg)
{
//special case for this that we handle ourselves
if (pMsg->dwMessage == TMSG_CALLBACK)
{
ThreadMessageCallback *callback = static_cast<ThreadMessageCallback*>(pMsg->lpVoid);
callback->callback(callback->userptr);
return;
}
CSingleLock lock(m_critSection);
int mask = pMsg->dwMessage & TMSG_MASK_MESSAGE;
auto target = m_mapTargets.at(mask);
if (target != nullptr)
{
CSingleExit exit(m_critSection);
target->OnApplicationMessage(pMsg);
}
}
开发者ID:anaconda,项目名称:xbmc,代码行数:20,代码来源:ApplicationMessenger.cpp
示例2: switch
//.........这里部分代码省略.........
{
if (pMsg->lpVoid)
{
CGUIMessage *message = (CGUIMessage *)pMsg->lpVoid;
g_windowManager.SendMessage(*message, pMsg->param1);
delete message;
}
}
break;
case TMSG_GUI_INFOLABEL:
{
if (pMsg->lpVoid)
{
vector<string> *infoLabels = (vector<string> *)pMsg->lpVoid;
for (unsigned int i = 0; i < pMsg->params.size(); i++)
infoLabels->push_back(g_infoManager.GetLabel(g_infoManager.TranslateString(pMsg->params[i])));
}
}
break;
case TMSG_GUI_INFOBOOL:
{
if (pMsg->lpVoid)
{
vector<bool> *infoLabels = (vector<bool> *)pMsg->lpVoid;
for (unsigned int i = 0; i < pMsg->params.size(); i++)
infoLabels->push_back(g_infoManager.EvaluateBool(pMsg->params[i]));
}
}
break;
case TMSG_CALLBACK:
{
ThreadMessageCallback *callback = (ThreadMessageCallback*)pMsg->lpVoid;
callback->callback(callback->userptr);
}
break;
case TMSG_VOLUME_SHOW:
{
CAction action(pMsg->param1);
g_application.ShowVolumeBar(&action);
}
break;
case TMSG_DISPLAY_SETUP:
{
*((bool*)pMsg->lpVoid) = g_application.InitWindow();
g_application.SetRenderGUI(true);
}
break;
case TMSG_DISPLAY_DESTROY:
{
*((bool*)pMsg->lpVoid) = g_application.DestroyWindow();
g_application.SetRenderGUI(false);
}
break;
case TMSG_UPDATE_CURRENT_ITEM:
{
CFileItem* item = (CFileItem*)pMsg->lpVoid;
if (!item)
return;
if (pMsg->param1 == 1 && item->HasMusicInfoTag()) // only grab music tag
g_infoManager.SetCurrentSongTag(*item->GetMusicInfoTag());
开发者ID:alexmaloteaux,项目名称:xbmc,代码行数:67,代码来源:ApplicationMessenger.cpp
示例3: switch
//.........这里部分代码省略.........
case TMSG_GUI_WINDOW_CLOSE:
{
CGUIWindow *window = (CGUIWindow *)pMsg->lpVoid;
if (window)
window->Close(pMsg->dwParam2 & 0x1 ? true : false, pMsg->dwParam1, pMsg->dwParam2 & 0x2 ? true : false);
}
break;
case TMSG_GUI_ACTIVATE_WINDOW:
{
g_windowManager.ActivateWindow(pMsg->dwParam1, pMsg->params, pMsg->dwParam2 > 0);
}
break;
case TMSG_GUI_PYTHON_DIALOG:
{
if (pMsg->lpVoid)
{ // TODO: This is ugly - really these python dialogs should just be normal XBMC dialogs
if (pMsg->dwParam1)
((CGUIPythonWindowXMLDialog *)pMsg->lpVoid)->Show_Internal(pMsg->dwParam2 > 0);
else
((CGUIPythonWindowDialog *)pMsg->lpVoid)->Show_Internal(pMsg->dwParam2 > 0);
}
}
break;
case TMSG_GUI_ACTION:
{
if (pMsg->lpVoid)
{
CAction *action = (CAction *)pMsg->lpVoid;
if (pMsg->dwParam1 == WINDOW_INVALID)
g_application.OnAction(*action);
else
{
CGUIWindow *pWindow = g_windowManager.GetWindow(pMsg->dwParam1);
if (pWindow)
pWindow->OnAction(*action);
else
CLog::Log(LOGWARNING, "Failed to get window with ID %i to send an action to", pMsg->dwParam1);
}
delete action;
}
}
break;
case TMSG_GUI_MESSAGE:
{
if (pMsg->lpVoid)
{
CGUIMessage *message = (CGUIMessage *)pMsg->lpVoid;
g_windowManager.SendMessage(*message, pMsg->dwParam1);
delete message;
}
}
break;
case TMSG_GUI_INFOLABEL:
{
if (pMsg->lpVoid)
{
vector<CStdString> *infoLabels = (vector<CStdString> *)pMsg->lpVoid;
for (unsigned int i = 0; i < pMsg->params.size(); i++)
infoLabels->push_back(g_infoManager.GetLabel(g_infoManager.TranslateString(pMsg->params[i])));
}
}
break;
case TMSG_GUI_INFOBOOL:
{
if (pMsg->lpVoid)
{
vector<bool> *infoLabels = (vector<bool> *)pMsg->lpVoid;
for (unsigned int i = 0; i < pMsg->params.size(); i++)
infoLabels->push_back(g_infoManager.EvaluateBool(pMsg->params[i]));
}
}
break;
case TMSG_CALLBACK:
{
ThreadMessageCallback *callback = (ThreadMessageCallback*)pMsg->lpVoid;
callback->callback(callback->userptr);
}
break;
case TMSG_VOLUME_SHOW:
{
CAction action((int)pMsg->dwParam1);
g_application.ShowVolumeBar(&action);
}
break;
case TMSG_SPLASH_MESSAGE:
{
if (g_application.m_splash)
g_application.m_splash->Show(pMsg->strParam);
}
break;
}
}
开发者ID:maxolasersquad,项目名称:xbmc,代码行数:101,代码来源:ApplicationMessenger.cpp
注:本文中的ThreadMessageCallback类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论