// ■ビットマップブラシの例 //  @ペイント等で32×32のbmpファイルを作成し,ファイル名をmyBitmap.bmpとします。 // AリソースファイルmyBitMap.rcにテキストエディタで // myBitmap BITMAP "myBitmap.bmp" // と記述したファイルを作成します。 // B上記@,Aで作成したファイルをソースプログラムと同じフォルダに格納します。 // C既存項目の追加で,リソースファイルmyBitMap.rcを指定します。 //   #include static HBITMAP hB; // ビットマプハンドル static HBRUSH hBack; // パターンブラシのハドル LRESULT CALLBACK WndProc(HWND hw, UINT msg, WPARAM wp,LPARAM lp){ switch(msg){ case WM_DESTROY : PostQuitMessage(0) ; return 0; } return DefWindowProc(hw,msg,wp,lp); } BOOL initApp(HINSTANCE hCurI){ WNDCLASS wc; hB = LoadBitmap(hCurI,TEXT("myBitmap")); // ビットマップロード hBack = CreatePatternBrush(hB); // ブラシ生成 wc.style = CS_HREDRAW | VREDRAW|DBLCLKS; wc.lpfnWndProc = WndProc; wc.cbClsExtra = wc.cbWndExtra=0; wc.hInstance = hCurI; wc.hIcon = LoadIcon(NULL,IDI_APPLICATION); wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.hbrBackground = hBack; // 生成したブラシを背景用とする wc.lpszMenuName = NULL; wc.lpszClassName = TEXT("myWin"); return RegisterClass(&wc); } HWND initInst(HINSTANCE hCurI){ HWND hw; hw=CreateWindow(TEXT("myWin"),TEXT("ビットブラシ"), WS_OVERLAPPEDWINDOW | VISIBLE, CW_USEDEFAULT, NULL,hCurI,NULL); return hw; } int WINAPI WinMain(HINSTANCE hCurI, hPreI, PSTR lp, cmd){ MSG msg; if(!initApp(hCurI)) return 0; if(initInst(hCurI)==NULL) return 0; while(GetMessage(&msg,NULL,0,0)){ TranslateMessage(&msg) ; DispatchMessage(&msg); } DeleteObject(hB); // リソース解法 DeleteObject(hBack); return msg.wParam; }