vs编译出现未加载wntdll.pdb,调试时在wWinMain函数的DialogBox后会自动形成断电,该怎么解决

街のボス 2020-06-19 12:23:58
我在网上查到的修改这种方法并不管用,变成小白跟着这个网站上学的https://www.bilibili.com/video/BV1NJ411b7ZV?p=83,程序如下,请问该怎么修改
#include<Windows.h>
#include "resource.h"
void FillListBox(HWND hwndList)
{
//TCHAR szBuf[1024];//使用栈
TCHAR* pVarName;//使用堆
// LPVOID pVName; //使用堆
TCHAR* pVarBlock;
TCHAR* pVarBeg, * pVarEnd;
int iLength;
pVarBlock = GetEnvironmentStrings();
while (*pVarBlock)
{
if (*pVarBlock != '=')
{
pVarBeg = pVarBlock;
while (*pVarBlock++ != '=');
pVarEnd = pVarBlock - 1;
iLength = pVarEnd - pVarBeg;
//使用栈
/* ZeroMemory(szBuf, 1024);
CopyMemory(szBuf, pVarBeg, iLength*sizeof(TCHAR));
SendMessage(hwndList, LB_ADDSTRING, 0, (LPARAM)szBuf);*/
//使用堆
pVarName = (TCHAR*)calloc(iLength + 1, sizeof(TCHAR));
pVarName = (TCHAR*)malloc((iLength + 1) * sizeof(TCHAR)); ZeroMemory(pVarName, ((iLength + 1) * sizeof(TCHAR)));
CopyMemory(pVarName, pVarBeg, iLength * sizeof(TCHAR));
SendMessage(hwndList, LB_ADDSTRING, 0, (LPARAM)pVarName);
free(pVarName);

//使用HeapAlloc
/*pVName = HeapAlloc(GetProcessHeap(), 0, (iLength + 1) * sizeof(TCHAR));
ZeroMemory(pVName, (iLength + 1) * sizeof(TCHAR));
CopyMemory(pVName, pVarBeg, iLength * sizeof(TCHAR));
SendMessage(hwndList, LB_ADDSTRING, 0, (LPARAM)pVName);
HeapFree(GetProcessHeap(), 0, pVName);*/
}
while (*pVarBlock++ != '\0');
}
FreeEnvironmentStrings(pVarBlock);
}
INT_PTR CALLBACK MainDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
BOOL bRet = TRUE;
int iIndex, iLength;//列表中选到的是第几个以及它有多长
TCHAR* pVarName, * pVarValue;
switch (uMsg)
{
case WM_INITDIALOG:
FillListBox(GetDlgItem(hDlg, IDC_LIST1));
break;
case WM_COMMAND:
if (LOWORD(wParam) == IDC_LIST1 && HIWORD(wParam) == LBN_SELCHANGE)
{
iIndex = SendMessage(GetDlgItem(hDlg, IDC_LIST1), LB_GETCURSEL, 0, 0);
iLength=SendMessage(GetDlgItem(hDlg, IDC_LIST1), LB_GETTEXTLEN, iIndex, 0)+1;
pVarName = (TCHAR*)calloc(iLength, sizeof(TCHAR));
SendMessage(GetDlgItem(hDlg, IDC_LIST1), LB_GETTEXT, iIndex, (LPARAM)pVarName);
iLength=GetEnvironmentVariable(pVarName, NULL, 0);
pVarValue = (TCHAR*)calloc(iLength, sizeof(TCHAR));
GetEnvironmentVariable(pVarName, pVarValue, iLength);
SetWindowText(GetDlgItem(hDlg, IDC_LIST1), pVarValue);
free(pVarName);
free(pVarValue);
}
break;
case WM_CLOSE:
EndDialog(hDlg, 0);
break;
default:
bRet = FALSE;
break;
}
return bRet;
}
int APIENTRY wWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{
DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), NULL, MainDlgProc);
return 0;
}
...全文
161 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

64,670

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧