看我的程序有什么问题,不能按设计意图改变控件的不同颜色?

boolsun 2004-12-30 12:42:15
// MyCtrlMainWnd.cpp : implementation file
//

#include "stdafx.h"

#include "MyCtrlmainapp.h"
#include "MyCtrlMainWnd.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif


/////////////////////////////////////////////////////////////////////////////
// CMyCtrlMainWnd

IMPLEMENT_DYNCREATE(CMyCtrlMainWnd, CFrameWnd)

CMyCtrlMainWnd::CMyCtrlMainWnd()
{
}

CMyCtrlMainWnd::~CMyCtrlMainWnd()
{
}


BEGIN_MESSAGE_MAP(CMyCtrlMainWnd, CFrameWnd)
//{{AFX_MSG_MAP(CMyCtrlMainWnd)
ON_BN_CLICKED(IDM_BUTTON1,OnBtnAllLight)
ON_BN_CLICKED(IDM_BUTTON2,OnBtnAllDeLight)
ON_BN_CLICKED(IDM_BUTTON3,OnBtnShakeHand)
ON_WM_CREATE()
ON_WM_CTLCOLOR()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMyCtrlMainWnd message handlers

int CMyCtrlMainWnd::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;

// TODO: Add your specialized creation code here
//*
btnAllLight.Create(_T("确 定"),WS_CHILD|WS_VISIBLE ,CRect(547,50,616,80),this,IDM_BUTTON1);
btnAllDeLight.Create(_T("取 消"),WS_CHILD|WS_VISIBLE,CRect(547,100,616,130),this,IDM_BUTTON2);
btnHandShake.Create(_T("放 弃"),WS_CHILD|WS_VISIBLE,CRect(547,150,616,180),this,IDM_BUTTON3);
lblTxt1.Create(_T("文本信息显示框"),WS_CHILD|WS_VISIBLE,CRect(10,4,128,23),this,IDC_STATIC1);
btnFilter.Create(_T("*****这是一个检查框属性的按钮*****"),WS_CHILD|BS_AUTOCHECKBOX|WS_VISIBLE,CRect(243,5,534,22),this,IDM_BUTTON4);
btnGroup.Create(_T("分组按钮"),WS_CHILD|BS_GROUPBOX|WS_VISIBLE,CRect(540,17,623,200),this,IDC_GROUP);
mEdit.Create(WS_CHILD|WS_THICKFRAME|WS_VISIBLE|ES_MULTILINE|ES_READONLY ,CRect(10,25,535,440),this,ID_EDIT);
// */
return 0;
}

void CMyCtrlMainWnd::OnBtnAllLight()
{
}

void CMyCtrlMainWnd::OnBtnAllDeLight()
{
}

void CMyCtrlMainWnd::OnBtnShakeHand()
{
}


BOOL CMyCtrlMainWnd::OnChildNotify(UINT message, WPARAM wParam, LPARAM lParam, LRESULT* pLResult)
{
/*
if( message==WM_CTLCOLORBTN)
{
SetTextColor((HDC)wParam,RGB(255,0,0));
SetBkColor((HDC)wParam,RGB(0,255,0));
CBrush bb;
bb.CreateSolidBrush(RGB(0,255,0));
}
*/
return CFrameWnd::OnChildNotify(message, wParam, lParam, pLResult);
}

HBRUSH CMyCtrlMainWnd::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{

// TODO: Change any attributes of the DC here
HBRUSH bb;
switch(nCtlColor)
{
case CTLCOLOR_BTN:
pDC->SetTextColor(RGB(255,0,0));
pDC->SetBkColor(RGB(0,255,255));
bb=CreateSolidBrush(RGB(0,255,255));
break;
case CTLCOLOR_EDIT:
pDC->SetTextColor(RGB(0,255,0));
pDC->SetBkColor(RGB(255,0,255));
bb=CreateSolidBrush(RGB(255,0,255));
break;
case CTLCOLOR_STATIC:
pDC->SetTextColor(RGB(0,0,255));
pDC->SetBkColor(RGB(255,255,0));
bb=CreateSolidBrush(RGB(255,255,0));
break;
default:
bb = CFrameWnd::OnCtlColor(pDC, pWnd, nCtlColor);
break;
}
// TODO: Return a different brush if the default is not desired
return bb;
}

...全文
119 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
0hom0 2005-02-05
  • 打赏
  • 举报
回复
ha
kongl123 2004-12-31
  • 打赏
  • 举报
回复
BOOL CMyCtrlMainWnd::OnChildNotify(UINT message, WPARAM wParam, LPARAM lParam, LRESULT* pLResult) 中刷子建而不用不知道是为什么。

HBRUSH CMyCtrlMainWnd::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 中 HBRUSH bb;
是一个局部的刷子,函数完成后有bb 被消毁,return bb;无效

3,882

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧