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

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

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

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


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

以下是自己的代码

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

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

const char * pszTitle     这个弹窗的标题

const std::function<void()>& ok  确定按钮的回调

const std::function<void()>& close  取消按钮的回调


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

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

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

MB_OKCANCEL + MB_ICONINFORMATION + MB_DEFBUTTON2



还有别的自行百度

返回值:


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

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值