【发布时间】:2015-11-28 02:17:09
【问题描述】:
嵌入循环的代码构建并运行良好。尝试在 LinkEmbedManifest 步骤中构建它(MBCS 中的 VS10)失败,并出现 link 1168 错误。
WIN32_FIND_DATA da; // directory data
TCHAR *Path; // directory Pointer
HANDLE ds; // directory handle
int Listindex=0;
Path = "C:\\";
SetCurrentDirectory(Path);
Listindex=0
ds = FindFirstFile(TEXT("*"),&da);
do {
int index = SendDlgItemMessage(hwnd, IDC_LIST, LB_ADDSTRING, (WPARAM)Listindex, (LPARAM)&da);
SendDlgItemMessage(hwnd, IDC_LIST, LB_SETITEMDATA, (WPARAM)index, (LPARAM)Listindex);
Listindex+=1;
}
while( FindNextFile(ds,&da) != ERROR_NO_MORE_ITEMS);
FindClose(ds);
目的是列出 C 根目录中的目录。从 LONG_PTR LRESULT 隐式转换为带有索引的 int,并进一步使用 LPARAM 和 WPARAM 进行转换。如果将它们替换为模块范围的 decs 会有什么不同吗? 或者完全改变循环的类型会更好吗?
【问题讨论】:
-
da是一个WIN32_FIND_DATA结构(我假设),您为什么尝试将指向它的指针作为字符串添加到libsbox?传递da.cFileName不是更有意义吗?此外,每次尝试添加结构时,您都在传递相同的指针,因此所有条目无论如何都是相同的。 -
哎呀,谢谢- [face-palm] 把它们放进去。我想像 Listindex 这样的东西会更合适。也许是 FOR 循环?
-
@Joachim-Pileborg,Windows 将字符串从 SendMessage 复制到内部字符串,因此列表框中的条目将不同。
-
它现在构建得很好,但是 pacman exe 是一个狂热的内存处理器。列表框永远不会显示。这里必须有所改变。