无法在C ++ Win32中将URL或ID设置为SysLink

蓝花

这是我的代码,但无法编译,并给出两个错误:

error C2440: '=' : cannot convert from 'WCHAR' to 'WCHAR [2084]'     
IntelliSense: expression must be a modifiable lvalue    

我有下面的“阅读”链接,但对我没有帮助:

错误C2106:“ =”:左操作数必须为L值

[代码] :

#define ID_SysLink 500              
HWND hWnd;

LRESULT CALLBACK WndProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
{
switch (Msg)
{
case WM_CREATE:
    {
        HWND syslink_handle=0;
        syslink_handle=CreateWindowEx(0, WC_LINK, L"test syslink",  WS_VISIBLE | WS_CHILD , 10, 10, 100, 30, hWnd, HMENU(ID_SysLink), 0, 0);

        LITEM *pitem = 0;
        pitem->iLink = 0; 
        pitem->mask = LIF_ITEMINDEX | LIF_ITEMID | LIF_URL | LIF_STATE;
        pitem->state = LIS_ENABLED | LIS_FOCUSED | LIS_HOTTRACK;
        pitem->stateMask = LIS_ENABLED | LIS_FOCUSED | LIS_HOTTRACK;
        WCHAR url_wchar = WCHAR(L"http://www.google.com");
        pitem->szUrl = url_wchar;
        SendMessage(syslink_handle, LM_SETITEM, 0, LPARAM(&pitem));
    }
    break;
case WM_CLOSE:
    DestroyWindow(hWnd);
    break;
case WM_DESTROY:
    PostQuitMessage(0);
    break;
default:
    return DefWindowProc(hWnd, Msg, wParam, lParam);
    break;
}

return 0;
}

int WINAPI WinMain(HINSTANCE hInstance , HINSTANCE hPreviewInstance,LPSTR lpcmdline,int ncmdshow)
{
   WNDCLASSEX wndexcls;
   wndexcls.lpszClassName = wndclssname;
   wndexcls.hIcon = LoadIcon(NULL, IDI_APPLICATION);
   wndexcls.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
   wndexcls.hCursor = LoadCursor(NULL, IDC_ARROW);
   wndexcls.hbrBackground = (HBRUSH)(COLOR_3DDKSHADOW + 1);
   wndexcls.lpszMenuName = NULL;
   wndexcls.style = NULL;
   wndexcls.hInstance = hInstance;
   wndexcls.cbSize = sizeof(WNDCLASSEX);
   wndexcls.cbClsExtra = 0;
   wndexcls.cbWndExtra = 0;
   wndexcls.lpfnWndProc = WndProc;
   RegisterClassEx(&wndexcls);

   hWnd = CreateWindowEx(WS_EX_CLIENTEDGE, L"winclass", L"TestApp", WS_OVERLAPPEDWINDOW, 100, 100, 640, 380, 0, 0,hInstance, 0);
   ShowWindow(hWnd, ncmdshow);
   UpdateWindow(hWnd);

   MSG wnd_msg;
   while (GetMessage(&wnd_msg,NULL,0,0)>0)
   {
    TranslateMessage(&wnd_msg);
    DispatchMessage(&wnd_msg);
   }
   return (int)wnd_msg.wParam;
 }

谢谢你的帮助。

乔纳森·波特
   WCHAR url_wchar = WCHAR(L"http://www.google.com");
   pitem->szUrl = url_wchar;

您可能打算创建url_wchar一个指针:

    WCHAR* url_wchar = L"http://www.google.com";

不幸的是,szUrl它不是一个指针,而是一个字符数组。因此,要分配给它,你需要复制串入它(而不是仅仅将其指定为指针),使用字符串复制功能。例如,

    wcscpy_s(pitem->szUrl, L_MAX_URL_LENGTH, L"http://www.google.com");

如果您确实要对此进行编译,则会发现它或多或少立即崩溃,因此:

    LITEM *pitem = 0;
    pitem->iLink = 0; 

您正在写一个空指针。您需要为该LITEM结构分配空间,或者(最好)只是在堆栈上声明它:

    LITEM item{};
    item.mask = LIF_ITEMINDEX | LIF_ITEMID | LIF_URL | LIF_STATE;
    item.state = LIS_ENABLED | LIS_FOCUSED | LIS_HOTTRACK;
    item.stateMask = LIS_ENABLED | LIS_FOCUSED | LIS_HOTTRACK;
    wcscpy_s(item.szUrl, L_MAX_URL_LENGTH, L"http://www.google.com");
    SendMessage(syslink_handle, LM_SETITEM, 0, (LPARAM)&item);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无法在C ++ Win32中将URL或ID设置为SysLink

来自分类Dev

Win32 C ++将窗口位置设置为右下角

来自分类Dev

C ++-Win32 DLL中的LoadString()无法正常工作

来自分类Dev

我的Win32 C ++“ Hello World程序”无法编译

来自分类Dev

在原始Win32中使用C设置按钮图标

来自分类Dev

在C ++中使用Win32 Api在任务栏中设置NOTIFY ICON

来自分类Dev

C Win32 API:设置复选框的状态

来自分类Dev

无法在Win32 API中读取HWND的内存

来自分类Dev

我的Visual C ++ Win32中有一个无法关闭的MessageBox!到底是怎么回事?

来自分类Dev

C ++,Win32错误

来自分类Dev

无法设置循环。(C ++)

来自分类Dev

如何使用Win32APi C ++将图像设置为按钮?

来自分类Dev

在C ++ Win32程序中,如何修改菜单标题?

来自分类Dev

Win32(C ++)中的选项卡损坏

来自分类Dev

C中的win32 FillRect()函数问题

来自分类Dev

C中的win32 FillRect()函数问题

来自分类Dev

C#应用程序中的Win32异常

来自分类Dev

C#程序AccessViolationException中的Win32 DLL

来自分类Dev

将控件添加到C ++ Win32中的TabControl中的特定选项卡页

来自分类Dev

无法安装Python win32库?

来自分类Dev

无法加载 .bmp 文件 win32

来自分类Dev

Win32 API 无法 CreateWindowW()

来自分类Dev

C ++ Win32 API GDI:矩形抗锯齿在透明背景下无法正常工作

来自分类Dev

Win32 C ++ ListView HDN_BEGINTRACK无法正常工作

来自分类Dev

即使使用cmath include也无法在Win32 C ++项目中找到round函数

来自分类Dev

将Win32对话框中的图标设置为默认图标

来自分类Dev

无法在Android SDK 5中将ActionBarDrawerToggle()图标设置为ActionBar

来自分类Dev

针对Win32 x64编译后,Electron应用程序将无法打开

来自分类Dev

无法将光标位置输出到调试字符串(WIN32)

Related 相关文章

  1. 1

    无法在C ++ Win32中将URL或ID设置为SysLink

  2. 2

    Win32 C ++将窗口位置设置为右下角

  3. 3

    C ++-Win32 DLL中的LoadString()无法正常工作

  4. 4

    我的Win32 C ++“ Hello World程序”无法编译

  5. 5

    在原始Win32中使用C设置按钮图标

  6. 6

    在C ++中使用Win32 Api在任务栏中设置NOTIFY ICON

  7. 7

    C Win32 API:设置复选框的状态

  8. 8

    无法在Win32 API中读取HWND的内存

  9. 9

    我的Visual C ++ Win32中有一个无法关闭的MessageBox!到底是怎么回事?

  10. 10

    C ++,Win32错误

  11. 11

    无法设置循环。(C ++)

  12. 12

    如何使用Win32APi C ++将图像设置为按钮?

  13. 13

    在C ++ Win32程序中,如何修改菜单标题?

  14. 14

    Win32(C ++)中的选项卡损坏

  15. 15

    C中的win32 FillRect()函数问题

  16. 16

    C中的win32 FillRect()函数问题

  17. 17

    C#应用程序中的Win32异常

  18. 18

    C#程序AccessViolationException中的Win32 DLL

  19. 19

    将控件添加到C ++ Win32中的TabControl中的特定选项卡页

  20. 20

    无法安装Python win32库?

  21. 21

    无法加载 .bmp 文件 win32

  22. 22

    Win32 API 无法 CreateWindowW()

  23. 23

    C ++ Win32 API GDI:矩形抗锯齿在透明背景下无法正常工作

  24. 24

    Win32 C ++ ListView HDN_BEGINTRACK无法正常工作

  25. 25

    即使使用cmath include也无法在Win32 C ++项目中找到round函数

  26. 26

    将Win32对话框中的图标设置为默认图标

  27. 27

    无法在Android SDK 5中将ActionBarDrawerToggle()图标设置为ActionBar

  28. 28

    针对Win32 x64编译后,Electron应用程序将无法打开

  29. 29

    无法将光标位置输出到调试字符串(WIN32)

热门标签

归档