小知识

WM_INITDIALOG  返回true 由系统将焦点设在第一个有WS_TABSTOP的控件

                                 返回false   系统不设焦点   自己设置

对话框中的WS_GROUP风格可以将几个控件分在一组 同一组的控件可以用方向键上下循环选择(同一组的控件只需要同组的第一个有该风格 )


客户区有效才能在上面画图   普通窗口如此 ( WM_PAINT中BeginPaint使客户区有效)

                                                   在对话框的子控件上画图也要如此( 用UpdateWindow使客户区有效)


/********绘制图形
					hdc = GetDC(hPaint);			
					SelectObject(hdc, CreateSolidBrush(cr[iColor]));
					SelectObject(hdc, GetStockObject(NULL_PEN));
					(iShape-IDC_RECT)? Ellipse(hdc, 0,0,rect.right,rect.bottom): Rectangle(hdc, 0,0,rect.right,rect.bottom);
					DeleteObject( SelectObject(hdc, GetStockObject(WHITE_BRUSH)));
					ReleaseDC(hPaint, hdc);
*********/


case WM_PAINT:
//				InvalidateRect(hPaint, NULL, TRUE);
					UpdateWindow(hPaint);
					//********绘制图形
					
					break;
case WM_COMMAND:
					switch(LOWORD(wParam))
					{
					case IDC_BLACK:
					case IDC_BLUE:
					case IDC_GREEN:
					case IDC_CYAN:
					case IDC_RED:
					case IDC_MAGENTA:
					case IDC_WHITE:
					case IDC_YELLOW:
							iColor = LOWORD(wParam)-IDC_BLACK;
							CheckRadioButton(hDlg, IDC_BLACK, IDC_WHITE, LOWORD(wParam));

//这里可以不用擦除,  因为绘制的形状一样,  原来的图形被完全覆盖
//						InvalidateRect(hPaint, NULL, FALSE);//用背景画刷擦除原来的图像
							UpdateWindow(hPaint);//一定使客户区有效  然后再画图   

							//********绘制图形
										
							return TRUE;
					case IDC_RECT:
					case IDC_ELLIPSE:
							iShape = LOWORD(wParam);
							CheckRadioButton(hDlg, IDC_RECT, IDC_ELLIPSE, iShape);

//如果不先擦除原来的  就会如图所示
//本来图形是 黑色矩形,  绘制绿色椭圆后,  原来的矩形还有残余
							InvalidateRect(hPaint, NULL, TRUE);
							UpdateWindow(hPaint);

							//********绘制图形
//						InvalidateRect(hPaint, NULL, FALSE);
							return TRUE;
					}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值