#include<windows.h>
#include<stdlib.h>
#include<string.h>
LONG WINAPI WndProc(HWND hwnd,UINT msg,UINT wParam,LONG lParam);int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInst, LPSTR lpszCndLine,int nCmdShow)
{
WNDCLASS wndclass;
//初始化窗口类
wndclass.style =0; //默认样式
wndclass.lpfnWndProc =WndProc; //窗口函数名为WndProc
wndclass.cbClsExtra =0; //窗口类无扩展
wndclass.cbWndExtra =0; //窗口实例无扩展
wndclass.hInstance =hInstance; //当前实例句柄
//最小化图标为默认图标  IDI_APPLICATION:32512         IDI_QUESTION:332514
//IDI_HAND:32513              IDI_EXCLAMATION:32515
//IDI_ASTERISK :32516           IDI_WINLOGO:32517
wndclass.hIcon =LoadIcon(NULL,IDI_APPLICATION);
wndclass.hCursor =LoadCursor(NULL,IDC_WAIT); //箭头光标
wndclass.hbrBackground =(HBRUSH)GetStockObject(WHITE_BRUSH); //背景为白色
wndclass.lpszMenuName =NULL; //窗口中无菜单
wndclass.lpszClassName ="drawFilling"; //窗口类名

//窗口类的注册
if(!RegisterClass(&wndclass))
//如果注册失败则发出警告声音
{
MessageBeep(0);
return false;
}

//创建窗口
HWND hwnd=CreateWindow
(
wndclass.lpszClassName, //窗口类名(通过类名来连接到类对象)
"绘图填充", //窗口标题名(打开窗口左上角显示的标题)
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL
);
if(!hwnd)return false; //显示窗口
ShowWindow(hwnd,nCmdShow); //nCmdShow: SW_HIDE SW_SHOW SW_SHOWNA SW_SHOWNORMAL //绘制用户区
UpdateWindow(hwnd); //消息循环
MSG msg;
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
//窗口程序终止时返回
return msg.wParam;
}//窗口函数
long WINAPI WndProc(HWND hwnd,UINT msg,UINT wParam,LONG lParam){
HDC hDC; //设备句柄
HBRUSH hBrush; //画刷句柄
HPEN hPen; //画笔句柄
PAINTSTRUCT ps; //
switch(msg)
{
//响应绘图消息
case WM_PAINT:
hDC = BeginPaint(hwnd,&ps); //SetBkColor函数无效?
SetBkColor(hDC,RGB(0,255,0)); SetMapMode(hDC,MM_ANISOTROPIC); //设置映射模式
hPen = (HPEN)GetStockObject(BLACK_PEN); //黑色画笔
hBrush = (HBRUSH)GetStockObject(DKGRAY_BRUSH); //深灰色画刷
SelectObject(hDC,hBrush); //选择画刷
SelectObject(hDC,hPen); //选择画笔
RoundRect(hDC,50,120,100,200,15,15); //圆角矩阵
hBrush = (HBRUSH)GetStockObject(LTGRAY_BRUSH); //淡灰色画刷
    SelectObject(hDC,hBrush); //选择画刷
Ellipse(hDC,150,50,200,150); //椭圆
hBrush = (HBRUSH)GetStockObject(HOLLOW_BRUSH); //虚化刷
SelectObject(hDC,hBrush); //选择画刷
Pie(hDC,250,50,300,100,250,50,300,50); //饼形
EndPaint(hwnd,&ps); //结束绘图
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
default:
return DefWindowProc(hwnd,msg,wParam,lParam);
}
}

解决方案 »

  1.   

    COLORREF SetBkColor(HDC hDC, COLORREF color) 这个函数并不能用来设置窗口的背景颜色,而只是用于设置文本的背景颜色。要设置窗口背景颜色,其实有很多种方法,如果是在MFC裏面,那就方便很多,但是在Win32 的SDK环境下那我就只知道在用RegisterClass函数注册窗口类的时候,可以设置WNDCLASS结构中的HBRUSH hbrBackground成员,你把这个成员设置为你想要的颜色就可以达到目的
      

  2.   

    If the function fails, the return value is CLR_INVALID.看看返回值!