장치 독립적 비트 맵 (DIB)을 만들어야한다고 생각합니다. 응용 프로그램 창에 넣을 준비가 된 픽셀 배열이 이미있는 경우 전체 배열을 CreateDIBSection API에 의해 할당 된 버퍼로 복사하고 BitBlt를 호출하여 DIB를 창에 전송해야 할 수 있습니다. 이것은 Win32 플랫폼의 컴퓨터 화면에 보이는 그림처럼 단순한 픽셀 배열을 표시하는 유일한 방법이며 매우 복잡하고 이해하기 어렵습니다. 여기
내가 당신이 원하는 무엇을 비슷한 일을 테스트하기 위해 수행하는 데 사용되는 단계는 다음과 같습니다
만들기 DIB :
BITMAPINFO bmi;
memset(&bmi, 0, sizeof(bmi));
bmi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
bmi.bmiHeader.biWidth = /* Width of your image buffer */
bmi.bmiHeader.biHeight = - /* Height of your image buffer */
bmi.bmiHeader.biPlanes = 1;
bmi.bmiHeader.biBitCount = 32;
bmi.bmiHeader.biCompression = BI_RGB;
HDC hDesktopDC = GetDC(GetDesktopWindow());
HBITMAP hDib = CreateDIBSection(hDesktopDC, &bmi, DIB_RGB_COLORS, (void **)&buffer, 0, 0);
if (buffer == NULL) { /* ERROR */ }
HDC hDibDC = CreateCompatibleDC(hDesktopDC);
HGDIOBJ hOldObj = SelectObject(hDibDC, hDib);
/* Copy your array of pixels to buffer allocated above. */
ReleaseDC(GetDesktopWindow(), hDesktopDC);
구현 WM_PAINT 이벤트 핸들러 (HWND를 변수는 창 아래 처리 보유) :
위의 코드 스 니펫이 직접 도움이 될 것으로 기대하지 않습니다. 위의 스 니펫에서와 같은 GDI 함수를 사용하기로 결정했다면 MSDN에서 API 문서를주의 깊게 읽는 것이 좋습니다. API를 사용하는 동안 획득 한 DC 또는 GDI 개체를 적절하게 해제하거나 삭제하는 것은 매우 까다로운 작업이기 때문입니다.
이 질문은 매우 광범위합니다. 아마도 [winapi DrawText] (http://stackoverflow.com/search?q= [winapi] + drawtext)를 원하십니까? –
자신의 창이나 다른 프로그램의 창에 텍스트를 그리는 중입니까? – chris
@ Jesse, chris 어떻게하면 창문에 텍스트를 그려야한다는 결론에 도달 했습니까? ^^ –