|
BeginPaint()는 WM_PAINT 메시지가 발생 했을때만 사용해야 하며
이때 다시 그릴 윈도우 영역 정보도 함께 구할 수 있습니다(자세한 것은 도움말을 보세요).
님의 코드가 동작하지 않은 이유는 이미 VCL 내부에서 BeginPaint()를 호출하여
무효화 영역을 구하여 그 정보가 Reset됐기 때문이며, 그로 인해 님이 부른 BeginPaint()에선
페인트 영역이 없는 DC가 구해진 것이 원인으로 추정됩니다(도움말엔 없는 내용이라 확실하진
않군요).
BEGIN_MESSAGE_MAP macro을 이용해서 WM_PAINT를 직접 가로챈 후 BeginPaint()을 두번
사용하는 코드를 작성해 보신 더 확실히 알 수 있을 겁니다.
행복하세요
---------------------------------------
speed 님이 쓰신 글 :
: void __fastcall TForm1::FormPaint(TObject *Sender)
: {
: HDC hdc;
: PAINTSTRUCT ps;
: int x, y;
:
: hdc = ::BeginPaint( this->Handle, &ps );
:
: TextOut( hdc, 10, 30, "AAA", 3 );
:
: EndPaint( this->Handle, &ps );
: }
: 위와 같이 하면 Text가 나오지 않구요..
: HDC hdc;
: hdc = GetDC(this->Handle);
:
: TextOut( hdc, 10, 10, "rrr", 3);
:
: ReleaseDC(this->Handle, hdc);
:
: 이렇게 하면 나오거든요..
: 왜
: PAINTSTRUCT 를 사용하면 다이얼로그에서 text가 써여지지 않는 건지요?
|