ADN Club > ObjectARX
Не обновляется заголовок окна
(1/1)
Wing:
Здравствуйте!
Столкнулся с такой проблемой, что на Win7-x64 не обновляется заголовок окна после вызова SetWindowText().
В 32-битной версии это работает, а при переводе на 64 бита неожиданный сюрприз.
При вызове функции окно не обновляется, но, если потом мышкой зайти на заголовок, он обновится и заданный текст проявится.
Если поставить схему "Классическая" в персонализации ОС, то поведение меняется:
текст меняется сразу, отрисовывается слева на синем фоне, а при заходе мышкой на заголовок - отрисовывается на черном фоне по центру.
Почему-то автокад не обновляет в 64-битной версии область заголовка.
Автокад 2010 версия D.309.0. русский version 3
пробовал все из этого набора, но не помогает:
--- Код - C++ [Выбрать] --- __declspec( align( 32 ) ) wchar_t text[256] = L"showtest() - W"; HWND hwnd = adsw_acadMainWnd(); //SetWindowText(hwnd, "showtest()"); SetWindowTextW(hwnd, text); //SetWindowPos(hwnd, HWND_BOTTOM, 0,0,0,0, SWP_NOMOVE|SWP_NOSIZE|SWP_DRAWFRAME|SWP_SHOWWINDOW|SWP_FRAMECHANGED ); // RedrawWindow( hwnd, NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW | RDW_FRAME ); //SendMessage(adsw_acadMainWnd(), WM_SETFOCUS, 0, 0); //SetWindowPos(hwnd, HWND_TOP, 0,0,0,0, SWP_NOMOVE|SWP_NOSIZE|SWP_DRAWFRAME|SWP_SHOWWINDOW|SWP_FRAMECHANGED ); return;
может, надо как-то по-другому обновлять заголовок окна автокада?
Идея менять имя чертежа не кажется удачной, потому что в конце работы оно будет в окне предложения сохранить изменения.
подходит вариант создать свое поле в статус-строке или подобной.
Требуется отображать строку длиной 50-200 символов постоянно.
если так проще, подскажите пример, где создается такое поле.
Спасибо.
Николай Горлов:
попробуй так
--- Код: ---acedGetAcadFrame()->SetWindowText(L"AAAAAAAAAAA");
--- Конец кода ---
Wing:
попробовал, такое же поведение
Александр Ривилис:
--- Цитата: Wing от 07-02-2014, 14:39:14 ---может, надо как-то по-другому обновлять заголовок окна автокада?
--- Конец цитаты ---
Думаю что всё это не поможет. AutoCAD начиная уже не помню с какой версии отслеживает изменение в заголовке окна и перерисовывает его. Возможно здесь поможет какой-нибудь хук или сабклассинг. Но моя интуиция подсказывает, что всё это будет достаточно ненадежно.
Я не знаю устроит ли тебя такой вариант, но ты можешь установить системную переменную MODEMACRO в нужное тебе значение. Это было бы самым простым решением.
Есть еще функция acedGrText, которая с первым параметром -1 дает результат аналогичный использованию MODEMACRO.
А вообще все зависит от того, что тебе нужно писать. Но в первую очередь задумайся над тем нужно ли это писать вообще или можно без этого обойтись...
Wing:
Вариант с acedGrText подошел.
Спасибо, Александр.
Причиной такого поведения скорее всего то, что что-то произошло с моей виндой. Сегодня с утра просмотрщик фотографий внезапно отказался отрисовывать кнопки внизу после изменения размера окна, проявлялись они также как и обновления заголовка автокада - по мере прохождения мышкой по их местам. Вероятно, баг в обновлении, который, может быть, со следующим обновлением уйдет. Автокад я кстати тоже пробовал переставлять - не помогало.
Навигация
Перейти к полной версии