CreateWindowEx ("SysListView32")

Тема в разделе "WASM.WIN32", создана пользователем t00x, 8 окт 2007.

  1. t00x

    t00x New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2007
    Сообщения:
    1.921
    создал главное окно:
    Код (Text):
    1.    hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
    2.       CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInst, NULL);
    и на нём пытаюсь создать "SysListView32":
    Код (Text):
    1.     hWndProperties = CreateWindowEx( WS_EX_OVERLAPPEDWINDOW,
    2.                 (LPCWSTR)"SysListView32",
    3.                 NULL,
    4.                 WS_CHILD|WS_VISIBLE|LVS_REPORT|LVS_EX_FULLROWSELECT|LVS_SHOWSELALWAYS,
    5.                 152, 40, 128, 200,
    6.                 hWnd, (HMENU) NULL, (HINSTANCE) hInst, NULL);
    GetLastError() возвращает 1406.
    возможно неправильно указываю стиль одного из окон?

    P.S. InitCommonControlsEx() успешно инициализирован
     
  2. twgt

    twgt New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    1.494
    WS_OVERLAPPEDWINDOW попробуй убрать
    ПС. Убрать из стилей глпвного окна
     
  3. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    LVS_EX_FULLROWSELECT не в тему. Его нужно отдельным сообщением устанавливать.
    Ну и ws_child с ws_overlapped не логично, хотя в реальности не влияет.
     
  4. t00x

    t00x New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2007
    Сообщения:
    1.921
    тоже самое - "Не удается создать дочернее окно верхнего уровня".
     
  5. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    Как была инициализирована InitCommonControlsEx?
    Код можно посмотреть?

    P.S.
    Я обычно использую не Ex - функцию, с InitCommonControlsEx какие-то проблемы постоянно возникают
     
  6. t00x

    t00x New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2007
    Сообщения:
    1.921
    Код (Text):
    1.     icex.dwSize = sizeof(INITCOMMONCONTROLSEX);
    2.     icex.dwICC  = ICC_LISTVIEW_CLASSES;
    3.     if (!InitCommonControlsEx(&icex)) {
    4.         return FALSE;
    5.     };
    в MSDN написано:
    ИМХО ошибка где-то в CreateWindowEx()
     
  7. twgt

    twgt New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    1.494
    А можно бинарник глянуть?!

    //
    // MessageId: ERROR_TLW_WITH_WSCHILD
    //
    // MessageText:
    //
    // Cannot create a top-level child window.
    //
    #define ERROR_TLW_WITH_WSCHILD 1406L
     
  8. t00x

    t00x New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2007
    Сообщения:
    1.921
    екзешник в смысле?
    "ListBox" тоже не создаёт... :dntknw:
     
  9. twgt

    twgt New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    1.494
    Вот оно:
    hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
    CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInst, NULL);
    Ты пытаешся создать дочернее окно, которое не помещается на главном.
     
  10. twgt

    twgt New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    1.494
    Что-то я не понял что в аттаче :)
     
  11. t00x

    t00x New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2007
    Сообщения:
    1.921
    нет. не оно.
     
  12. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    t00x
    WS_EX_OVERLAPPEDWINDOW тоже убери.
     
  13. t00x

    t00x New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2007
    Сообщения:
    1.921
    убирал, было и WS_EX_CLIENTEDGE и NULL, убирал "LVS_REPORT | LVS_EX_FULLROWSELECT | LVS_SHOWSELALWAYS" :dntknw:

    ещё добавлял либу comctl32.lib к проекту, без неё не линкует.
     
  14. t00x

    t00x New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2007
    Сообщения:
    1.921
    IceStudent
    twgt
    cresta
    жутко извиняюсь! попытка создать "SysListView32" перед созданием основного окна... ;(

    P.S. вместо "SysListView32" надо писать WC_LISTVIEW.
     
  15. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    #define WC_LISTVIEW TEXT("SysListView32")
    Это "надо" только для того, чтобы избежать синтаксических ошибок в написании имени класса.
     
  16. t00x

    t00x New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2007
    Сообщения:
    1.921
    GetLastError() = 1407, если "SysListView32" ;)
     
  17. int2eh

    int2eh Alexander Leevy

    Публикаций:
    0
    Регистрация:
    19 авг 2007
    Сообщения:
    106
    Адрес:
    Москва
    надо "SysListView32A" или "SysListView32W"

    и еще надо InitCommonControls();
     
  18. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    int2eh
    Умничаешь?
    Код (Text):
    1. #ifdef _WIN32
    2.  
    3. #define WC_LISTVIEWA            "SysListView32"
    4. #define WC_LISTVIEWW            L"SysListView32"
    5.  
    6. #ifdef UNICODE
    7. #define WC_LISTVIEW             WC_LISTVIEWW
    8. #else
    9. #define WC_LISTVIEW             WC_LISTVIEWA
    10. #endif
    11.  
    12. #else
    13. #define WC_LISTVIEW             "SysListView"
    14. #endif
     
  19. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    t00x
    Странно, что у тебя не так
    Код (Text):
    1.     invoke InitCommonControlsEx,icc
    2.     invoke CreateWindowEx,WS_EX_APPWINDOW,szs,szs,WS_CAPTION or WS_POPUPWINDOW or WS_VISIBLE or SS_SIMPLE,100,100,200,100,ebx,ebx,10000h,ebx
    3.     push    eax
    4.     invoke CreateWindowEx,ebx,szc,szc,WS_CHILD or LVS_REPORT or WS_VISIBLE,0,0,100,100,eax,ebx,10000h,ebx
    5.     push    eax
    6.     invoke Sleep,3000
    7.     invoke DestroyWindow
    8.     invoke DestroyWindow
    9. ...
    10. szs         db 'Static',0
    11. szc         db 'SysListView32',0
     
  20. t00x

    t00x New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2007
    Сообщения:
    1.921
    Ещё один вопрос.
    ComboBox содержит элементы, но не отображает выпадающий список, т.е. раскрывается вниз на 0 элементов,
    пробовал использовать "ComboBox_SetMinVisible(hWndForms, 2)" - не помогло.