今天公司pc程序接sdk时要加一个二次确认弹窗,想着再去UI做一个弹窗确实麻烦,所以就直接用了系统的弹窗,丑了点,但是版本应对一下了!
1、win的api是自带有弹窗的,可以搜一下MessageBox这个,c++的工程是可以搜到的
2、下面是源文件的,这是cocos这个有写的
3、根据这个,拿出来实现了一个自己的,因为回调等等原因吧!
以下是自己的代码
static void MessageBoxOKCancel(const char * pszMsg, const char * pszTitle, const std::function
{
int bufflen = MultiByteToWideChar(CP_UTF8, 0, pszMsg, -1, NULL, 0);
WCHAR* wideMsg = new WCHAR[bufflen + 1];
memset(wideMsg, 0, sizeof(WCHAR)* (bufflen + 1));
MultiByteToWideChar(CP_UTF8, 0, pszMsg, -1, wideMsg, bufflen);
bufflen = MultiByteToWideChar(CP_UTF8, 0, pszTitle, -1, NULL, 0);
WCHAR* wideTitle = new WCHAR[bufflen + 1];
memset(wideTitle, 0, sizeof(WCHAR)* (bufflen + 1));
MultiByteToWideChar(CP_UTF8, 0, pszTitle, -1, wideTitle, bufflen);
if (IDOK == MessageBoxW(NULL, wideMsg, wideTitle, MB_OKCANCEL + MB_ICONINFORMATION + MB_DEFBUTTON2)) {
ok();
} else {
cancel();
}
delete[] wideMsg;
delete[] wideTitle;
}
因为回调,等应用的问题,这里是把重点拿了出来,参数上做了改动
5、函数的参数意思
MessageBoxOKCancel(const char * pszMsg, const char * pszTitle, const std::function
const char * pszMsg 这个弹窗主体要显示的文字
const char * pszTitle 这个弹窗的标题
const std::function
const std::function
MessageBoxW(NULL, wideMsg, wideTitle, MB_OKCANCEL + MB_ICONINFORMATION + MB_DEFBUTTON2))
wideMsg = 这个弹窗主体要显示的文字(处理以后的)
wideTitle= 这个弹窗的标题(处理以后的)
MB_OKCANCEL + MB_ICONINFORMATION + MB_DEFBUTTON2
还有别的自行百度
返回值:
因为是win的,所以自行百度,是可以搜到的