Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Отрисовка в Static-e


Автор: DuXeN0N 5.2.2010, 07:24
Вопрос такой. Пишу змейку. Имеется экран, где будет сама змейка и тп. Этот экран-static. Возникла проблема с отрисовкай битмапа. Рисовал на wm_paint в wndproc. Где нужно рисовать и как это грамотно сделать? Заранее благодарен.

Автор: InvalidProperty 5.2.2010, 10:56
какого рода проблема возникла?

Автор: DuXeN0N 6.2.2010, 12:37
InvalidProperty, 
статик в котором отрисовываю становиться серым. Делаю так:

Код

LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)                  /* handle the messages */
    {
        case WM_DESTROY:
            PostQuitMessage (0);       /* send a WM_QUIT to the message queue */
            break;
        case WM_PAINT:
            hDC = BeginPaint(snake_screen,&ps);
            DrawText(hDC,"Text",strlen("text"),NULL);
            EndPaint(snake_screen,&ps);
        default:                      /* for messages that we don't deal with */
            return DefWindowProc (hwnd, message, wParam, lParam);
    }


snake_screen это HWND статика на котором я хочу рисовать. ps это PAINTSTRUCT. взял DrawText просто чтобы попробовать отрисовать, когда отрисую текст, его отрисовку заменю на битмап. главное чтобы отрисовать, а то так просто серый экран

Автор: GremlinProg 8.2.2010, 11:14
1. у DrawText 5 параметров
2. в WM_PAINT рисуют используя то окно, для которого эта WindowProcedure зарегистрирована, т.е. в данном случае,  в BeginPaint нельзя передавать snake_screen, можно hwnd

если хочешь просто "пощупать" GDI, рисуй в самом главном окне, т.е. без Static-а
либо ставь статику стиль SS_OWNERDRAW и перехватывай для него в главном окне WM_DRAWITEM, там можно рисовать на статике

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)