基于对话框的程序:
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/
===============================================================
相关推荐
默认情况下,CButton控件的颜色遵循系统设定,但有时我们可能需要自定义其外观,比如改变背景颜色以满足特定的界面设计需求。这就需要我们对CButton类进行扩展,创建一个新的派生类,并重写某些关键成员函数,以实现...
在VC++ 6.0 中,我们可以利用MFC创建窗口类,实现用户界面和事件处理。 2. **图形绘制基础**:在VC++ 6.0 的MFC环境中,我们可以使用CDC(Device Context)类来处理图形绘制。CDC对象代表了一个设备上下文,它可以...
当我们需要自定义Edit控件的外观,比如改变其背景颜色或字体颜色时,可以使用MFC提供的API函数和消息响应机制。下面将详细介绍如何实现这个功能。 首先,我们需要了解Edit控件的基本属性。在MFC中,Edit控件通常是...
开发者会在OnPaint()消息处理函数中,使用CDC进行游戏画面的绘制,包括蛇、食物和游戏背景。 6. **事件处理**:通过消息映射(ON_MESSAGE, ON_COMMAND等),处理键盘输入和其他用户交互,更新蛇的状态并判断游戏...
同时,通过调用`SetBkColor`和`SetTextColor`函数来改变文本颜色和背景颜色,以达到与主窗口背景颜色一致的效果。 在实际编程时,需要注意的是,自定义颜色的处理必须考虑到不同主题和高对比度模式下的适配,以确保...
在本文中,我们将深入探讨如何使用VC++6.0 MFC来实现AGV(自动导引车)的轨迹绘制功能。MFC(Microsoft Foundation Classes)是微软提供的一个C++类库,它为Windows应用程序开发提供了丰富的接口和支持。在这个项目...
在VC++6.0开发环境中,开发者经常遇到需要自定义控件以满足特定需求的情况。本案例主要关注如何实现一个类似LinkButton的功能,即在不添加额外控件的前提下,让Button能够显示链接文本并改变颜色,以提升用户界面的...
这需要处理好控件的背景颜色,通常是通过获取父窗口的DC并进行比较,或者直接指定一个透明色。 4. **自定义绘制**:为了只显示ListBox中的文本而隐藏背景,我们需要处理LB_GETITEMRECT消息,获取每个项的矩形区域,...
【VC++6.0贪吃蛇毕业设计】是一个基于MFC(Microsoft Foundation Classes)框架的项目,使用Visual C++ 6.0开发环境实现。这个毕业设计涵盖了编程基础、图形界面设计以及游戏逻辑等多个IT领域的知识点。 1. **C++...
《MFC贪吃蛇——基于VC++6.0的经典实现》 在计算机编程的世界里,经典游戏总能激发程序员的创新精神,而“贪吃蛇”便是其中之一。它以其简单的规则和无限的游戏可能性,成为了初学者和资深开发者都喜欢挑战的项目。...
在VC++6.0中,调试和测试是开发过程的关键环节。MFC提供了丰富的调试工具,如断点、监视窗口、内存查看器等,可以帮助开发者定位和修复错误。 总的来说,通过VC++6.0和MFC,我们可以构建一个具有图形用户界面和复杂...
同时,可以考虑使用SetBkMode()和SetTextColor()函数来改变背景模式和文本颜色,以达到更好的视觉效果。 最后,别忘了在项目的初始化和退出时,使用KillTimer()函数来正确地启动和停止定时器,以避免资源泄露。 总...
在VC++6.0开发环境中,创建一个程序来显示倾斜文字是学习Windows编程的一个基本练习。这个实例将向我们展示如何利用GDI(Graphics Device Interface)库中的函数来实现这一功能。GDI是Windows API的一部分,它提供了...
在VC++6.0开发环境中,自绘编辑框(EditBox)是一种常见的技术,用于创建具有个性化外观或特殊功能的编辑框控件。通常,Windows系统中的标准编辑框控件只提供基本的功能和样式,而自绘编辑框则允许开发者通过重载WM_...
在这个游戏中,界面可能包括一个背景图片(猫和老鼠的活动区域),以及用于显示分数或其他信息的文本控件。 3. **按键响应**:MFC通过消息映射机制处理用户的键盘输入。我们需要定义消息映射函数,如ON_WM_KEYDOWN...
2. **添加按钮**:在资源视图中,创建两个按钮,分别对应改变背景颜色的操作。为其分配消息ID,例如ID BTN_GREEN和ID_BTN_RED。 3. **处理按钮事件**:在CMainFrame的消息映射中,为这两个按钮添加消息处理函数。 ...
例如,可以改变控件的边框样式、背景颜色,添加鼠标悬停效果,甚至实现复杂的动画。在MFC中,这通常通过重载控件的OnPaint消息处理函数,使用CDC(设备上下文)对象进行绘制。同时,利用WM_NOTIFY消息可以监听控件的...
本教程将深入探讨如何在MFC中自定义CListCtrl的字体、颜色以及背景,使其更具个性化和可读性。 首先,了解CListCtrl的基本结构。CListCtrl通常包含多列,每列可以有不同的标题,数据行在各列中显示不同的信息。为了...
要改变窗口的背景颜色或图片,可以重写OnEraseBkgnd函数。这个函数在窗口需要清除背景时被调用。例如,你可以这样定义: ```cpp void CMyDlg::OnEraseBkgnd(CDC* pDC) { // 不调用基类的实现,防止默认行为 // ...