Обновление окна созданного с помощью Win Api

Sashka

Здравствуйте. У меня Возникла проблема с обновлением окна. Есть массив с данными В окне прорисовываются клетки определённого цвета соответствующие данным массива. Когда я нажимаю кнопку мыши, массиву присвоевается значение и послается сообщение на обновление окна, но ничего не получается. Использовал сообщения: SendMessage(hWnd,WM_PAINT,0,0); и UpdateWindow(hWnd);
4 ответа

Sashka

а само сообщение WM_PAINT как нибудь обрабатывается? откуда окно узнает что там надо рисовать? как оно с этим массивом дружит? ЗЫ: это все в ручную надо делать


Sashka

...
case WM_PAINT:
       Paint();
       break;
...
void Paint()
{
    HDC hDC;
    PAINTSTRUCT ps;
    HBRUSH Brush;
    hDC = BeginPaint(hMain,&ps);
    for (int row = 1; row <=10; row++)
    for (int col = 1; col <=10; col++)
    {
        if (arr[row][col] == 0)
        {
            Brush = CreateSolidBrush(RGB(95,200,243));
            SelectObject(hDC,Brush);
        }
        if (arr[row][col] == 1)
        {
            Brush = CreateSolidBrush(RGB(255,0,0));
            SelectObject(hDC,Brush);
        }
        int x = 51+(col-1)*40;
        int y = 50+(row-1)*40;
        Rectangle(hDC,x-1,y-1,x+40,y+40);
    }
    EndPaint(hMain,&ps);
}


Sashka

Попробуй вызать InvalidateRect(hWnd, 0, true). Работает даже если вызывать для окон, принадлежащих чужим процессам.


Sashka

Теперь всё заработало. Спасибо!