小编Tom*_*Tom的帖子

检查std :: fstream是处于写入还是读取模式

我需要检查std::fstream打开文件是否处于读取和/或写入模式.

到目前为止,我发现iosbase::openmode,但我认为我无法访问它.

还有其他方法吗?

c++ mfc

5
推荐指数
1
解决办法
1265
查看次数

调用CloseHandle(句柄)处理NULL是否安全

删除NULL指针是安全的.

int* p = NULL;
delete p;         // ok, secure
Run Code Online (Sandbox Code Playgroud)

Handles有什么关系?

HANDLE h = NULL;
CloseHandle(h);   // allowed?
Run Code Online (Sandbox Code Playgroud)

我正在阅读MSDN但仍不确定.它说的是ERROR_INVALID_HANDLE,但是它是6L,而不是NULL.

我来自一个类的析构函数,它给了我一个C6387警告错误

if (m_hThread)
    WaitForSingleObject(m_hThread, INFINITE);
CloseHandle(m_hThread);    // warninig C6387
m_hThread = NULL;
Run Code Online (Sandbox Code Playgroud)

c++ winapi mfc

4
推荐指数
1
解决办法
2363
查看次数

防止在 ListCtrl (ReportView) 中调整第一列的大小

我来自这个 LVCFMT_FIXED_WIDTH 这种格式样式有效,但仅在第一列之后。第一列项目始终是可移动的。为什么?我是否遗漏了什么?

for(int i = 0; i<NUM_COLUMNS; i++)
{
    m_ListCtrl.InsertColumn(i,_gszColumnLabel[i], _gnColumnFmt[i] |  LVCFMT_FIXED_WIDTH, _gnColumnWidth[i], -1);
}   
Run Code Online (Sandbox Code Playgroud)

winapi controls mfc

3
推荐指数
1
解决办法
609
查看次数

std :: bitset :: at()在VS2015中消失

我曾经使用bitset::at(x)过健壮的运行时检查版本来检查是否bitset<>设置了a中的任何位.但在VS2015中,我收到此错误:

std::bitset<6> bTestFlag;
int b = bTestFlag.at(3); // Error C2039 'at': is not a member of 'std::bitset<6>'
Run Code Online (Sandbox Code Playgroud)

为什么它在VS2015中消失了?

c++ visual-studio-2015

1
推荐指数
1
解决办法
615
查看次数

如何在没有警告的情况下优雅地翻转 BOOL?

我想简单地翻转一个BOOL变量,但这会生成一个lnt-逻辑位不匹配警告。

有一个优雅的解决方案吗?

BOOL bCloseButtons = FALSE;
bCloseButtons = !bCloseButtons;                 // Intellisense generate a logical-bitwise mismatch
bCloseButtons = bCloseButtons ? FALSE : TRUE;   // works, but not elegant in my eye
Run Code Online (Sandbox Code Playgroud)
CButton m_btnPumpP1;
BOOL bLocked = FALSE;
m_btnPump_P1.EnableWindow(!bLocked);           // Intellisense generate a logigal-bitwise mismatch
m_btnPump_P1.EnableWindow(!((bool)bLocked))    // horrible, not readable
Run Code Online (Sandbox Code Playgroud)

c++ winapi

1
推荐指数
1
解决办法
266
查看次数

在函数中传递 string 或 wstring

我想简化代码以对 ANSI 和 UNICODE 字符串版本使用相同的函数

tstring formatW(const std::string format, ...);
tstring formatA(const std::wstring format, ...);
Run Code Online (Sandbox Code Playgroud)

在单个参数化函数中

tstring format(const tstring format, ...);
Run Code Online (Sandbox Code Playgroud)

但是,如果我使用它,我会在第 3 行收到错误

  const std::string fmtA =  "MouseWheel nFlags %u,zDelta %d, CPoint(%d,%d";
  std::string strA  = formatA(fmtA, nFlags, zDelta, pt.x, pt.y );   // Ok
  std::string strA2 = format (fmtA, nFlags, zDelta, pt.x, pt.y );   // Fail :(

  const std::wstring fmtW = L"MouseWheel nFlags %u,zDelta %d, CPoint(%d,%d";
  std::wstring strW  = formatW(fmtW, nFlags, zDelta, pt.x, pt.y);  // Ok
  std::wstring strW2 = format …
Run Code Online (Sandbox Code Playgroud)

c++

0
推荐指数
1
解决办法
1432
查看次数

标签 统计

c++ ×5

mfc ×3

winapi ×3

controls ×1

visual-studio-2015 ×1