Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
А как в Wizard (PropertySheet) удалить(Hide) крестик (который Close)?
|
|||
|---|---|---|---|
|
#18+
Речь идет об этом: How to Create Wizards 16172907 Задача - убрать крестик из заголовка. Я не нашел как это легально сделать, хотя есть живой пример: Add Hadware Wizard. Вариант ниже не устраивает. Он не убирает, а дизейблит, и не работает на aerowizard-е Код: plaintext 1. 2. 3. 4. Плюс - есть еще Alt+F4, ESC, Ctrl+Break их также желательно задавить. Если говорить о форме, то в нек. системах програмирования есть понятие ControlBox=False (убирает крестик и не закрывает форму при указанных комбинациях). Но я не знаю как это перевести в API и применить к GetParent(hwndDlg). Ну, т.е. я считаю нормальным способом закрыть Wizard кнопку Cancel, состоянием которой я могу управлять (делать disable если визард делает что-то что нельзя прерывать, отображая например Progress при этом). Про Progress упомянул не случайно, т.к. чтобы он отображал, форма визарда должна быть "разморожена" (а не находиться в состоянии "не отвечает"), а в размороженном состоянии юзеру ничего не стоит тыкнуться в крестик при его наличии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2014, 08:31 |
|
||
|
А как в Wizard (PropertySheet) удалить(Hide) крестик (который Close)?
|
|||
|---|---|---|---|
|
#18+
Дмитрий77, вы не должны этого хотеть. Если юзер не сможет закрыть вашу программу крестиком, он прибьет ее через диспетчер задач, или на самом деле выключит питание, если не умеет диспетчером задач пользоваться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2014, 09:34 |
|
||
|
А как в Wizard (PropertySheet) удалить(Hide) крестик (который Close)?
|
|||
|---|---|---|---|
|
#18+
Как вариант: обрабатывать нажатие крестика (событие WM_CLOSE если не ошибаюсь) и там спрашивать пользователя действительно он хочет все прервать или подождет еще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2014, 09:39 |
|
||
|
А как в Wizard (PropertySheet) удалить(Hide) крестик (который Close)?
|
|||
|---|---|---|---|
|
#18+
Dima TКак вариант: обрабатывать нажатие крестика (событие WM_CLOSE если не ошибаюсь) и там спрашивать... Этот метод я знаю, можно и не спрашивать. Но крестик при этом нарисован. Не пойдет. Но я хочу чтоб крестика вообще не было нарисовано. Примеры: 1) Панель Управления -> Установка оборудования Хотя там подвох - можно закрыть "с клавиатуры". 2) Приложил exe-шник. Стандартная форма VB6 со свойством ControlBox=false. Закрывается только кнопкой на ней. И вот как это на API понимать? всё запретить, несерьезные возражения. Конечно можно и кувалдой по компу, но речь не об этом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2014, 09:50 |
|
||
|
А как в Wizard (PropertySheet) удалить(Hide) крестик (который Close)?
|
|||
|---|---|---|---|
|
#18+
Это вот так готовится. Чтобы убрать крестик, надо снять стиль WS_SYSMENU с родительского диалога Wizard-а (не те, которые в ресурсах, т.е не страницы визарда, а генерируемая оболочка). Делается это через документированную процедуру PropSheetProc callback function Здесь два способа: 1) Ковырять PSCB_PRECREATE и структуры DLGTEMPLATE structure и DLGTEMPLATEEX structure (причем последняя видимо никогда не при делах -для визарда, но тем не менее). Этот метод не работает для PSH_AEROWIZARD. 2) Но к счастью можно воспользоваться PSCB_INITIALIZED и просто убрать WS_SYSMENU через SetWindowLong/GetWindowLong/GWL_STYLE И это работает как для PSH_WIZARD97 так и для PSH_AEROWIZARD Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. всё запретитьДмитрий77Плюс - есть еще Alt+F4, ESC, Ctrl+Break их также желательно задавить. ...Дмитрий77, вы не должны этого хотеть.... Здесь пожалуй соглашусь. Кстати мастера от MS горячие клавиши не давят, а только скрывают крестик. Можно конечно пытаться обрабатывать WM_CLOSE и т.п., но я это делать не буду. Красный крестик - это та красная тряпка что бросается в глаза и то на чего у юзера руки чешутся нажать. Чтоб использовать горячие клавиши, надо мозги немного включать (как минимум). В мастере повторюсь для закрытия есть кнопка Cancel, всегда доступная тогда когда ее безобидно нажать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2014, 01:07 |
|
||
|
А как в Wizard (PropertySheet) удалить(Hide) крестик (который Close)?
|
|||
|---|---|---|---|
|
#18+
Дмитрий77, большая часть нормальных пользователей классифицируют это окно Adware и постараются очень быстро избавиться от вашего софта. Очень быстро. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2014, 01:28 |
|
||
|
А как в Wizard (PropertySheet) удалить(Hide) крестик (который Close)?
|
|||
|---|---|---|---|
|
#18+
Дмитрий77Это вот так готовится.я вот давно спросить хотел: меня одного раздражает в форуме С++ видеть код на VBA? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2014, 02:05 |
|
||
|
А как в Wizard (PropertySheet) удалить(Hide) крестик (который Close)?
|
|||
|---|---|---|---|
|
#18+
egorychя вот давно спросить хотел: меня одного раздражает в форуме С++ видеть код на VBA? Во первых код не VBA, а VB. Во вторых речь идет об API из MSDN которые больше C++ ориентированы, т.е. здесь дело не в языке кода. Переписать его на C++ довольно просто. Единственное что может раздражать, это то что на VB можно делать достаточно хитрые веши, кот. по общепринятому мнению обычно делают на C++. И именно потому что обычно делают на C++, я и рассчитываю получить какую-то подсказку именно на этом форуме. Извини, если что не так. maytonДмитрий77, большая часть нормальных пользователей классифицируют это окно Adware и постараются очень быстро избавиться от вашего софта. Очень быстро. Ты это к чему написал? Речь идет о стандартном визарде. Картинку прилагаю. Верхние -от MS. Нижняя - мой тест-проект. Конкретно, мне надо сделать мастера резервирования/восстановления настроек программы. Почему бы не сделать его в стандартном системном стиле. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2014, 02:30 |
|
||
|
А как в Wizard (PropertySheet) удалить(Hide) крестик (который Close)?
|
|||
|---|---|---|---|
|
#18+
egorychя вот давно спросить хотел: меня одного раздражает в форуме С++ видеть код на VBA? Ну, скажем так, я надеялся на то что ты бы мне привел этот фрагмент кода, идею, решение и т.д. на C++. И меня например не раздражает, что ты этого не сделал в силу того что не знаешь, не в теме, пожалел поделиться знаниями и т.д. Я же не виноват что я нашел ответ раньше и сделал это на VB, ибо мне так удобнее. А решениями я привык делиться и это ключевая мысль. Или мне надо было специально самому на C++ перерисовывать? Я думаю, кому надо - перерисовать не составит проблемы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2014, 02:46 |
|
||
|
А как в Wizard (PropertySheet) удалить(Hide) крестик (который Close)?
|
|||
|---|---|---|---|
|
#18+
Дмитрий77Я же не виноват что я нашел ответ раньше и сделал это на VB, ибо мне так удобнее.почему бы тебе такие топики в программировании не размещать тогда, если тебе язык не важен? Там бывают все те же люди, что и здесь, плюс другие, которые пишут не на С++ и этот форум не читают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2014, 12:08 |
|
||
|
А как в Wizard (PropertySheet) удалить(Hide) крестик (который Close)?
|
|||
|---|---|---|---|
|
#18+
On 19.06.2014 03:05, egorych wrote: > я вот давно спросить хотел: меня одного раздражает в форуме С++ видеть > код на VBA? Полагаю, раздражает это всех. Но код, видимо, полезный, а переписывать его на С автор не желает. Поэтому пусть будет. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2014, 13:46 |
|
||
|
А как в Wizard (PropertySheet) удалить(Hide) крестик (который Close)?
|
|||
|---|---|---|---|
|
#18+
On 19.06.2014 03:30, Дмитрий77 wrote: > Ты это к чему написал? > Речь идет о стандартном визарде. Речь идёт о том, что плохо лишать пользователя возможности закрыть окно. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2014, 13:47 |
|
||
|
А как в Wizard (PropertySheet) удалить(Hide) крестик (который Close)?
|
|||
|---|---|---|---|
|
#18+
egorychпочему бы тебе такие топики в программировании не размещать тогда, если тебе язык не важен? Там бывают все те же люди, что и здесь, плюс другие, которые пишут не на С++ и этот форум не читают. Я лично там почти не бываю. Я свою позицию уже высказывал. Много информации по PropertySheet на языках отличных от C/C++? На C++ как бы встречаются , и неплохие. А я вот попробовал в Google забить (в кавычках): "Private Type PROPSHEETHEADER" -и не нашел ни одной ссылки "Public Type PROPSHEETHEADER" - и нашел одну - да и та моя Объясню, в VB эту структуру по другому не определишь. Не, если я так сильно здесь всех напрягаю... MasterZiv, >а переписывать его на С автор не желает Автору это просто не нужно на тек. момент, скажем так. А вот если б автору дали дельный кусок C-шного кода (на что автор рассчитывал), он бы его с удовольствием переписал бы в обратную сторону. Кстати "диалоги" рисовал в VC++6 -студии, хорошая вещь однако. Я то думал, что в "чистом" (не повязанном на Net или какие-нибудь MFC) C++ все в основном через CreateWindow делается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2014, 06:48 |
|
||
|
|

start [/forum/topic.php?desktop=1&fid=57&tid=2019408]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
78ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 13ms |
| total: | 186ms |

| 0 / 0 |
