通用对话框 颜色
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include
#include "0.h"
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); //窗口函数
COLORREF g_rgbBackground = RGB(255, 255, 255);
COLORREF g_rgbCustom[16] = {0};
void DoSelectColour(HWND hwnd)
{
CHOOSECOLOR cc = {sizeof(CHOOSECOLOR)};
cc.Flags = CC_RGBINIT | CC_FULLOPEN | CC_ANYCOLOR;
cc.hwndOwner = hwnd;
cc.rgbResult = g_rgbBackground;
cc.lpCustColors = g_rgbCustom;
if(ChooseColor(&cc))
{
g_rgbBackground = cc.rgbResult;
}
}
//初始化窗口类
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInst, LPSTR lpszCmdLine, int nCmdShow)
{
HWND hwnd;
MSG Msg;
WNDCLASS wndclass;
char lpszClassName[]= "窗口"; //窗口类名
char lpszTitle[]= "My_Windows"; //窗口标题名
char lpszMenuName[]= "MENU"; //菜单名
//窗口类的定义
wndclass.style= 0; //窗口类型为默认类型
wndclass.lpfnWndProc= WndProc; //窗口处理函数为WndProc
wndclass.cbClsExtra= 0; //窗口类无扩展
wndclass.cbWndExtra= 0; //窗口实例无扩展
wndclass.hInstance= hInstance; //当前实例句柄
wndclass.hIcon= LoadIcon(NULL, IDI_APPLICATION); //窗口的最小化图标为默认图标
wndclass.hCursor= LoadCursor(NULL, IDC_ARROW); //窗口采用箭头光标
wndclass.hbrBackground= (HBRUSH)GetStockObject(WHITE_BRUSH); //窗口背景为白色
wndclass.lpszMenuName= lpszMenuName; //窗口中无菜单
wndclass.lpszClassName= lpszClassName; //窗口类名为“窗口实例”
//窗口类的注册
if(!RegisterClass(&wndclass)) //如果注册失败则发出警告声音
{
MessageBeep(0);
return FALSE;
}
//创建窗口
hwnd= CreateWindow(
lpszClassName, //窗口类名
lpszTitle, //窗口实例的标题名
WS_OVERLAPPEDWINDOW, //窗口风格
CW_USEDEFAULT, //窗口左上角坐标为默认值
CW_USEDEFAULT,
CW_USEDEFAULT, //窗口的高和宽为默认值
CW_USEDEFAULT,
NULL, //此窗口为父窗口
NULL, //此窗口为主菜单
hInstance, //创建此窗口应用程序的当前句柄
NULL //不使用该值
);
ShowWindow(hwnd, nCmdShow); //显示窗口
UpdateWindow(hwnd); //绘制用户区
while(GetMessage(&Msg, NULL, 0, 0)) //消息循环
{
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
return Msg.wParam; //程序终止时将信息返回系统
}
//窗口函数
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HBRUSH hb;
PAINTSTRUCT ps;
HDC hdc;
switch(message)
{
case WM_COMMAND:
switch (LOWORD(wParam))
{
case IDM_EXIT:
PostQuitMessage(0);
break;
case IDM_COLOR:
DoSelectColour(hwnd);
InvalidateRect(hwnd,NULL,1);
break;
default:
return DefWindowProc(hwnd, message, wParam, lParam);
}
break;
case WM_PAINT:
hdc = BeginPaint(hwnd, &ps);
hb=CreateSolidBrush( g_rgbBackground ) ;
SelectObject(hdc, hb);
Ellipse(hdc, 300, 100, 600, 400);
EndPaint(hwnd, &ps);
break;
case WM_DESTROY:
PostQuitMessage(0); //调用PostQuitMessage发出WM_QUIT信息
default:
return DefWindowProc(hwnd, message, wParam, lParam);
}
return 0;
}