将CSS文本声明为多行CString的最简单方法是什么?

nwnhqdif  于 2023-06-07  发布在  其他
关注(0)|答案(1)|浏览(191)

这是CSS:

.tableDUTY {
    margin-bottom: 2mm;
}

.cellDutyLabel {
    border-right-style: none;
}

.textDutyLabel {
    font-size: 10pt;
    font-weight: normal;
}

.cellDutyName {
    font-size: 10pt;
    font-weight: normal;
}

.cellDutyHeading {
    padding-left: 1mm;
}

.textDutyHeading {
    padding: 1mm;
    color: #fff;
    background-color: #FD00FF;
    width: 90mm;
    font-size: 12pt;
    font-weight: 700;
    text-transform: uppercase;
    vertical-align: middle;
}

我知道我可以重写所有的文本,并做一些类似的事情:

m_strCSS.Empty();
m_strCSS += L".tableDUTY {\r\n";
m_strCSS += L"\tmargin-bottom: 2mm;\r\n";
m_strCSS += L"}\r\n";
// etc.

但是,有没有办法,我可以粘贴我的CSS作为我的CPP文件,并分配给CString变量?我不介意使用更现代的字符串类型,如std::string,只要我最终得到的是CString
最后,CString被Map到CEdit控件,以便它显示多行CSS文本。
我也知道我可以使用lambda,比如:

m_strCSS.Empty();
auto AddLine = [this](CString strLine)
{
    m_strCSS += strLine + L"\r\n";
};

AddLine(L".tableDUTY {");
AddLine(L"\tmargin-bottom: 2mm;");
AddLine(L"}");

但是有什么能一次性使用整个CSS块吗?

rqdpfwrv

rqdpfwrv1#

作为一种妥协,我选择了一个lambda:

auto AddLine = [this](CString strLine = L"", const int iTabIndent = 0)
{
    for (auto iTab = 0; iTab < iTabIndent; iTab++)
        m_strCSS += L"\t";

    m_strCSS += strLine + L"\r\n";
};

这样我至少降低了制表符\t作为字符串一部分的复杂性。在其他地方,我有多达5个标签。这对我很有效

相关问题