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 подошел.

Спасибо, Александр.

Причиной такого поведения скорее всего то, что что-то произошло с моей виндой. Сегодня с утра просмотрщик фотографий внезапно отказался отрисовывать кнопки внизу после изменения размера окна, проявлялись они также как и обновления заголовка автокада - по мере прохождения мышкой по их местам. Вероятно, баг в обновлении, который, может быть, со следующим обновлением уйдет. Автокад я кстати тоже пробовал переставлять - не помогало.

Навигация

[0] Главная страница сообщений

Перейти к полной версии