簡體   English   中英

如何在 C++ 中組合標志?

[英]How to combine flags in C++?

例如,我想像這樣為OPENFILENAMEW編寫一個包裝器 function:

void BrowseForFile(bool bAllowMultiSelect, bool bDontAddToRecent...)
{
     OPENFILENAMEW ofn;
     
     if((bAllowMultiSelect == true) and (bDontAddToRecent == false))
     {
          ofn.Flags = OFN_ALLOWMULTISELECT;
     }

     else if((bAllowMultiSelect == false) and (bDontAddToRecent == true))
     {
          ofn.Flags = OFN_DONTADDTORECENT;
     }

     else if((bAllowMultiSelect == true) and (bDontAddToRecent == true))
     {
          ofn.Flags = OFN_ALLOWMULTISELECT | OFN_DONTADDTORECENT;
     }

     // and so on...
}

我是否必須像這樣編寫每個組合,或者有什么簡單的方法可以實現嗎?

這是@IgorTandetnik 和@AviBerger 建議的解決方案:

void BrowseForFile(bool bAllowMultiSelect, bool bDontAddToRecent...)
{
     OPENFILENAMEW ofn;
     
     if(bAllowMultiSelect == true)
     {
          ofn.Flags |= OFN_ALLOWMULTISELECT;
     }

     if(bDontAddToRecent == true)
     {
          ofn.Flags |= OFN_DONTADDTORECENT;
     }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM