MessageBox vs Delphi
смею предположить, что проблема кроется в несовместимости представленни строк. MessageBox по умолчанию юзает апишную ф-ю MessageBoxA , может ты ей туда что-то другое кормишь?
принимают указатели на char, что я и передаю и тому и тому. И копать я начал потому, что диалог, который нормально показывается в обычном приложении, все рушит в описанной ситуации (dll в нитке). Делпхи вообще очень трепетно относится к ейным message box'ам в multithreaded приложениях.
Но я не понимаю, какое Делпхи дело до прямых API - шных вызовов виндов. И совсем не понимаю, почему реакция на MessageBox отличается от реакции на MessageBoxEx.
Впрочем, это проблема потенциальная. Диалогов там по идее быть не должно, но юзается большой кусок чужого кода, и то, встреча появление в нем модального диалога практически кладет все приложение - мне активно не нравится.
а че ту странного, в виндовс и delphi багов дохера
А не одна фигня, или PChar - указатель на двух-байтовые символы что-ли?
Кроме того, я писал константы вроде 'danya', поэтому они должны были привестись правильно по-любому или ругнуться.
+ слишком большой катаклизм для чтения даже за пределы массива, тут уместно ожидать что-то вроде Access Violation.
+ в нормальном приложении этот код работает.
Черт, или у меня глюки, или ты подредактировал! Помечай хоть :-)
Баги багами, но порой их можно обмануть. Сделать финт ушами - глядишь, и заработало... Способ _заставить_ прогу работать я и хочу получить.
С Pchar`ом - MessageBoxEx все прокатывает.
Теоретически можно такое представить, но тут не тот случай.
Оставить комментарий
naska79
Очень забавная вещь. Есть multithreaded application на С++. Юзает dll на Делпхи. Если внутри dll встречается Windows.MessageBox тихо и грациозно вылетает. Причем не exception какой-то, просто такое впечатление, что нитка завершается, да и все приложение потом имеет бледный вид.Что самое смешное - MessageBoxEx срабатывает нормально. Внимание, вопрос:
WHY ?!