度々すいません。やはり挙動が変です。
今までデバイスコンテキストの取得はGetDCを使ってたのですが、
GeginPaintとかいうのを使った方がいいらしいので書き換えました。
ですが、ダイアログ起動時に四角形は描画されるものの、ボタン自体が描画されません。
ボタンの部分を押してみるとボタンは出現するのですが、
今度は四角形が消えてしまいます。どうしたらよいのでしょうか。

//ダイアログのプロシジャ内
case WM_PAINT:
DrawRect(GetDlgItem(hWnd,IDC_BUTTON),100,100,0);
return FALSE;

//矩形描画関数
void DrawRect(HWND hWnd,int r,int g, int b){
PAINTSTRUCT paint;
HDC hdc;
HBRUSH hBrush;
RECT rct;
GetClientRect(hWnd,&rct);//hWnd はボタンのハンドル
hdc=BeginPaint(hWnd,&paint);
hBrush=CreateSolidBrush(RGB(r,g,b));
SelectObject(hdc,hBrush);
Rectangle(hdc,4,4,rct.right-5,rct.bottom-5);
EndPaint(hWnd,&paint);
ReleaseDC(hWnd,hdc);
DeleteObject(hBrush);
}