Почему Дельфийскими приложениями вообще и на базе KOL-а в частности игнорируется настройка windows "Snap mouse to the default button in dialogs"? Кто сталкивался? Может Win32-шной MessageBox каких-то флажков не хватает?
Здравствуйте Dim_NoReg, Вы писали:
DN>Почему Дельфийскими приложениями вообще и на базе KOL-а в частности игнорируется настройка windows "Snap mouse to the default button in dialogs"? Кто сталкивался? Может Win32-шной MessageBox каких-то флажков не хватает?
Здравствуйте maxim_al, Вы писали:
MDN>>Почему Дельфийскими приложениями вообще и на базе KOL-а в частности игнорируется настройка windows "Snap mouse to the default button in dialogs"? Кто сталкивался? Может Win32-шной MessageBox каких-то флажков не хватает?
MA>А что это за настройки такие? :shuffle:
В системном аплете main.cpl (Mouse -> Motion) есть вышеуказанный флажок, который устанавливает ключик в реестре (см. Windows FAQ). Если он установлен, система при возникновении диалогового окна перемещает указатель мыши на кнопку по умолчанию в этом диалоге. Удобно и вырабатывает определенный стиль "общения" с мышой.
Здравствуйте Dim_NoReg, Вы писали:
DN>Почему Дельфийскими приложениями вообще и на базе KOL-а в частности игнорируется настройка windows "Snap mouse to the default button in dialogs"? Кто сталкивался? Может Win32-шной MessageBox каких-то флажков не хватает?
Поскольку Дельфийские окна(формы) — это НЕ виндузовые диалоги. А просто окна, на которые в рантайме Дельфи лепит другие окна — кнопки, панели и иже с ними.
А вот MessageBox должен работать, так как его делает не Дельфи, а user32.dll (не путать с ShowMessage!)
Здравствуйте Владимир Гренадеров, Вы писали:
DN>>Почему Дельфийскими приложениями вообще и на базе KOL-а в частности игнорируется настройка windows "Snap mouse to the default button in dialogs"? Кто сталкивался? Может Win32-шной MessageBox каких-то флажков не хватает?
ВГ>Поскольку Дельфийские окна(формы) — это НЕ виндузовые диалоги. А просто окна, на которые в рантайме Дельфи лепит другие окна — кнопки, панели и иже с ними.
Это все ясно Извините, похоже я не так конкретно сформулировал вопрос. Я хотел спросить: "Какие флажки нужны MessageBox, чтобы она не игнорировала эту настройку?"
ВГ>А вот MessageBox должен работать, так как его делает не Дельфи, а user32.dll (не путать с ShowMessage!)
Да только не работает, по крайней мере в случае использования KOL. А из его сырцов ясно видно, что используется именно вышеуказанный MessageBox.
Здравствуйте Dim_NoReg, Вы писали:
DN>Здравствуйте Владимир Гренадеров, Вы писали:
DN>>>Почему Дельфийскими приложениями вообще и на базе KOL-а в частности игнорируется настройка windows "Snap mouse to the default button in dialogs"? Кто сталкивался? Может Win32-шной MessageBox каких-то флажков не хватает?
ВГ>>Поскольку Дельфийские окна(формы) — это НЕ виндузовые диалоги. А просто окна, на которые в рантайме Дельфи лепит другие окна — кнопки, панели и иже с ними.
DN>Это все ясно Извините, похоже я не так конкретно сформулировал вопрос. Я хотел спросить: "Какие флажки нужны MessageBox, чтобы она не игнорировала эту настройку?"
ВГ>>А вот MessageBox должен работать, так как его делает не Дельфи, а user32.dll (не путать с ShowMessage!)
DN>Да только не работает, по крайней мере в случае использования KOL. А из его сырцов ясно видно, что используется именно вышеуказанный MessageBox.
Я провел эксперемент (Win XP + дрова от Logitech 9.60) — действительно, если использовать
MessageBox(handle, 'xxx', 'yyy', MB_OK);
то курсор не дергается. Непонятно, почему...
Зато вот так
MessageBox(handle, 'xxx', 'yyy', MB_YESNO);
все работает — курсор устнавливается на Yes.
Здравствуйте Владимир Гренадеров, Вы писали:
ВГ>Я провел эксперемент (Win XP + дрова от Logitech 9.60) — действительно, если использовать ВГ> MessageBox(handle, 'xxx', 'yyy', MB_OK); ВГ>то курсор не дергается. Непонятно, почему...
ВГ>Зато вот так ВГ> MessageBox(handle, 'xxx', 'yyy', MB_YESNO); ВГ>все работает — курсор устнавливается на Yes.
ВГ>Буду копать дальше.
А если подсмотреть каким либо образом (каким???), с какими флажками вызывается MessageBox при сообщении, скажем, о ошибке при запуске службы. Там-то всего одна кнопка.
Здравствуйте Dim_NoReg, Вы писали:
DN>А если подсмотреть каким либо образом (каким???), с какими флажками вызывается MessageBox при сообщении, скажем, о ошибке при запуске службы. Там-то всего одна кнопка.
Я специяально "подправил" один из своих сервисов так, что бы он генерил ошибку при запуске. И что же?
Курсор остался неподвижным. Может, проблема в реализации этой фичи (с установкой курсора), а не в MessageBox?
ВГ>Я специяально "подправил" один из своих сервисов так, что бы он генерил ошибку при запуске. И что же? ВГ>Курсор остался неподвижным. Может, проблема в реализации этой фичи (с установкой курсора), а не в MessageBox?
Может, может... Экспериментально установлено, что мыша позиционируется если нет флажка MB_OK, т.е. если кнопок в диалоге больше чем одна. Но встечаются же диалоговые окна с одной кнопкой у других приложений, которые функционирут правильно (даже вспомнить затрудняюсь каких, но есть такие!!!). В Win32 SDK описано довльно мало флагов MB_???, хотя бит там значительно больше отведено под это дело. Буду экспериментировать дальше