У меня есть программа на C++, которая при запуске по умолчанию отображает X в правом верхнем углу. Щелчок X сворачивает программу. Я добавил код, использующий функцию SHInitDialog, чтобы изменить X на OK, так что нажатие OK закрывает программу.
Мой вопрос: есть ли лучший метод, применимый к окну, поскольку SHInitDialog лучше всего работает с диалоговыми окнами?





Не знаю, как это делается в C++, но в .NET, если вы установите для свойства MinimizeBox значение false, вы получите кнопку OK. Поскольку код .NET Windows представляет собой причудливый код-оболочку, должен быть эквивалент C++
Взгляните на SHDoneButton API.
В Windows Mobile 5.0 и выше работает функция CreateWindowEx, передающая ей WS_EX_CAPTIONOKBTN для расширенного стиля.
@ctacke SHDoneButton, возможно, также работал, но я хотел изменить главное окно, не обрабатывая его как диалоговое окно, что в основном и делает SHInitDialog.
Другой способ сложнее :) Вы можете получить только кнопку X со значением Отмена на WM5 +.