Documente online.
Zona de administrare documente. Fisierele tale
Am uitat parola x Creaza cont nou
 HomeExploreaza
upload
Upload




Обработка сообщений WM_PAINT

Rusa


WM_PAINT



Прежде чем как продолжит 111m1215b ;ь чтение, снова запустите программу, приведенную в предыдущем разделе, и введите несколько символов. Затем минимизируйте и снова распахните окно. Вы увидите, что в восстановленном окне ничего не отображается. И в том случае, если окно перекрывается другим окном, а затем вновь становится активным, последний введенный символ не отображается. Причина этого проста: Windows, как правило, не запоминает содержимое окна (число окон зависит от приложений). Таким образом, все заботы по перерисовке содержимого окна возлагаются на Вашу программу.

Для того чтобы программа знала, когда ей следует это делать, Windows каждый раз, когда необходимо перерисовать окно, посылает ей сообщение WM_PAINT case WM_PAINT

WM_PAINT, будет полезно расска­зать, почему Windows не перерисовывает окно автоматически. В большинстве случаев перерисовать окно проще программе, нежели Windows, поскольку именно програм­ма, а не Windows, должна «знать» о содержимом окна и способах его перерисовки. И хотя достоинства этого подхода являются спорными, в данном случае нужно просто принять его, поскольку не похоже, что он будет меняться.

WM_PAINT case switch



запроса на перерисовку окна

case WM_PAINT:

hdc=BeginPaint(hwnd,&paintstruct); // DC

TextOut(hdc,1,1,str,strlen(str)); //

EndPaint(hwnd, &paintstruct); // DC

break;

BeginPaint() GetDC() WM_PAINT BeginPaint()

HDC BeginPaint(HWND hwnd, LPPAINTSTRICT lpPS);

PAINTSTRUCT

typedef struct tagPAINTSTRUCT

PAINTSTRUCT;

RECT

typedef struct tagRECT

RECT;

PAINTSTRUCT rcPaint PAINTSTRUCT; можно предположит 111m1215b ;ь, что рабочая область окна будет перерисовываться целиком.



WM_PAINT:

WM_PAINT

#include <Windows.h>

#include <String.h>

#include <Stdio.h>

LRESULT CALLBACK WindowFunc(HWND, UINT,

WPARAM, LPARAM) ;

char szWinName[]=" "; //

char str[80]="Пример";  // Буфер для строки вывода

int WINAPI WinMain(HINSTANCE hThisInst,

HINSTANCE hPrevInst,

LPSTR lpszArgs,

int nWinMode)

return msg.wParam;

}

// системой Windows и получает в качестве

LRESULT CALLBACK WindowFunc(HWND hwnd,

UINT message,

WPARAM wParam,

LPARAM lParam)

return 0;

}

Прежде чем продолжит 111m1215b ;ь чтение, скомпилируйте и повторно запустите эту про­грамму. Попробуйте ввести несколько символов, затем минимизируйте и снова раскройте окно. Вы увидите, что каждый раз при перерисовке окна последний введенный символ также перерисовывается. Заметьте, что внешний массив str инициализируется как слово "Пример", и эта строка отображается в начале работы программы. Так происходит потому, что при создании окна оно получает сообщение WM PAINT



WM PAINT

Windows




Document Info


Accesari: 2537
Apreciat: hand-up

Comenteaza documentul:

Nu esti inregistrat
Trebuie sa fii utilizator inregistrat pentru a putea comenta


Creaza cont nou

A fost util?

Daca documentul a fost util si crezi ca merita
sa adaugi un link catre el la tine in site


in pagina web a site-ului tau.




eCoduri.com - coduri postale, contabile, CAEN sau bancare

Politica de confidentialitate | Termenii si conditii de utilizare




Copyright © Contact (SCRIGROUP Int. 2025 )