Модераторы: feodorv, GremlinProg, xvr, Fixin

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Смазанный текст в EditBox 
:(
    Опции темы
Alv
Дата 9.8.2006, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 26.7.2006
Где: Москва

Репутация: нет
Всего: нет



Если не обрабатывать сообщение WM_CTLCOLORSTATIC, то на всех контролах (даже на EditBox'ах) фон, т.е. например описание radiobox'а, checkbox'а и даже цвет обычных кнопок, а также поля editbox'а заполняются левым цветом. Этот эффект не виден на том ПК, на котором составляется прога (Win'98), но на других ПК с Win2K и WinXP этот эффект проявляется.
PM MAIL   Вверх
Alv
Дата 9.8.2006, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 26.7.2006
Где: Москва

Репутация: нет
Всего: нет



Убрал все лишнее, оставил только сцену. Pr.exe - с эффектом смазывания, Pr1.exe - без него (без обработки WM_CTLCOLORSTATIC), но с левым фоном.

Присоединённый файл ( Кол-во скачиваний: 9 )
Присоединённый файл  Pr.zip 72,45 Kb
PM MAIL   Вверх
Fixin
Дата 9.8.2006, 22:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

Репутация: 8
Всего: 18



1) извини, конечно, но такое ощущение, что циклами и массивами ты пользоваться не научился, не обижайся.
2) программеры из майкрософта всегда заботились о быстроте работы приложений и вводили множество оптимизаций. с одной из них ты столкнулся. для ускорения перемещения текста в мультистроковых редактируемых полях используется перемещение канвы контекста устройства элемента управления, а т.к. стоит режим прозрачности, то с канвы копируется пустое место и это дело всё глючит.

Это предпосылки. сейчас попробую решить эту проблему.
PM MAIL ICQ   Вверх
Alv
Дата 9.8.2006, 23:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 26.7.2006
Где: Москва

Репутация: нет
Всего: нет



Цитата(Fixin @  9.8.2006,  22:32 Найти цитируемый пост)
1) извини, конечно, но такое ощущение, что циклами и массивами ты пользоваться не научился, не обижайся.


На дельные замечания обижаться глупо. Не буду оправдываться - что есть, то есть. Но вот совета, если на него будет время, попрошу. Особенно интересует совет по оптимизации создания и управления различными контролами. Можно ПМом, конечно, опять-таки, если нетрудно.

Цитата(Fixin @  9.8.2006,  22:32 Найти цитируемый пост)
2) программеры из майкрософта всегда заботились о быстроте работы приложений и вводили множество оптимизаций. с одной из них ты столкнулся. для ускорения перемещения текста в мультистроковых редактируемых полях используется перемещение канвы контекста устройства элемента управления, а т.к. стоит режим прозрачности, то с канвы копируется пустое место и это дело всё глючит.

Это предпосылки. сейчас попробую решить эту проблему. 


Ух, куда меня понесло - наперекор майкрософтовским программерам  smile 
Буду благодарен за помощь, но вот проголосовать, увы, не могу
PM MAIL   Вверх
Fixin
Дата 10.8.2006, 10:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

Репутация: 8
Всего: 18



Цитата(Alv @  9.8.2006,  23:46 Найти цитируемый пост)
вот совета, если на него будет время, попрошу
Ну да, это я всю прогу просмотрю и сделаю что смогу, самому интересно.

PM MAIL ICQ   Вверх
Fixin
Дата 13.8.2006, 21:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

Репутация: 8
Всего: 18



Сделано халтурно, сам видишь, но лучшего спсоба не нашел, да и не искал особо, времени не хватает
Код
#include <windows.h>

LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
    MSG msg;
    HWND hwnd;
    WNDCLASS wc;
    memset(&wc, 0, sizeof(wc));
    wc.hbrBackground    =    (HBRUSH)GetStockObject (LTGRAY_BRUSH);
    wc.hCursor            =    LoadCursor(NULL, IDC_ARROW);
    wc.hIcon            =    LoadIcon(NULL, IDI_APPLICATION);
    wc.hInstance        =    hInstance;
    wc.lpfnWndProc        =    WndProc;
    wc.lpszClassName    =    "TryWnd";
    
    if (!RegisterClass(&wc))
        return -1;
    
    CreateWindow("TryWnd", "MainWindow", WS_OVERLAPPEDWINDOW|WS_VISIBLE,
        CW_USEDEFAULT, CW_USEDEFAULT, 400, 300, NULL,
        NULL, hInstance, NULL);
    
    ShowWindow(hwnd, nCmdShow);
    UpdateWindow(hwnd);

    while (GetMessage(&msg, 0, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    return msg.wParam;
}

LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
    static HFONT hFont = CreateFont (-11,7,0,0,FW_LIGHT, 0, 0, 0, ANSI_CHARSET, OUT_DEFAULT_PRECIS,
                            CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_SWISS, "MS Sans Serif");
    switch (msg)
    {
        case WM_CREATE:
            {
                
                HWND hEdit6=CreateWindowEx(WS_EX_CLIENTEDGE,"EDIT",
                    "текст: апвап вап вапва вап вап вап вап вапвап вап ап авп вап ап авп вап вап вап вап авп вап авп апваппавапвапт ап вап вапт ваптватп автаптвадтлп ваптвапваптаатпат ап тваптавтапттат аатвт валтп тавт таплдватп лватп",
                    WS_CHILD|WS_VISIBLE|WS_VSCROLL|ES_LEFT|ES_AUTOVSCROLL|ES_MULTILINE|ES_WANTRETURN|ES_READONLY,
                    10,10,296,40,hwnd,(HMENU)NULL,NULL,NULL);
                SendMessage(hEdit6, WM_SETFONT, (WPARAM)hFont,(LPARAM) MAKELONG((WORD) TRUE, 0));
            }
            break;
        case WM_CTLCOLOREDIT:
        case WM_CTLCOLORSTATIC:
            {
                SetBkColor((HDC) wParam, RGB(192,192,192));
                return (LRESULT)GetStockObject(LTGRAY_BRUSH);
            }
            break;
        case WM_DESTROY:
            DeleteObject(hFont);
            PostQuitMessage(0);
            break;
    }
    return DefWindowProc(hwnd, msg, wParam, lParam);
}
Но я еще хочу сделать элемент управления с кнопками, так что будет продолжение.
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0449 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.