`
android_mylove
  • 浏览: 399547 次
社区版块
存档分类
最新评论

VC++6.0中改变窗口背景颜色和控件背景颜色,CDC,我的感觉

 
阅读更多

VC++6.0中改变窗口背景颜色和控件背景颜色

VC++6.0中改变窗口背景颜色和控件背景颜色 - 加菲 - 加菲

1.改变对话框的背景色
在C…App类中的InitInstance()里添加
SetDialogBkColor(RGB(0,192,0),RGB(0,0,0));
2.如果想改变静态文本或单选按钮的背景色可以用你说的那个获得控件ID,然后设置背景色,具体步骤:
(1)响应对话框类的WM_CTLCOLOR消息生成OnCtlColor函数
(2)为对话框类添加成员变量CBrush m_brush;
并在初始化函数中初始化m_brush.CreateSolidBrush(RGB(0,255,0));
(3)在OnCtlColor函数中添加代码以改变控件的文字颜色和背景色
switch(pWnd->GetDlgCtrlID())
{
case(IDC_INPUT):
pDC->SetTextColor(RGB(255,0,192));
pDC->SetBkMode(TRANSPARENT);
return m_brush;
break;
case(IDC_EDIT1):
pDC->SetTextColor(RGB(255,0,0));
pDC->SetBkMode(TRANSPARENT);
return m_brush;
break;
case(IDC_CHOICE):
pDC->SetTextColor(RGB(255,128,0));
pDC->SetBkMode(TRANSPARENT);
return m_brush;
break;
case(IDC_RADIO1):
pDC->SetTextColor(RGB(255,0,20));
pDC->SetBkMode(TRANSPARENT);
return m_brush;
break;
default:
break;
}
3.如果想改变按钮的背景色,简直太难了,你要重写两个类,还需要在网上下,孙鑫的视频教程中也简单介绍了这个,可只是改变按钮的文字颜色

int SetBkMode(
HDC hdc, // handle to DC
int iBkMode // background mode
);

The SetBkMode function sets the background mix mode of the specified device context. The background mix mode is used with text, hatched brushes, and pen styles that are not solid lines.

SetTextColor
The SetTextColor function sets the text color for the specified device context to the specified color.

COLORREF SetTextColor(
HDC hdc, // handle to DC
COLORREF crColor // text color
);

转载声明:本文转自http://wmnmtm.blog.163.com/blog/static/3824571420097223040181/

===============================================================

CDC, 我的感觉

基于对话框的程序:

void CTestDlg::OnPaint()

{

if (IsIconic())

{

CPaintDC dc(this); // device context for painting

SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

// Center icon in client rectangle

int cxIcon = GetSystemMetrics(SM_CXICON);

int cyIcon = GetSystemMetrics(SM_CYICON);

CRect rect;

GetClientRect(&rect);

int x = (rect.Width() - cxIcon + 1) / 2;

int y = (rect.Height() - cyIcon + 1) / 2;

// Draw the icon

dc.DrawIcon(x, y, m_hIcon);

AfxMessageBox("dd"); //写在这儿不弹出

}

else

{

CDialog::OnPaint();

//AfxMessageBox("dd"); //写在这儿将不停的弹出,说明在不停的调用

if (NULL==GetDC())

{

AfxMessageBox("a");

}

else

{

AfxMessageBox("b");

}

}

}

新建一个对话框,添加WM_PAINT消息

void CMyDlg::OnPaint()

{

CPaintDC dc(this); // device context for painting

// TODO: Add your message handler code here

// Do not call CDialog::OnPaint() for painting messages

}

可以在里面通过dc画图

void CMyDlg::OnPaint()

{

CPaintDC dc(this); // device context for painting

dc.MoveTo(0,0);

dc.LineTo(10,10);

dc.Arc(50,50,80,80,100,100,200,200);

// TODO: Add your message handler code here

// Do not call CDialog::OnPaint() for painting messages

}

对于单文档程序,在View类中,会自动生成OnDraw函数

void CTestAView::OnDraw(CDC* pDC)

{

CTestADoc* pDoc = GetDocument();

ASSERT_VALID(pDoc);

// TODO: add draw code for native data here

}

可以利用pDC来进行绘图:

void CTestAView::OnDraw(CDC* pDC)

{

CTestADoc* pDoc = GetDocument();

ASSERT_VALID(pDoc);

// TODO: add draw code for native data here

pDC->MoveTo(0,0);

pDC->LineTo(100,100);

}

!!顺便说一下,在OnDraw函数中,自动加了一句:CTestADoc* pDoc = GetDocument();

通过pDoc,可以获得与这个视图相关联的文档的指针。这使你能够调用文档的成员函数。

如下 :

void CTestAView::OnDraw(CDC* pDC)

{

CTestADoc* pDoc = GetDocument();

ASSERT_VALID(pDoc);

// TODO: add draw code for native data here

pDC->MoveTo(0,0);

pDC->LineTo(100,100);

pDC->Arc(100.,100,200,200,300,300,400,400);

pDC->TextOut(100,100,"ABC");

//设置文档的名称

LPCTSTR lpctstr;

lpctstr="我的文档";

pDoc->SetTitle(lpctstr);

CString str=pDoc->GetTitle();

AfxMessageBox(str);

}

转载声明:本文转自http://wmnmtm.blog.163.com/blog/static/3824571420096319566302/

===============================================================

分享到:
评论

相关推荐

    VC6.0改变按钮的背景颜色

    默认情况下,CButton控件的颜色遵循系统设定,但有时我们可能需要自定义其外观,比如改变背景颜色以满足特定的界面设计需求。这就需要我们对CButton类进行扩展,创建一个新的派生类,并重写某些关键成员函数,以实现...

    vc++6.0 编写的画图程序

    在VC++ 6.0 中,我们可以利用MFC创建窗口类,实现用户界面和事件处理。 2. **图形绘制基础**:在VC++ 6.0 的MFC环境中,我们可以使用CDC(Device Context)类来处理图形绘制。CDC对象代表了一个设备上下文,它可以...

    VC++改变编辑框Edit控件的颜色

    当我们需要自定义Edit控件的外观,比如改变其背景颜色或字体颜色时,可以使用MFC提供的API函数和消息响应机制。下面将详细介绍如何实现这个功能。 首先,我们需要了解Edit控件的基本属性。在MFC中,Edit控件通常是...

    VC++6.0贪吃蛇程序

    开发者会在OnPaint()消息处理函数中,使用CDC进行游戏画面的绘制,包括蛇、食物和游戏背景。 6. **事件处理**:通过消息映射(ON_MESSAGE, ON_COMMAND等),处理键盘输入和其他用户交互,更新蛇的状态并判断游戏...

    VC6 Tab控件 改变标签和背景颜色 程序源代码

    同时,通过调用`SetBkColor`和`SetTextColor`函数来改变文本颜色和背景颜色,以达到与主窗口背景颜色一致的效果。 在实际编程时,需要注意的是,自定义颜色的处理必须考虑到不同主题和高对比度模式下的适配,以确保...

    VC++6.0 MFC AGV绘轨迹

    在本文中,我们将深入探讨如何使用VC++6.0 MFC来实现AGV(自动导引车)的轨迹绘制功能。MFC(Microsoft Foundation Classes)是微软提供的一个C++类库,它为Windows应用程序开发提供了丰富的接口和支持。在这个项目...

    VC++6.0 个人学习案例 实现LinkButton

    在VC++6.0开发环境中,开发者经常遇到需要自定义控件以满足特定需求的情况。本案例主要关注如何实现一个类似LinkButton的功能,即在不添加额外控件的前提下,让Button能够显示链接文本并改变颜色,以提升用户界面的...

    VC++ 6.0下透明ListBox控件类

    这需要处理好控件的背景颜色,通常是通过获取父窗口的DC并进行比较,或者直接指定一个透明色。 4. **自定义绘制**:为了只显示ListBox中的文本而隐藏背景,我们需要处理LB_GETITEMRECT消息,获取每个项的矩形区域,...

    VC++6.0贪吃蛇毕业设计

    【VC++6.0贪吃蛇毕业设计】是一个基于MFC(Microsoft Foundation Classes)框架的项目,使用Visual C++ 6.0开发环境实现。这个毕业设计涵盖了编程基础、图形界面设计以及游戏逻辑等多个IT领域的知识点。 1. **C++...

    MFC贪吃蛇(VC++6.0)

    《MFC贪吃蛇——基于VC++6.0的经典实现》 在计算机编程的世界里,经典游戏总能激发程序员的创新精神,而“贪吃蛇”便是其中之一。它以其简单的规则和无限的游戏可能性,成为了初学者和资深开发者都喜欢挑战的项目。...

    VC++6.0 推箱子小游戏

    在VC++6.0中,调试和测试是开发过程的关键环节。MFC提供了丰富的调试工具,如断点、监视窗口、内存查看器等,可以帮助开发者定位和修复错误。 总的来说,通过VC++6.0和MFC,我们可以构建一个具有图形用户界面和复杂...

    用vc++ 6.0开发的指示针时钟程序,与大家分享学习

    同时,可以考虑使用SetBkMode()和SetTextColor()函数来改变背景模式和文本颜色,以达到更好的视觉效果。 最后,别忘了在项目的初始化和退出时,使用KillTimer()函数来正确地启动和停止定时器,以避免资源泄露。 总...

    显示倾斜文字 VC++6.0 实例

    在VC++6.0开发环境中,创建一个程序来显示倾斜文字是学习Windows编程的一个基本练习。这个实例将向我们展示如何利用GDI(Graphics Device Interface)库中的函数来实现这一功能。GDI是Windows API的一部分,它提供了...

    自绘编辑框(vc++6.0)实现

    在VC++6.0开发环境中,自绘编辑框(EditBox)是一种常见的技术,用于创建具有个性化外观或特殊功能的编辑框控件。通常,Windows系统中的标准编辑框控件只提供基本的功能和样式,而自绘编辑框则允许开发者通过重载WM_...

    VC++ 6.0 MFC 猫捉老鼠小游戏

    在这个游戏中,界面可能包括一个背景图片(猫和老鼠的活动区域),以及用于显示分数或其他信息的文本控件。 3. **按键响应**:MFC通过消息映射机制处理用户的键盘输入。我们需要定义消息映射函数,如ON_WM_KEYDOWN...

    VC6.0下更改状态栏背景颜色

    2. **添加按钮**:在资源视图中,创建两个按钮,分别对应改变背景颜色的操作。为其分配消息ID,例如ID BTN_GREEN和ID_BTN_RED。 3. **处理按钮事件**:在CMainFrame的消息映射中,为这两个按钮添加消息处理函数。 ...

    vc6.0界面类编程

    例如,可以改变控件的边框样式、背景颜色,添加鼠标悬停效果,甚至实现复杂的动画。在MFC中,这通常通过重载控件的OnPaint消息处理函数,使用CDC(设备上下文)对象进行绘制。同时,利用WM_NOTIFY消息可以监听控件的...

    【最新】MFC, CListCtrl 自定义字体、颜色和背景

    本教程将深入探讨如何在MFC中自定义CListCtrl的字体、颜色以及背景,使其更具个性化和可读性。 首先,了解CListCtrl的基本结构。CListCtrl通常包含多列,每列可以有不同的标题,数据行在各列中显示不同的信息。为了...

    定制应用程序外观修改窗口光标图标背景

    要改变窗口的背景颜色或图片,可以重写OnEraseBkgnd函数。这个函数在窗口需要清除背景时被调用。例如,你可以这样定义: ```cpp void CMyDlg::OnEraseBkgnd(CDC* pDC) { // 不调用基类的实现,防止默认行为 // ...

Global site tag (gtag.js) - Google Analytics