首页 > 解决方案 > Listview C++ win32 API - 示例不工作

问题描述

我正在尝试使用 win32 api 在 C++ 中创建一个列表视图,但是 mdsn 上提供的代码给了我一个错误。

HWND CreateListView (HWND hwndParent) 
{
    INITCOMMONCONTROLSEX icex;           // Structure for control initialization.
    icex.dwICC = ICC_LISTVIEW_CLASSES;
    InitCommonControlsEx(&icex);

    RECT rcClient;                       // The parent window's client area.

    GetClientRect (hwndParent, &rcClient); 

    // Create the list-view window in report view with label editing enabled.
    HWND hWndListView = CreateWindow(WC_LISTVIEW, //ERROR red line under create window
                                     L"",
                                     WS_CHILD | LVS_REPORT | LVS_EDITLABELS,
                                     0, 0,
                                     rcClient.right - rcClient.left,
                                     rcClient.bottom - rcClient.top,
                                     hwndParent,
                                     (HMENU)IDM_CODE_SAMPLES, //ERROR IDM CODE SAMPLES undefined
                                     g_hInst, //ERROR
                                     NULL); 

    return (hWndListView);
}

这个例子是来自 mdsn 的海峡,我不知道为什么它不起作用。我得到 IDM_CODE_SAMPLES 未定义,并且 createwindow 有问题。请帮助我完成这项工作,这将非常有帮助。

标签: c++apilistviewwinapicreatewindow

解决方案


IDM_CODE_SAMPLES是您要分配给控件的 ID。您可以将符号定义为数值,也可以直接使用数值(例如,选择 100)。如果您想引用特定控件,则 ID 很有用,尽管它HWND与 ID 一样有用。

g_hInst大概是一个类型为 的全局变量HMODULE,从 初始化WinMain。如果您不想使用全局变量,则可以GetModuleHandle(nullptr)在其位置调用,前提是您编译的是 .exe 而不是 .dll。

在学习 C++ 中 Win32 编程简介时,您将获得很多有用的信息。


推荐阅读