小编Car*_*ary的帖子

当CDialog.DoModal()函数无法创建对话框?

MSDN说,对于CDialog.DoModal()函数,如果函数无法创建对话框,则返回值为-1.它没有说明在哪种情况下它可能无法创建对话框.

对MFC源代码的快速调查显示,如果(LPCDLGTEMPLATE)LockResource(hDialogTemplate)返回NULL,则DoModal函数可以返回-1.

由于我的问题无法在压力测试中稳定复制,我无法调试程序以找到根本原因.这里有人遇到过类似的问题吗?

c++ windows mfc visual-c++

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

为什么CString(LPCTSTR lpsz)构造函数检查lpsz的高两个字节?

我读的源代码CString中的MFC.我对构造函数的实现方式很好奇CString::CString(LPCTSTR lpsz).

在我的理解,通过复制指定的字符串之前lpsz,只需要检查是否lpszNULL更没有必要与检查,如果结合HIWORD(lpsz)NULL.

有没有MFC人经过这里并愿意给出一些解释?

CString::CString(LPCTSTR lpsz)
{
    Init();
    if (lpsz != NULL && HIWORD(lpsz) == NULL)
    {
        UINT nID = LOWORD((DWORD)lpsz);
        if (!LoadString(nID))
            TRACE1("Warning: implicit LoadString(%u) failed\n", nID);
    }
    else
    {
        int nLen = SafeStrlen(lpsz);
        if (nLen != 0)
        {
            AllocBuffer(nLen);
            memcpy(m_pchData, lpsz, nLen*sizeof(TCHAR));
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

c++ mfc visual-c++-6

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

无法在WinDbg中设置断点

我的工作流程如下。

  1. 配置WinDbg的符号文件路径和源代码文件路径。
  2. 打开一个源代码文件,以后再调试。
  3. 按F9并尝试在源代码中设置断点。
  4. WinDbg会弹出一个错误对话框,提示“必须先停止调试对象,然后才能修改断点。”

谁能告诉我为什么?我的WinDbg版本是6.11.0001.404(X86),Windows XP 64位。我正在从非常复杂的运行时系统中调试dll。

我编写了一个简单的exe,然后单击以打开它。打开它后,我立即打开源代码文件并设置一个断点。在这种情况下可以使用!

windows debugging windbg

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

标签 统计

c++ ×2

mfc ×2

windows ×2

debugging ×1

visual-c++ ×1

visual-c++-6 ×1

windbg ×1