Почему именно на Delphi (у Вас, кстати, ошибка, должно быть mr :=)? Могли и на MSVC:
mr = MessageBox(hOwner, sMsg, sTitle, MB_YESNOCANCEL | MB_ICONQUESTION);
На Delphi написано некоторое ненулевое количество хороших программ - это правда. Но 99% программ написанных на Delphi - это как раз вот подобные поделки. Это - тоже правда.
Вы несправедливы к Дельфе.
На самом деле, правильный в данном случае диалог не сделать ни функцией WinAPI, ни имеющимися функциями VCL они все ограничены стандартным набором кнопок. В свое время мне даже пришлось писать свою реализацию подобного диалога, с кучей наворотов и т.п. как раз, чтобы избежать приведенных выше ситуаций. Теперь использую только свое :-)
Ребята. Это вообще-то функция winAPI, т.е. функция самой ОС.
Какая прога ее вызовет от той и выполнится и не имеет значения на каком языке и компилляторе она(программа) создавалась.
Угу, и при клике открывать страницу Википедии с красочно проиллюстрированным описанием отличий, видов и штаммов. Будет отличный пример сил направленных не в мирное русло :).
На отмеченных стоят галочки, на выделенных - выделение... Думаю так будет логичнее всего... Хотя о какой логике можно говорить глядя на этот скрин!
А ведь такой прием реально эффективен! Уменьшается размер исполняемого кода проги=)))))))))))))))))))))))))))
Если не ошибаюсь, это надо хорошо постараться. Обычный вызов MessageBox() или аналога в любом другом языке (Дельфи или что угодно) переадресует к WinAPI, а далее показывается стандартный диалог.
Разумеется, можно наваять свой собственный диалог, но кому это нужно?..
Вот типичный пример того, что я часто наблюдаю у себя:
Не понял юмора. Закрываешь окно и выскакивает подобное окно. «Да» — сохранить изменения и закрыть программу, «Нет» — закрыть не сохраняя, «Отмена» — не сохранять, но и не закрывать.
Это уже некий стандарт в редакторах.
Я обсуждал вот какую проблему: в самом верхнем скриншоте темы автор диалогового окна пишет "yes/no/cancel" (в тексте подсказки). Этим он неявно подразумевает наличие у пользователя АНГЛИЙСКОЙ операционки. Если операционка на другом языке, то скорее всего, и кнопки будут локалзованы ("да/нет/отмена"). Таким образом, подсказка окажется обманкой, вводящей человека в заблуждение.
Хот десять точек. Что программер напишет в title, то и будет. Вопрос в хорошем стиле программирования интерфейса. Как мы видим, его тут нет (хорошего стиля).
Как кто-то резонно сказал, стандартный диалог ВыньДаБрось ограничивается несколькими стандартными наборами кнопок наподобие "OK", "Yes/No", "Yes/No/Cancel"... Так что это - типичный пример "корявого" программирования.
Если вдруг такое случается и надо сделать по-хорошему, я пишу собственный диалог с тремя длиннющими кнопками: "Удалить выделенные", "Удалить отмеченные", "Отмена".
Без комментариев