Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
WINAPI мигают компоненты + жирные шрифты
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток. Есть несколько интересующих вопросов. Проект Win32 Project, чистый API. 1. Все элементы главной формы, как и ее параметры получаю динамически с сервера. На разных стадиях работы приложения появляются разные компоненты: картинки, текст, кнопки и т.д. Сразу создаю все компоненты скрытыми, а мотом делаю ShowWindow() для каждого в зависимости от стадии. Для отображения текста используется CreateWindow(). Задний фон для текста устанавливается прозрачным в case WM_CTLCOLORSTATIC, при этом когда делается hide\show появляются на мгновения серые фоны. Как исправить? 2. Использую манифест для стилей XP, компоненты стали привычного XP-шного вида, вот только шрифты какие-то нестандартные, жирные. Можно конечно для каждого отдельно установить, но интересно из-за чего проблема и как исправить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2010, 17:34 |
|
||
|
WINAPI мигают компоненты + жирные шрифты
|
|||
|---|---|---|---|
|
#18+
Al_Dav wrote: > 1. Все элементы главной формы, как и ее параметры получаю динамически с > сервера. На разных стадиях работы приложения появляются разные > компоненты: картинки, текст, кнопки и т.д. Сразу создаю все компоненты > скрытыми, а мотом делаю ShowWindow() для каждого в зависимости от > стадии. Для отображения текста используется CreateWindow(). Задний фон > для текста устанавливается прозрачным в case WM_CTLCOLORSTATIC, при этом > когда делается hide\show появляются на мгновения серые фоны. Как исправить? В классе окна статика прописана кисть, которой стирается поверхность окна перед WM_PAINT. Надо либо её убрать (что очень неправильно, поскольку класс -- общий разделяемый ресурс), либо не использвать статик для этого дела, а использовать свой класс. Можно ещё конечно попробовать переопределить обработчик WM_ERASEBACKGROUND и ничего не делать. > 2. Использую манифест для стилей XP, компоненты стали привычного > XP-шного вида, вот только шрифты какие-то нестандартные, жирные. Можно > конечно для каждого отдельно установить, но интересно из-за чего > проблема и как исправить? WM_SETFONT с нужным шрифтом. Шрифт вообще-то может лежать в шаблоне диалога, тогда винда создаёт шрифт и рассылает всем контролам WM_SETFONT. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2010, 18:46 |
|
||
|
WINAPI мигают компоненты + жирные шрифты
|
|||
|---|---|---|---|
|
#18+
По поводу первого спасибо, попробую, по поводу второго - всем компонентам рассылать сообщения с WM_SETFONT или можно сделать чтото типа задать стандартный? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2010, 09:40 |
|
||
|
WINAPI мигают компоненты + жирные шрифты
|
|||
|---|---|---|---|
|
#18+
Al_Dav wrote: > По поводу первого спасибо, попробую, по поводу второго - всем > компонентам рассылать сообщения с WM_SETFONT или можно сделать чтото > типа задать стандартный? Можно и так, и так. Лучше просто задать шрифт в шаблоне диалога. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2010, 12:42 |
|
||
|
WINAPI мигают компоненты + жирные шрифты
|
|||
|---|---|---|---|
|
#18+
Проблема в том что я не использую диалоги, если имелось ввиду Use System Font для MFC диалогов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2010, 11:52 |
|
||
|
WINAPI мигают компоненты + жирные шрифты
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. все компоненты создаются через CreateWindow и WNDCLASS не содержит настроек для шрифтов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2010, 11:57 |
|
||
|
WINAPI мигают компоненты + жирные шрифты
|
|||
|---|---|---|---|
|
#18+
Al_Dav wrote: > window = CreateWindow( wcex.lpszClassName, TEXT(stages[*0*].header), > WS_OVERLAPPED|WS_CAPTION|WS_BORDER|WS_SYSMENU | WS_MINIMIZEBOX | WS_VISIBLE, > left_x, top_y, size_x, size_y, *0*, *0*, hInstance, *0*); > > > все компоненты создаются через CreateWindow и WNDCLASS не содержит > настроек для шрифтов Тогда создавай шрифт и рассылай WM_SETFONT сам. Учти, что шрифт как объект WinGDI должен существовать всё время, пока существует диалог (окно). Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2010, 12:50 |
|
||
|
WINAPI мигают компоненты + жирные шрифты
|
|||
|---|---|---|---|
|
#18+
MasterZiv спасибо, первое помогло, правда не WM_ERASEBACKGROUND, а WM_ERASEBKGND. Не знаю от чего зависит, но все равно спасибо. По поводу второго сомнений и не возникало) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2010, 15:23 |
|
||
|
WINAPI мигают компоненты + жирные шрифты
|
|||
|---|---|---|---|
|
#18+
Есть еще один небольшой вопросик: один STATIC("Text") компонент обновляется несколько раз в секунду, точнее текст обновляется и при таком частом обновлении текст смазывается, такое ощущение, что рисуется один на другом. Как исправить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2010, 18:20 |
|
||
|
WINAPI мигают компоненты + жирные шрифты
|
|||
|---|---|---|---|
|
#18+
Al_Dav wrote: > Есть еще один небольшой вопросик: один STATIC("Text") компонент > обновляется несколько раз в секунду, точнее текст обновляется и при > таком частом обновлении текст смазывается, такое ощущение, что рисуется > один на другом. Как исправить? Не, вряд ли. Что-то сильно не так делаешь. Как смазывается -- может картинку дашь? И код ? Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2010, 12:35 |
|
||
|
WINAPI мигают компоненты + жирные шрифты
|
|||
|---|---|---|---|
|
#18+
Рисую фон и картинки: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. Код: plaintext 1. 2. 3. 4. 5. 6. 7. Код: plaintext 1. 2. Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2010, 14:01 |
|
||
|
WINAPI мигают компоненты + жирные шрифты
|
|||
|---|---|---|---|
|
#18+
Al_Dav wrote: > Автор: "Al_Dav" > Рисую фон и картинки: > > case WM_PAINT: > \t\t PAINTSTRUCT ps; > \t > \t\t\thdc = BeginPaint(hwnd, &ps); > \t\t\tRECT R1, R2; > \t\t\tR1.bottom = b_height; > \t\t\tR1.left = *0*; > \t\t\tR1.right = b_width; > \t\t\tR1.top = *0*; > \t\t\tDrawImg(hdc, R1, m_pImage); > > \t\t\tfor (int i = *0*; i < num_img; i++) > \t\t\t{ > \t\t\t\tif (num == images[i].stad) > \t\t\t\t{ > \t\t\t\t\t\t\t\t > \t\t\t\t\tR2.bottom = images[i].height; > \t\t\t\t\tR2.left = images[i].left; > \t\t\t\t\tR2.right = images[i].width; > \t\t\t\t\tR2.top = images[i].top; > \t\t\t\t\tDrawImg(hdc, R2, images[i].m_pImage); > \t\t\t\t} > \t\t\t} > EndPaint(hwnd, &ps);\t\t\t > \t\t\treturn *0*; Ну ты тут рисуешь несколько картинок, они друг над другом и рисуются. Это и мигает. Такое лучше рисовать в memory DC, а затем копировать в DC реальный. > > Создаю контрол в WM_CREATE: > > for (int i = *0*; i < *2*; i++) > \t{ > \t\tprogress_box.labels[i].label = CreateWindow(TEXT("STATIC"), progress_box.labels[i].text, > \t\t\t\tWS_CHILD | SS_LEFT ,progress_box.labels[i].left, > progress_box.labels[i].top, progress_box.labels[i].width, > progress_box.labels[i].height,hwnd, (HMENU) progress_box.labels[i].index, NULL, NULL); > \t\tSendMessage(progress_box.labels[i].label, WM_SETFONT, (WPARAM)hFont, (LPARAM)TRUE);\t > \t} > > Обновляю текст: > > SendMessage(progress_box.labels[*1*].label, WM_SETTEXT, *0*, (LPARAM)pr_text); > InvalidateRect(window, &rc, false); > UpdateWindow(window); Вообще если ты уже послал WM_SETTEXT ничего InvalidateRect и UpdateWindow уже не надо, если я правильно помню. К тому же есть SetWindowText. > window - хендл главного окна, rc - размеры STATIC Что может быть со шрифтами я так и не понял. Где тут вывод текста ? Нету. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2010, 00:33 |
|
||
|
WINAPI мигают компоненты + жирные шрифты
|
|||
|---|---|---|---|
|
#18+
Идет обновления текста в STATIC посылая ему сообщение WM_SETTEXT, при котором он мигает, а без InvalidateRect(window, &rc, false); UpdateWindow(window); происходит наслаивание текста друг на друга ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2010, 10:44 |
|
||
|
WINAPI мигают компоненты + жирные шрифты
|
|||
|---|---|---|---|
|
#18+
Со шрифтами все нормально уже, создал свой шрифт и всем его рассылаю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2010, 11:50 |
|
||
|
WINAPI мигают компоненты + жирные шрифты
|
|||
|---|---|---|---|
|
#18+
Al_Dav wrote: > Идет обновления текста в STATIC посылая ему сообщение WM_SETTEXT, при > котором он мигает, а без > InvalidateRect(window, &rc, false); > UpdateWindow(window); > происходит наслаивание текста друг на друга Так ты Erasebackground-то забанил, вот оно и не стирается. как-то стирать всё же надо. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2010, 14:02 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=36787489&tid=2020101]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
72ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
| others: | 322ms |
| total: | 483ms |

| 0 / 0 |
