Невозможно создать StatusBar в Visual C ++ Express 2010 с использованием простого Win32 API - PullRequest
2 голосов
/ 21 мая 2011

Я использую простой Win32 API (я не имею в виду MFC) для создания простого приложения. Я использую CreateWindowEx с STATUSCLASSNAME, как указано в MSDN, но возвращается дескриптор NULL. Я позвонил на InitCommonControlsEx, как указано, но это возвращает FALSE! Поэтому я подозреваю, что это причина, по которой бар не создан. В чем дело? Пожалуйста, помогите.

Я нахожусь на Windows 7 64 бит.

hStatusBar = ::CreateWindowExW(
  0,
  L"STATUSCLASSNAME",
  L"",
  WS_VISIBLE|WS_CHILD|WS_BORDER,
  0,0,0,0, hWnd, 0, hInstance, NULL
);

Ответы [ 2 ]

4 голосов
/ 21 мая 2011

В вашем коде есть одна простая ошибка. STATUSCLASSNAME не является значением, это константа от < commctrl.h >. Таким образом, ваш код на самом деле должен выглядеть следующим образом:

 #include <commctrl.h>
 .
 .
 .
 hStatusBar = ::CreateWindowExW(
 0,
 STATUSCLASSNAME,
 L"",
 WS_VISIBLE|WS_CHILD|WS_BORDER,
 0,0,0,0, hWnd, 0, hInstance, NULL
);

Полагаю, вы изучали это http://msdn.microsoft.com/en-us/library/bb775491%28v=VS.85%29.aspx#STATUSCLASSNAME, но, как было указано, в левом столбце есть константы, а не значения

1 голос
/ 16 января 2017

если вы используете W (широкие) символы и функции, вы должны изменить имя константы (см. commcrtl.h). Я использовал:

status = CreateWindowExW(0, STATUSCLASSNAMEW,
    L"Spec.chars fine - Czech=Česky", WS_VISIBLE | WS_CHILD | WS_BORDER,
    0, 0, 0, 0, hwnd, 0, NULL, NULL);

и, кажется, все в порядке.

...