Глюк листвиев.

Тема в разделе "WASM.WIN32", создана пользователем 2FED, 21 сен 2008.

  1. 2FED

    2FED New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2008
    Сообщения:
    1.002
    В обработчике WM_DESTROY сохраняю состояние COLUMN'ов ListView'a в реестре для последующего восстановления.

    ....
    invoke SendMessage,_Load,LVM_GETCOLUMN,0,addr lvc
    invoke RegSetValueEx,hKey,addr aLvc,0,REG_DWORD,addr lvc.lx,4

    Сначала всё нормально работаело, но потом обнаружился странный глюк, если при завершении программы фокус был у EDIT'a, то после запроса LVM_GETCOLUMN в lvc.lx получается 0. Если в фокусе был ListView или какаянибудь кнопка то всё нормально. Немогу понять что за фигня такая, пробовал так же обробатывать всё это дело в WM_CLOSE, но тогда в lvc.lx заносится воабще какойто бред типо 12985, независимо от фокуса. Так же пробовал сделать SetFocus,_Load перед вызовом LVM_GETCOLUMN ни чего не изменилось.

    Вот сижу думаю что это, глюк винды или я что то неправильно делаю? Все остальные параметры сохраняются нормально.
     
  2. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    mov [lvc.mask],LVCF_WIDTH
    не забыл?
     
  3. 2FED

    2FED New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2008
    Сообщения:
    1.002
    Блин, забыл. Точнее не знал. Спасибо =)
     
  4. 2FED

    2FED New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2008
    Сообщения:
    1.002
    Подскажите за одно как установить выделеный элемент.
     
  5. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    всмысле? если надо установить номер выделенного элемента, то LVM_GETSELECTIONMARK
     
  6. 2FED

    2FED New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2008
    Сообщения:
    1.002
    Может имелось ввиду LVM_SETSELECTIONMARK? потому что LVM_GETSELECTIONMARK не принимает параметров
    а в описание LVM_SETSELECTIONMARK написано
    я так понимаю это означает что данное сообщение не воздействует на выделение, попробовал, функция отрабатывает, возвращает индекс предведущего выделеного элемента но индекс выделения переданый ей не устанавливает.
     
  7. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    имелось ввиду, что есть выделенный элемент и надо узнать(установить) его номер. есле же надо сделать какойто элемент выделенным, то стоит обратить внимание на передачу структуры с lvi.state=LVIS_SELECTED при посылке LVM_SETITEMSTATE.
     
  8. 2FED

    2FED New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2008
    Сообщения:
    1.002
    Freeman спасибо :)