c++调用系统弹窗(windows下)

今天公司pc程序接sdk时要加一个二次确认弹窗,想着再去UI做一个弹窗确实麻烦,所以就直接用了系统的弹窗,丑了点,但是版本应对一下了!

1、win的api是自带有弹窗的,可以搜一下MessageBox这个,c++的工程是可以搜到的

2、下面是源文件的,这是cocos这个有写的

c++调用系统弹窗(windows下)_第1张图片

3、根据这个,拿出来实现了一个自己的,因为回调等等原因吧!

以下是自己的代码

static void MessageBoxOKCancel(const char * pszMsg, const char * pszTitle, const std::function& ok, const std::function& cancel)
{
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& ok, const std::function& cancel)

const char * pszMsg     这个弹窗主体要显示的文字

const char * pszTitle     这个弹窗的标题

const std::function& ok  确定按钮的回调

const std::function& close  取消按钮的回调


MessageBoxW(NULL, wideMsg, wideTitle, MB_OKCANCEL + MB_ICONINFORMATION + MB_DEFBUTTON2))

wideMsg = 这个弹窗主体要显示的文字(处理以后的)

wideTitle这个弹窗的标题(处理以后的)

MB_OKCANCEL + MB_ICONINFORMATION + MB_DEFBUTTON2

c++调用系统弹窗(windows下)_第2张图片

c++调用系统弹窗(windows下)_第3张图片

还有别的自行百度

返回值:

c++调用系统弹窗(windows下)_第4张图片

因为是win的,所以自行百度,是可以搜到的

你可能感兴趣的:(C++)