抜き文字(メモ)
#include <windows.h> LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); #define PROC_NAME L"ProcSample04" //---------------------------------------------------------------- int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPreInst, LPWSTR lpszCmdLine, int nCmdShow ) { HWND hwnd; MSG msg; WNDCLASS myProg; if (!hPreInst) { myProg.style = CS_HREDRAW | CS_VREDRAW; myProg.lpfnWndProc = WndProc; myProg.cbClsExtra = 0; myProg.cbWndExtra = 0; myProg.hInstance = hInstance; myProg.hIcon = NULL; myProg.hCursor = NULL; myProg.hbrBackground = (HBRUSH)DKGRAY_BRUSH; myProg.lpszMenuName = NULL; myProg.lpszClassName = PROC_NAME; if (!RegisterClass( &myProg )){ return FALSE; } } hwnd = CreateWindow( PROC_NAME, L"Sample04", WS_OVERLAPPED | WS_SYSMENU | WS_CAPTION, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL); ShowWindow( hwnd, nCmdShow ); UpdateWindow( hwnd ); do{ if(PeekMessage( &msg, NULL, 0U, 0U, PM_REMOVE )) { TranslateMessage( &msg ); DispatchMessage( &msg ); } } while(msg.message != WM_QUIT); return (int)( msg.wParam ); } //---------------------------------------------------------------- LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam ) { HDC hdc; PAINTSTRUCT paintSt; size_t size; LPTSTR str = _T("TestSample04"); switch (msg) { case WM_PAINT: hdc = BeginPaint( hwnd, &paintSt ); StringCchLength( str, STRSAFE_MAX_CCH, &size ); ExtTextOut( hdc, 10, 10, NULL, NULL, str, size, NULL ); EndPaint( hwnd, &paintSt ); break; case WM_DESTROY: PostQuitMessage( 0 ); break; default: return(DefWindowProc( hwnd, msg, wParam, lParam )); } return (0L); }
この部分を抜き状態にしたい場合
hdc = BeginPaint( hwnd, &paintSt ); SetBkMode(hdc, TRANSPARENT); StringCchLength( str, STRSAFE_MAX_CCH, &size ); ExtTextOut( hdc, 10, 10, NULL, NULL, str, size, NULL ); EndPaint( hwnd, &paintSt );