MessageBox.Show
От: sq Россия http://sq.narod.ru
Дата: 14.02.05 10:52
Оценка:
Господа знатоки, у меня глупая проблема . Всю жизнь C# работал как часы, а тут...

Установил MSVS, после чего давно работавший MS Office сказал, что ему необходима активация. Я его активировал с помощью, да простит меня Билл Гейтс, какой-то "крекалки".

Теперь MS Office работает, а текст
MessageBox.Show(this,
    "Under development...",
    "Under development...",
    MessageBoxButtons.OK,
    MessageBoxIcon.Information);

показывает MessageBox, в котором
  • Заголовок хороший ("Under development...")
  • Иконка хорошая (Information)
  • Текста никакого нет
  • На кнопке OK надпись отсутствует

    При этом мои формы выглядят правильно.

    Мне кажется, что года три назад я уже на это нарывался и как-то исправил, но совершенно не помню подробностей.

    Подскажите, пожалуйста, что-нибудь.
  • Re: MessageBox.Show
    От: sq Россия http://sq.narod.ru
    Дата: 14.02.05 10:59
    Оценка:
    Господа знатоки, У меня важное дополнение к написанному.

    Пока я писал предыдущее послание, переключаясь между окнами, на моём MessageBox'е появился нужный текст. И на кнопке появилась надпись "OK". Я закрыл приложение, открыл его снова, и MessageBox снова показался неверно.

    Ну, это уже просто ерунда какая-то...
    Re[2]: MessageBox.Show
    От: sq Россия http://sq.narod.ru
    Дата: 14.02.05 11:14
    Оценка:
    ... ещё одно дополнение: Spy++ показывает static control с правильным текстом, а на экране текста не видно.

    А вот сейчас закрою окно, где вбиваю текст этого сообщения, — и MessageBox станет хорошим и останется хорошим при повторном показе MessageBox'а.

    А потом перестартую приложение — и MessageBox снова станет фиговым... вот развлечение я себе нашёл!
    Re: MessageBox.Show
    От: DuШes  
    Дата: 14.02.05 12:39
    Оценка:
    Здравствуйте, sq, Вы писали:
    [...]
    возможно,
    скорее всего, крекалка твоя заменила mso.dll, посмотри typelib того officе-приложения, которое автоматизируешь, найди описание метода MessageBox — возможно, вызов MessageBox из классов .net конфликтует с вызовом аналогичной функции из оффиса...в таком случае придется переписать импорт typelib оффис-приложения ручками...
    Re[2]: MessageBox.Show
    От: sq Россия http://sq.narod.ru
    Дата: 14.02.05 15:12
    Оценка:
    Здравствуйте, DuШes, Вы писали:

    DШ>[... посмотри typelib того officе-приложения, которое автоматизируешь...]


    Скорее всего, DШ, Вы правы. "Крекер" действительно ковырял mso.dll. Правда, я не автоматизирую никакое офисное приложение. Просто написал WinApp на C#, в котором форма с одной кнопкой и больше ничего. Попробовал вызвать OpenFileDialog вместо MessageBox'а. Он работает, но картинки (History, Desktop, My Computer, ...) в нём поломаны. Похоже, все common диалоги пострадали.

    К сожалению, я не понимаю, что значит «переписать импорт typelib оффис-приложения ручками». Поясните, пожалуйста, если можно.
    Re[3]: MessageBox.Show
    От: DuШes  
    Дата: 15.02.05 07:16
    Оценка:
    Здравствуйте, sq, Вы писали:

    sq>Здравствуйте, DuШes, Вы писали:


    DШ>>[... посмотри typelib того officе-приложения, которое автоматизируешь...]


    sq>Скорее всего, DШ, Вы правы. "Крекер" действительно ковырял mso.dll. Правда, я не автоматизирую никакое офисное приложение. Просто написал WinApp на C#, в котором форма с одной кнопкой и больше ничего. Попробовал вызвать OpenFileDialog вместо MessageBox'а. Он работает, но картинки (History, Desktop, My Computer, ...) в нём поломаны. Похоже, все common диалоги пострадали.


    sq>К сожалению, я не понимаю, что значит «переписать импорт typelib оффис-приложения ручками». Поясните, пожалуйста, если можно.


    попутал...почему-то подумал что у тебя c++ проект...там можно было в директиве #import переименовать при помощи атрибута rename тот или иной вызов, в c# даже и не знаю как во враппер влезть, сорри
    Re: MessageBox.Show
    От: PVitaliy Украина  
    Дата: 15.02.05 09:25
    Оценка:
    Здравствуйте, sq, Вы писали:

    sq>Господа знатоки, у меня глупая проблема . Всю жизнь C# работал как часы, а тут...


    sq>Установил MSVS, после чего давно работавший MS Office сказал, что ему необходима активация. Я его активировал с помощью, да простит меня Билл Гейтс, какой-то "крекалки".


    sq>
  • Иконка хорошая (Information)
    sq>
  • Текста никакого нет
    sq>
  • На кнопке OK надпись отсутствует

    sq>При этом мои формы выглядят правильно.


    sq>Мне кажется, что года три назад я уже на это нарывался и как-то исправил, но совершенно не помню подробностей.


    sq>Подскажите, пожалуйста, что-нибудь.


    И у меня точно такая же хрень присутствует, тоже пропадает текст, тоже появляется если походить альттабом по окнам. Еще из симтомов -- у меня ХР с включеными темами, то когда MessageBox собирается заглючить, то в таскбаре на иконке языков отображается просто черный квадратик. Точно не помню было ли это до установки офиса, или после, но офис я точно не крекал, активации он у меня и не просил, что не могло не радовать. Я думал это кривые Infragistics компоненты под нет, у них глюков нормально так, думал и этот вот добавили.

    Если ктото знает лекарство от такой фигни -- был бы очень благодарен
  • Re: MessageBox.Show
    От: Аноним  
    Дата: 14.02.05 11:03
    Оценка:
    А многопоточность используется? Может в ней дело. Или какой-то объект или процесс жрет память немеряно?
    Санкт-Петербургское сообщество .NET разработчиков
    Раньше все необъяснимое сваливали на потусторонние силы, а теперь на Photoshop =)


    данное сообщение получено с www.gotdotnet.ru
    ссылка на оригинальное сообщение
    Re: MessageBox.Show
    От: Аноним  
    Дата: 15.02.05 12:22
    Оценка:
    у меня почти такая же херня на java — приложении
    не отображаются кэпшины некоторых полей
    причем поводишь по ним другим окошком и они прорисовываются
    причем такая фигня только на winXP
    мне кажется в эту сторону копать надо
    james


    данное сообщение получено с www.gotdotnet.ru
    ссылка на оригинальное сообщение
    Re[2]: MessageBox.Show
    От: sq Россия http://sq.narod.ru
    Дата: 22.02.05 12:27
    Оценка:
    Serega2k>А многопоточность используется? Может в ней дело. Или какой-то объект или процесс жрет память немеряно?

    Приложение моё содержит форму с одной-единственной кнопкой. При нажатии на кнопку выдаётся MessageBox. Всё, больше там ничего [dot]нэт. Память никто не жрёт.

    За последнее время я проделал множество экспериментов на эту тему. Вот основные результаты.

    1. На работе глюк присутствует, дома всё OK (и OK уже на протяжении нескольких лет). В обоих местах MSVS установлена с одного и того же дистрибутива. В обоих местах Win2000, но дистрибутивы разные.

    2. Office ни при чём. Сносил его, переустанавливал MSVS, результат тот же: работает криво.

    3. Common диалоги на работе работают правильно, но неправильно показывают графику. Дома с ними всё отлично.

    4. На бейсике MessageBox работает криво.

    5. На С++ CWnd::MessageBox из MFC работает отлично.

    6. На C++ ::MessageBox из user32.dll работает отлично.

    7. На машине с Win XP моего начальника всё работает отлично.

    Отсюда делаю вывод, что Framework не может ужиться с чем-то на моей машине на работе. На ней установлена куча всякого... э-э-э... хорошего, поэтому переустановить на ней Windows — целое дело, и я пока для этого недостаточно ещё озверел. Дешевле будет написать на C++ библиотеку для вызова MessageBox'ов и common диалогов и работать через неё.

    Оставаться на C++ не хочу. C# мне нравится больше.

    PS. ставлю галку в "Получать ответы по e-mail", но ответы приходят не всегда...
    Re[2]: MessageBox.Show
    От: sq Россия http://sq.narod.ru
    Дата: 24.02.05 09:51
    Оценка:
    Ну, и что делать будем, господа PVitaliy и jamesBSS? Не уж-то и вправду свои библиотеки писать? Дело оно, конечно, нехитрое, да вот похоже на обезьянью работу...
    Re[2]: MessageBox.Show
    От: Аноним  
    Дата: 24.02.05 11:33
    Оценка:
    Можно попробовать вызвать вот эту АПИ-функцию после старта программы.

    [DllImport("comctl32.dll")]
    internal static extern bool InitCommonControls();


    данное сообщение получено с www.gotdotnet.ru
    ссылка на оригинальное сообщение
    Re[2]: MessageBox.Show
    От: Аноним  
    Дата: 03.03.05 00:37
    Оценка:
    Атрибут STAThread, на Main, стоит?


    данное сообщение получено с www.gotdotnet.ru
    ссылка на оригинальное сообщение
    Глюк к текстом
    От: Аноним  
    Дата: 18.10.05 16:38
    Оценка:
    У меня на работе тоже такая же хрень, дома тоже все ок, может кто то знает причину подобного глюка???


    данное сообщение получено с www.gotdotnet.ru
    ссылка на оригинальное сообщение
    Глюк к текстом
    От: Аноним  
    Дата: 20.10.05 02:21
    Оценка:
    Памяти не хватает. Ищите вирусы. Перезагружайтесь.
    Наилучшие!


    данное сообщение получено с www.gotdotnet.ru
    ссылка на оригинальное сообщение
    Re[2]: MessageBox.Show
    От: vdimas Россия  
    Дата: 20.10.05 07:29
    Оценка:
    Здравствуйте, PVitaliy, Вы писали:

    PV>И у меня точно такая же хрень присутствует, тоже пропадает текст, тоже появляется если походить альттабом по окнам. Еще из симтомов -- у меня ХР с включеными темами, то когда MessageBox собирается заглючить, то в таскбаре на иконке языков отображается просто черный квадратик. Точно не помню было ли это до установки офиса, или после, но офис я точно не крекал, активации он у меня и не просил, что не могло не радовать. Я думал это кривые Infragistics компоненты под нет, у них глюков нормально так, думал и этот вот добавили.


    PV>Если ктото знает лекарство от такой фигни -- был бы очень благодарен


    По симптомам — очень похоже на утечку GDI-ресурсов. Какая-то из программ явно содержит этот трудноуловимый баг. Может быть какая-то из нестандартных тем XP? Или какая-нить программа рисует свои элементы в теме WinXP а потом забывает освободить ThemeData и т.д.

    В общем — отключайте там темы XP, для начала, если не помогает... нууу, раз ве что методом тыка можно попытаться выявить глючную программу.
     
    Подождите ...
    Wait...
    Пока на собственное сообщение не было ответов, его можно удалить.