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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> WINAPI мерцание текста, Текст мерцает при изминении размеров 
:(
    Опции темы
zburguy
Дата 25.6.2009, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 7.4.2009

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



Начал разбираться с Winapi в книжке пример простого окна в середине которого написан текст.
При изменении размеров окна текст мерцает. Как я понял это происходит из-за перерисовки заднего фона.
Я пробовал отключить перерисовку заднего фона, но при создании окна главная область прозрачная, а когда изменяю размеры вообще что попало выходит.
Вот сам код:

Код

LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
    HDC hDC;
    PAINTSTRUCT ps;
    RECT rect;

    switch(msg)
    {
    case WM_PAINT:
        hDC = BeginPaint(hWnd, &ps);
        ps.fErase = 0;
        GetClientRect(hWnd, &rect);
        DrawText(hDC, L"Привет", -1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER);
        EndPaint(hWnd, &ps);
    break;

    case WM_DESTROY:
        PostQuitMessage(0);
    break;

    default:
        return DefWindowProc(hWnd, msg, wParam, lParam);
    }

return 0;
}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
HWND hWnd;
MSG msg; 

hInst = hInstance;


WNDCLASS wc;

ZeroMemory(&wc, sizeof(wc));
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = (WNDPROC)WndProc;
wc.hInstance = hInst; 
wc.hIcon = LoadIcon(hInst, IDI_APPLICATION);
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wc.lpszClassName = AppName;

RegisterClass(&wc); 

hWnd = CreateWindow(
    AppName, 
    AppName, 
    WS_OVERLAPPEDWINDOW,
    CW_USEDEFAULT, 0, 
    200, 300,
    NULL, 
    NULL, 
    hInst, 
    NULL); 

ShowWindow(hWnd, SW_SHOW);
UpdateWindow(hWnd);

    while(GetMessage(&msg, NULL, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }

return msg.wParam;
}


Если не тяжело можно пример кода.

Читал, что для этих целей лучше всего использовать буфер, можете привести примерчик буду очень признателен.
Заранее спасибо.
PM MAIL Skype GTalk   Вверх
Andrey44
Дата 25.6.2009, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1501
Регистрация: 4.12.2006
Где: На работе

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





--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
zburguy
Дата 26.6.2009, 00:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 7.4.2009

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



Я там так и не понял получилось или нет, хоть подтолкните в какую сторону копать.
PM MAIL Skype GTalk   Вверх
Andrey44
Дата 26.6.2009, 07:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1501
Регистрация: 4.12.2006
Где: На работе

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



zburguy, двойная буфферизация. Вот ответ на твой вопрос.
CreateCompatibleDC
CreateCompatibleBitmap


--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
GremlinProg
Дата 26.6.2009, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(zburguy @  26.6.2009,  02:23 Найти цитируемый пост)
Я там так и не понял получилось или нет

да, там получилось
если не понятны детали, то эта тема должна решить все оставшиеся вопросы:
http://forum.vingrad.ru/forum/topic-255037...-all/index.html
тут примеры полноценных приложений с буферизацией и без

M
GremlinProg

горячие темы, как правило решают больше вопросов, чем требуется,
пользуйтесь поиском с разными ключами,

а чтобы ваши темы можно было быстрее и проще найти, не забывайте вставлять ключевые слова к ней при создании,
либо жмите кнопку "report" и извещайте модераторов с пожеланиями о смене: заголовка темы, описания темы или набора ключевых слов для быстрого поиска темы



--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
wectula
Дата 10.12.2022, 08:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 9.12.2022

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




Модератор: Сообщение скрыто.

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

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


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

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


 




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


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

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