demo : 用宏简化大型switch/case - LoadStringW
发布日期:2021-06-30 22:04:16
浏览次数:2
分类:技术文章
本文共 2057 字,大约阅读时间需要 6 分钟。
/// @file macro20131117.cpp/// @brief <>/// 场景: 工程中做国际化的时候, 需要将.rc中定义的资源ID转成字符串/// 使用了 ATL::CString::LoadStringW/// 资源串很多, 如果手工写, 心情太差了/// 维护性也不好, 眼睛会看花吧~/// 整了一个小宏, 来做这件事, 简化了大型switch/case的输入#include "stdafx.h"#include #include #include ///< maybe need WTL 8.1, i not sure#include "resource.h"#define RC_ID_STRING(x) g_str##x #define DEFINE_RC_ID_STRING(x) static std::wstring (RC_ID_STRING(##x)) = L""; #define CASE_RC_ID(x) \ case x: \ { \ if (RC_ID_STRING(##x).empty()) \ { \ GetStringFromId(RC_ID_STRING(##x), x); \ } \ \ return (WCHAR *)RC_ID_STRING(##x).c_str(); \ } \ break;/// 定义静态的std::wstring. // static std::wstring g_strIDS_HELLO = L""; DEFINE_RC_ID_STRING(IDS_HELLO) DEFINE_RC_ID_STRING(IDS_TASK_BEGIN) DEFINE_RC_ID_STRING(IDS_TASK_END) DEFINE_RC_ID_STRING(IDS_BYE)WCHAR * GetStringFromId(UINT uRcStrId);BOOL GetStringFromId(std::wstring & strRc, UINT uRcStrId);int _tmain(int argc, _TCHAR* argv[]){ _tprintf(L"%s = %s\r\n", RC_ID_STRING(IDS_HELLO).c_str(), GetStringFromId(IDS_HELLO)); /** run results Hello = Hello */ getwchar(); return 0;}BOOL GetStringFromId(std::wstring & strRc, UINT uRcStrId){ BOOL bRc = FALSE; ATL::CString csRc; bRc = csRc.LoadStringW(uRcStrId); _ASSERT(bRc); strRc = csRc.GetBuffer(); csRc.ReleaseBuffer(); return bRc;}WCHAR * GetStringFromId(UINT uRcStrId){ switch (uRcStrId) { CASE_RC_ID(IDS_HELLO);// case IDS_HELLO:// {// if (RC_ID_STRING(IDS_HELLO).empty())// {// GetStringFromId(g_strIDS_HELLO, IDS_HELLO);// }// return (WCHAR *)g_strIDS_HELLO.c_str();// }// break; CASE_RC_ID(IDS_TASK_BEGIN); CASE_RC_ID(IDS_TASK_END); CASE_RC_ID(IDS_BYE); default: _ASSERT(FALSE); break; } return NULL;}
转载地址:https://lostspeed.blog.csdn.net/article/details/16369759 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月15日 13时35分13秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
为什么要反对比特币,这不代表是空气币
2019-05-01
5G技术如何运用在数字资产方面
2019-05-01
区块链技术运用最广泛的还是保险
2019-05-01
新冠疫情影响了经济,却带动了区块链
2019-05-01
我们提出了DeFi项目如何成为聚合器,有两种路径
2019-05-01
SnapEx的新感觉,对新手很友好
2019-05-01
区块链有哪些潜在风险?
2019-05-01
聚合器运用在什么地方最合适
2019-05-01
区块链可以解决供应链的问题,包括食品方面
2019-05-01
首个聚合器怎么产生的,并运用领域在什么
2019-05-01
区块链资金安全吗?该怎么保护
2019-05-01
区块链的优势和劣势的对比
2019-05-01
新技术,区块链能用在什么领域
2019-05-01
区块链技术应用,最先医疗行业
2019-05-01
新币上市旧币会降价吗
2019-05-01
为什么币圈的基础设施越来越多
2019-05-01
区块链投资要注意这几点
2019-05-01
市场套利策略是什么
2019-05-01
跨市场套利怎么处理
2019-05-01
当博士进入币圈会怎么样
2019-05-01