- 浏览: 64161 次
-
最新评论
文章列表
正文
所谓GDI(Graphics Device Interface,图形设备接口)其实就是API函数中专门针对于图形开发的函数集合这些函数都是Microsoft公司编写好的,为了能让开发人员快速地开发图形程序,开发人员只需要调用就行
在谈GDI函数之前,一定要先讲一下数据,因为图形开发,肯定离不开数据以简单的二维图形为例,你想在窗口中显示一个正弦曲线,就必须有这个正弦曲线的数据,然后用GDI提供的画图函数,讲数据显示成图形
二维图形其实就是以点线面三种元素组成
点
图形中最基本的元素就是点,C++中对于点的结构定义是
typedef struct tagPOINT
{ ...
- 2013-02-26 08:19
- 浏览 827
- 评论(0)
Windows绘图方式
1.<wbr><wbr><strong>HDChdc;<br><wbr><wbr><wbr><wbr>hdc = ::GetDC(m_hWnd);<br><wbr><wbr><wbr><wbr>MoveToEx(hdc , m_ptOrigin.x ,m_ptOrigin.y,NULL);<br><wbr><wbr><wbr><wbr>L ...
- 2013-02-26 08:18
- 浏览 680
- 评论(0)
要做路径规划东东了,仿真需要陈vc,先扫扫盲吧!
1.使用SDK获取DC句柄
HDC hdc;
hdc=::GetDc(m_hWnd);<wbr><wbr><wbr>//获取DC句柄<br>
MoveToEx(hdc,m_ptOrigin.x,m_ptOrigin.y,NULL);<br>
LineTo(hdc,point.x,point.y);<br>
::ReleaseDC(m_hWnd,hdc);<wbr><wbr><wbr>//释放DC</wbr></ ...
- 2013-02-26 07:48
- 浏览 553
- 评论(0)
通过hdc指针获取cdc指针
创建一个基于对话框的应用程序。
为改对话框创建一个按钮。
为改按钮添加一个单击事件消息响应函数,如下:
void CDemo9Dlg::OnButton1()
{
// TODO: Add your control notification handler code here
//获取当前dc的句柄
HDC hdc=::GetDC(m_hWnd);
//通过hdc指针获取cdc指针
CDC* pdc=CDC::FromHandle(hdc);
//输出文本
pdc->SetBkMode(TRANSPARENT) ...
- 2013-02-26 07:42
- 浏览 603
- 评论(0)
基于消息的windows MFC程序设计是如何进行消息映射的呢?
对于一个MFC APPWizard运用程序,CMainFrame和View是窗口类,并且是父子关系,Doc一般用于数据的加载和存储,View用于图像的显示,App中是包括一些(窗口)初始化之类的东西。
一、消息映射机制
windows程序设计是种事件驱动方式的程序设计,主要基于消息的。当用户需要完成某种功能时,需要调用OS某种支持,然后OS将用户的需要包装成消息,并投入到消息队列中,最后应用程序从消息队列中取走消息并进行响应。
在左边View类处点右键,在出现的菜单里点击“Add Windows Message Han ...
- 2013-02-26 07:33
- 浏览 824
- 评论(0)
绘图(VC_Win32)
目录
GUI作图概述描绘图形位图文本输出设置画刷/画笔/字体MFC 资源句柄的获得与释放
(本章节中例子都是用 VS2005 编译调试的)
GUI作图概述
作图步骤
获得设备描述表资源句柄
绘图操作
释放设备描述表资源句柄
流程图如下:
获取/释放设备资源描述表
获取设备资源描述表: BeginPaint / GetDC
释放设备资源描述表: EndPaint / ReleaseDC
BeginPaint / GetDC两种方式的区别:
BeginPaint
- 2013-02-26 07:25
- 浏览 787
- 评论(0)
vc++6.0中的图形图像处理
图形图像处理
1.设备环境(DC)的概念。
2.常用的几个设备环境类如CPaintDC、CClientDC、CWindowDC和CMetaFileDC类的主要特点及它们在使用方法上的区别。
3.GDI的概念及常用的绘图设备类如CGdiObject、CPen、CBrush、Cfont和CBitmap等的对象的创建和将其引入到设备环境中的方法。
4.Windows下的坐标映像方式和特点以及如何设置坐标映像方式。
5.几种常见的Windows的坐标映像方式下的坐标转换方法。
- 2013-02-26 07:21
- 浏览 1466
- 评论(0)
非模态对话框
用MFC可以创建非模态的对话框,只是创建方式不同,模态对话框用 dlg.DoModel()调用,而非模态对话框要用create函数创建调用。
/*假设IDD_TEST_DLG为已经定义的对话框资源的ID号*/
CTestDlg *dlg=new CTestDlg;
dlg->Create(IDD_TEST_DLG,NULL);
dlg->ShowWindows(SW_SHOW);
在上面的代码中我们新生成了一个对话框对象,而且在退出函数时并没有销毁该对象。因为如果此时销毁该对象(对象被销毁时窗口同时被销毁),而此时对话框还在显示就会出现错误。那么这就 ...
- 2013-02-25 15:40
- 浏览 643
- 评论(0)
深度解析VC中的消息传递机制
摘要:
Windows编程和Dos编程,一个很大的区别就是,Windows编程是事件驱动,消息传递的。所以,要学好Windows编程,必须对消息机制有一个清楚的认识,本文希望能够对消息的传递做一个全面的 ...
- 2013-02-25 15:39
- 浏览 502
- 评论(0)
什么是消息? 消息系统对于一个win32程序来说十分重要,它是一个程序运行的动力源泉。一个消息,是系统定义的一个32位的值,他唯一的定义了一个事件,向Windows发出一个通知,告诉应用程序某个事情发生了。例如,单击 ...
- 2013-02-25 10:29
- 浏览 481
- 评论(0)
MFC程序的运行过程:
(1)首先利用全局应用程序对象theApp启动应用程序。正是产生了这个全局对象,基类CWinApp中的this指针才能指向这个对象。如果没有这个全局对象,程序在编译时不会出错,但在运行时就会出错。
(2) ...
每个MFC程序都有一个the全局对象,此对象代表了这个应用程序,程序从这里诞生。
<wbr></wbr>
1、因theApp是全局对象,所以比winmain更早初始化。
<wbr></wbr>
2、theApp的初始化,先引发了其构造函数。因theApp派生于CWinApp,则也引发了CWinApp的构造函数
<wbr></wbr>
3、CWinApp中的几条重要的初始化代码:
AFX_MODULE_STATE* pModuleState =_AFX_CMDTARGET_GETSTATE();
AFX_M ...
- 2013-02-25 10:18
- 浏览 591
- 评论(0)
即便是基于MFC的应用程序,建立窗口类也是会遵循如下的过程:设计窗口类->注册窗口类->生成窗口->显示窗口->更新窗口->消息循环->消息路由到窗口过程函数处理。下面就剖析一下在MFC中是如何完成上述过程的。
(1)每个应用程序都有且仅有一个应用类的全局变量theApp,全局变量先于WinMain函数进行处理。(2)WinMain函数体在APPMODUL.CPP文件中,定义如下:
extern "C" int WINAPI
_tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, ...
- 2013-02-25 10:16
- 浏览 883
- 评论(0)
在VC项目开发中,很多时候需要自己定义消息进行事务处理。上次也刚好有同学问及,这里综合网络上的一些资料,集中起来供参考。
u 自定义消息
我们可以通过一下两种方法来自定义一个消息:
1) 方法一
Step 1:使用WM_TASKBARCREATED来确定一个没有被windows本身抢占
的消息值,在想添加消息文件中添加代码:
const UINT WM_USERDEFMSG = ::RegisterWindowMessage(_T("UserDefMsg"));
Step 2:定义消息的处理过程:在处理消息的类(如Dlg类或者MainFrame等)
...
- 2013-02-25 10:11
- 浏览 562
- 评论(0)
现在讨论MFC应用程序如何启动。
WinMain函数是MFC提供的应用程序入口。进入WinMain前,全局应用程序对象已经生成。WinMain流程如图5-3所示。图中,灰色框是对被调用的虚拟函数的注释,程序员可以或必须覆盖它以实现MFC要求的或用户希望的功能;大括号所包含的图示是相应函数流程的细化,有应用程序对象App的初始化、Run函数的实现、PumpMessage的流程,等等。
从图中可以看出:
(1)一些虚拟函数被调用的时机
对应用程序类(线程类)的InitIntance、ExitInstance、Run、ProcessMessageFilter、OnIdle、PreT ...
- 2013-02-25 10:10
- 浏览 573
- 评论(0)