简要叙述(1)消息响应机制的原理。 (2)基于MFC类向导的可视化应用程序的基本框架分类及其基本功能?

作者&投稿:荣肤 (若有异议请与网页底部的电邮联系)
CDC *pDC=GetDC();pDC->TextOut();ReleaseDC(pDC);是实现什么功能~

简单地说,GetDC()可以获取当前显示设备的一些属性,这些属性放在一个结构里,pDC指向该结构.
pDC->TextOut就是使用该结构的显示方面的属性来显示一段字符串.
ReleaseDC(pDC);显示的工作做完了,释放这个结构.

你说的在一个类似dos的界面是指控制台应用程序,那是初学者必经之路。那些程序有条条框框的是指有界面的,要建立其它应用程序,比如VC++里面的MFC 。推荐看《深入浅出MFC》、《Windows 程序设计》(最好英文版的)

,使用SDK获取DC句柄:
HDC hdc;
hdc=::GetDc(m_hWnd);//获取DC句柄
MoveToEx(hdc,m_ptOrigin.x,m_ptOrigin.y,NULL);
LineTo(hdc,point.x,point.y);
::ReleaseDC(m_hWnd,hdc);//释放DC

2,利用CDC类指针和CWin类成员函数获取DC。
CDC *pDC=GetDC();
pDC->MoveTo(m_ptOrigin);
pDC->LineTo(point);
ReleaseDC(pDC);

3,利用CClientDC对象。(CClientDC类从CDC类派生来的)
CClientDC dc(this);
dc.MoveTo(m_ptOrigin);
dc.LineTo(point);
说明:
The CClientDC class is derived from CDC and takes care of calling the Windows functions GetDC at construction time and ReleaseDC at destruction time. This means that the device context associated with a CClientDC object is the client area of a window.

4,利用CWindowDC对象。(CWindowDC类从CDC类派生来的)
CWindowDC dc(this);//
dc.MoveTo(m_ptOrigin);
dc.LineTo(point);
说明:
The CWindowDC class is derived from CDC. It calls the Windows functionsGetWindowDC at construction time andReleaseDC at destruction time. This means that a CWindowDC object accesses the entire screen area of a CWnd (both client and nonclient areas).

5,GetParent()得到父窗口指针;GetDesktopWindow()得到屏幕窗口指针。

6,利用画笔改变线条颜色和类型:
CPen pen(PS_DOT,1,RGB(0,255,0));//构造画笔对象
CClientDC dc(this);CPen *pOldPen=dc.SelectObject(&pen);//将画笔选入DC
dc.MoveTo(m_ptOrigin);
dc.LineTo(point);
dc.SelectObject(pOldPen);//恢复先前的画笔

7,使用画刷(通常利用画刷去填充矩形区域):
使用单色画刷
CBrush brush(RGB(255,0,0));//构造画刷对象
CClientDC dc(this);
dc.FillRect(CRect(m_ptOrigin,point),&brush);//用指定的画刷去填充矩形区域

使用位图画刷
CBitmap bitmap;//构造位图对象(使用前需要初试化)
bitmap.LoadBitmap(IDB_BITMAP1);//初试化位图对象
CBrush brush(&bitmap);//构造位图画刷
CClientDC dc(this);
dc.FillRect(CRect(m_ptOrigin,point),&brush);//用指定的位图画刷去填充矩形区域

使用透明画刷
CBrush *pBrush=CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));//获取透明画刷对象指针
CClientDC dc(this);
CBrush *pOldBrush=dc.SelectObject(pBrush);//将透明画刷选入DC
dc.Rectangle(CRect(m_ptOrigin,point));
dc.SelectObject(pOldBrush);//释放透明画刷
说明:
The GetStockObject function retrieves a handle to one of the predefined stock pens, brushes, fonts, or palettes.
HGDIOBJ GetStockObject(
int fnObject // type of stock object
);

Returns a pointer to a CBrush object when given a handle to a Windows HBRUSH object.
static CBrush* PASCAL FromHandle( HBRUSH hBrush );//FromHandle是一个静态方法,故可用CBrush::FromHandle()形式调用。
注意点:
1)静态方法不属于某一个具体对象,而属于类本身,在类加载的时候就已经为类静态方法分配了代码去,故可用CBrush::FromHandle()形式调用。
2)静态方法中,不能引用非静态的数据成员和方法。
3)静态数据成员需要在类外单独做初始化,形式如: 变量类型 类名::变量名=初始值;

8,CDC::SetROP2方法:
int SetROP2( int nDrawMode );
Sets the current drawing mode.

(5)文本编程

1,创建插入符:
void CreateSolidCaret( int nWidth, int nHeight );//创建插入符
void CreateCaret( CBitmap* pBitmap );//创建位图插入符
void ShowCaret( );//显示插入符
void HideCaret( );//隐藏插入符
static void PASCAL SetCaretPos( POINT point );//移动插入符号
说明:
1)创建插入符要在窗口创建完成之后,CreateSolidCaret函数创建的插入符被初始化为隐藏,所以需要调用ShowCaret()将其显示。
2)使用CreateCaret函数创建位图插入符的时候,不能使用局部的位图对象关联位图资源。(与资源相关联的C++对象,当它析构的时候会同时把与它相关联的资源销毁。)

2,获取当前字体信息的度量:CDC::GetTextMetrics
BOOL GetTextMetrics( LPTEXTMETRIC lpMetrics ) const;
说明:
typedef struct tagTEXTMETRIC {
int tmHeight;//字体高度。Specifies the height (ascent + descent) of characters.
int tmAscent;//基线以上的字体高度
int tmDescent;//基线以下的字体高度
int tmInternalLeading;
int tmExternalLeading;
int tmAveCharWidth;//字符平均宽度
int tmMaxCharWidth;
int tmWeight;
BYTE tmItalic;
BYTE tmUnderlined;
BYTE tmStruckOut;
BYTE tmFirstChar;
BYTE tmLastChar;
BYTE tmDefaultChar;
BYTE tmBreakChar;
BYTE tmPitchAndFamily;
BYTE tmCharSet;
int tmOverhang;
int tmDigitizedAspectX;
int tmDigitizedAspectY;
} TEXTMETRIC;

3,OnDraw函数:
virtual void OnDraw( CDC* pDC )
当窗口(从无到有或尺寸大小改变等)要求重绘的时候,会发送WM_PAIN消息,调用OnDraw函数进行重绘。

4,获取字符串的高度和宽度(区别字符串的长度):
CDC::GetTextExtent
CSize GetTextExtent( LPCTSTR lpszString, int nCount ) const;
CSize GetTextExtent( const CString& str ) const;
说明:
The CSize class is similar to the Windows SIZE structure。
typedef struct tagSIZE {
int cx;//the x-extent
int cy;//the y-extent
} SIZE;

5,路径层:
BOOL BeginPath( );
//在这作图定义路径层剪切区域
BOOL EndPath( );
BOOL SelectClipPath( int nMode );//调用这个函数来使当前路径层剪切区域与新剪切区域进行互操作。
//在这覆盖作图(包含前定义的路径层区域)定义新的剪切区域

说明:
1)SelectClipPath Selects the current path as a clipping region for the device context, combining the new region with any existing clipping region by using the specified mode. The device context identified must contain a closed path.
////
nMode:RGN_AND,RGN_COPY,RGN_DIFF,RGN_OR,RGN_XOR
RGN_AND The new clipping region includes the intersection (overlapping areas) of the current clipping region and the current path.
RGN_COPY The new clipping region is the current path.
RGN_DIFF The new clipping region includes the areas of the current clipping region, and those of the current path are excluded.
RGN_OR The new clipping region includes the union (combined areas) of the current clipping region and the current path.
RGN_XOR The new clipping region includes the union of the current clipping region and the current path, but without the overlapping areas.
2)应用:当作图的时候,如果想要在整幅图形其中的某个部分和其它部分有所区别,我们可以把这部分图形放到路径层当中,然后指定调用指定互操作模式调用SelectClipPath( int nMode )函数来使路径层和覆盖在其上新绘图剪切区域进行互操作,达到特殊效果。

6,关于文本字符串一些函数:
COLORREF GetBkColor( ) const;//得到背景颜色
virtual COLORREF SetBkColor( COLORREF crColor );//设置背景颜色
BOOL SetTextBkColor( COLORREF cr );//设置文本背景颜色
virtual COLORREF SetTextColor( COLORREF crColor );//设置文本颜色
virtual BOOL TextOut( int x, int y, LPCTSTR lpszString, int nCount );//输出文本
BOOL TextOut( int x, int y, const CString& str );
CString Left( int nCount ) const;//得到字符串左边nCount个字符
int GetLength( ) const;//得到字符串长度

7,字体CFont::CFont
CFont( );//构造函数
//Constructs a CFont object. The resulting object must be initialized with CreateFont, CreateFontIndirect, CreatePointFont, or CreatePointFontIndirect before it can be used.
选用字体事例代码组:
CClientDC dc(this);
CFont font;//构造字体对象
font.CreatePointFont(300,"华文行楷",NULL);//初始化字体对象,与字体资源相关联
CFont *pOldFont=dc.SelectObject(&font);//将新字体选入DC
...
dc.SelectObject(pOldFont);//恢复原字体
说明:
1)构造字体对象时候,必须初始化。(初始化是将字体对象与字体资源相关联)。
2)初始化对象时候,选用的字体也可以是系统字体,但不一定都有效,据测试选用。

8,在MFC中CEditView 和 cRichEditView类已经完成了初步的文字处理。可以让应用程序的View类以CEditView 和 cRichEditView类为基类。

9,平滑变色
CDC::TextOut()是一个字母一个字母的输出,达不到平滑效果。
CDC::DrawText():将文字的输出局限于一个矩形区域,超出矩形区域的文字都被截断。利用这一特点,可每隔些时间增加矩形大小,从而可实现人眼中的平滑效果。
CWnd::SetTimer():设置定时器。按设定的时间定时发送WM_TIMER消息。

说明:
UINT SetTimer( UINT nIDEvent, UINT nElapse, void (CALLBACK EXPORT* lpfnTimer)(HWND, UINT, UINT, DWORD) );
//nIDEvent定时器标示,nElapse消息发送间隔时间,void (CALLBACK EXPORT* lpfnTimer)(HWND, UINT, UINT, DWORD)设置回调函数,如果设置则由设置的回调函数处理WM_TIMER消息,如果没有设置回调函数设为NULL,这发送的WM_TIMER消息压入消息队列,交由相关联的窗口处理(添加WM_TIMER消息处理函数OnTimer())。

afx_msg void OnTimer( UINT nIDEvent );
//响应WM_TIMER消息,nIDEvent为消息对应定时器标示(可以设置不同的定时器发送WM_TIMER消息)

1)消息响应机制 机制是Windows最基本的运行机制。 windows中,窗口之间的通信,输入设备与窗口的通信,都是通过消息机制来实现的。
本质上所有的Windows程序,都是由一个主窗口,和一个消息循环构成的。
主窗口用于响应本程序的所有消息。
消息循环用于接收Windows系统发给本程序的消息。
这是消息循环的典型形式:
BOOL bRet;

while( (bRet = GetMessage( &msg, hWnd, 0, 0 )) != 0)
{
if (bRet == -1)
{
// handle the error and possibly exit
}
else
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}

2)关于MFC向导生成的类一般有:
CApp类:程序的入口,与出口, InitInstance入口函数,程序初始化, ExitInstance,出口函数,程序释放资源。
CDialog:(对话框程序),CMainfrm: (SDI,MDI方式的程序)程序的主窗口
另外,MFC程序还采用了数据与显示分开的概念,所以就有CDocument和CView类,
CDocument:数据类,用于保存程序要处理的数据,如从数据库读出来的数据,或是从界面上读取的数据。
CView:数据的显示窗口类,一个CDocument可以对就多个CView类, 也就是一份数据可以有多种显示方式, 象Excel中,同一份数据可以用表格显示,也可以用图表显示。

希望以上解释对你有帮助。


简要叙述(1)消息响应机制的原理。 (2)基于MFC类向导的可视化应用程序的...
1)静态方法不属于某一个具体对象,而属于类本身,在类加载的时候就已经为类静态方法分配了代码去,故可用CBrush::FromHandle()形式调用。2)静态方法中,不能引用非静态的数据成员和方法。3)静态数据成员需要在类外单独做初始化,形式如: 变量类型 类名::变量名=初始值;8,CDC::SetROP2方法:int ...

根据材料怎样写作文
所给的材料主要有以下若干种: 1 叙述一件较为完整的事情; 2 引用一个完整的故事; 3 引用一段新闻报道或消息; 4 与写作者道德修养或学习生活的某一方面紧密相关的名言警句(一句一段或几句几段); 5 一段主题鲜明、道理深刻的论述; 6 一段或几段突出一个中心的抒情性文字; 7 揭露社会生活中某一丑陋现象的...

消息的六要素
消息这个词应用较广泛,一般来说,新鲜的事就叫消息;当然,“消息”一词还可以指报道事情的概貌而不讲述详细的经过和细节,以简明的文字迅速及时地报道最新事实的短篇新闻宣传文书,也是最常见、最经常采用的新闻体裁。新闻作为一种以叙事为主的文体,它的基本要素和我们语文界常用的记叙文的六要素是一致...

新闻通讯特写作文怎么写
1、其基本要求和方法有以下几点:叙事要有明确的目的性;事件情节要交代清楚名了,线索要清晰;叙事要生动,灵活运用多种表现手法,突出重点,有详有略;在叙事中要选好人物,写人物时注意精练、生动形象。 2、通讯的语言特点和细节描写:通讯作为一种新闻媒体,语言要求准确严谨,简明扼要,鲜明生动,具体真切,通俗易懂;多...

C++ 怎样定义一个消息响应函数
WINDOWS操作系统对各种消息都是预先定义好了的.譬如WM_KEYDOWN,WM_KEYUP,WM_CREATE等消息都可以在"查看" >> "建立类向导"中找到.在类向导中,有个叫"Message Map(消息映射)"的标签页Project自然是指你的工程,"ClassName"是你要设置消息响应的类,譬如是CFrameWnd,CDialog等."ObjectIDs"就和身份证一...

消息作文怎么写
消息和一般的记叙文都有相同的“六要素”,即时间、地点、人物、事件的起因、经过、结果。记叙文对所记叙的人事要做深入的刻画和描写,对细节描写不可少;而消息侧重于事实的客观介绍,不需铺开来写,禁绝抒情、议论。它有其自身的特点:内容上,一是讲究真实性,它所报道的内容必须是写真事、说真话...

八年级上册的语文课本第一课《新闻两则》的课文结构,要快点!
结构是:第一部分(“人民解放军百万大军~均是人民解放军的渡江区域。”):导语,概括点明了全文内容。第二部分(“二十日夜起”至结束):具体叙述了渡江区域战斗的战况。第一层(“二十日夜起~二十四小时内即已渡过三十万人。”):叙述中路军渡江情况。第二层(“二十一日下午五时起~不起丝毫...

微信来消息手机不响怎么回事?
微信来消息手机不响可能有以下几个原因:1. **静音模式:** 请检查手机是否处于静音或震动模式。如果是,将手机调至正常模式。2. **通知权限:** 确保微信具有接收通知的权限。可以在手机设置中找到应用程序管理,然后确认微信的通知权限是否打开。3. **应用内设置:** 进入微信应用,点击右下角的...

红星照耀中国的写作顺序是什么?运用了哪些表达方式
文中运用了顺叙、倒叙、插叙、分叙等表达方式。《红星照耀中国》的写作特色:1、是斯诺写的关于红色中国的新闻报道集,也可以说是报告文学集;2、真实的记录事实的真相。作者对每一个细节都进行了核对,以求获得新闻第一手资料;3、故事情节十分的突出,注重对人物的刻画以及关注事件背后的个人魅力;4、...

记叙文的主要知识点
记叙文是以记人、叙事、写景、状物为主,以写人物的经历和事物发展变化为主要内容的一种文体形式。五种表达:叙述:是表述时间过程的艺术。描写:是展示空间状貌的艺术。议论:是谈看法的说理艺术。抒情:是抒发·倾吐的流露宣泄艺术。说明:是科学性和实用性相结合的告知艺术。五种表达需要背诵,是写好...

城中区18416306941: 简要叙述(1)消息响应机制的原理. (2)基于MFC类向导的可视化应用程序的基本框架分类及其基本功能? -
仰妹消肿: 1)消息响应机制 机制是Windows最基本的运行机制. windows中,窗口之间的通信,输入设备与窗口的通信,都是通过消息机制来实现的.本质上所有的Windows程序,都是由一个主窗口,和一个消息循环构成的.主窗口用于响应本程序的所有消息.消息循环用于接收Windows系统发给本程序的消息.

城中区18416306941: windows消息响应机制到底是什么,谁发出消息,什么是消息?谁来响应消息?怎样响应? -
仰妹消肿: 没怎么学Windows.消息驱动机制给我的印象是:当用户做出某种动作、或者系统发生某种变化,操作系统就会自动调用一个消息处理函数并且传递一些描述事件的参数,这个函数就可以执行一些操作来响应这个操作. 消息是由操作系统发出的. 消息这个名词估计就是为了好听和形象吧,面向对象编程把调用一个对象的成员函数的操作称为发送一个消息,发出者这个函数的调用者.paint消息就是在窗口需要重新绘制时调用窗口处理过程,并传递标识这个消息的参数.消息响应就是通过应用程序定义的窗口消息处理函数来响应,也就是说响应那些消息以及如何响应由程序员定义.

城中区18416306941: windows消息机制是怎么一回事?谢谢!
仰妹消肿: Windows的消息系统是由3个部分组成的: · 消息队列.Windows能够为所有的应用程序维护一个消息队列.应用程序必须从消息队列中获取 消息,然后分派给某个窗口. · 消息循环.通过这个循环机制应用程序从消息队列中检索消息,再把...

城中区18416306941: 简述web工作原理 -
仰妹消肿: Web的工作原理: 1、浏览器地址栏输入想要访问网站首页的地址; 2、用户向浏览器发送访问首页的请求; 3、服务器收取客户端的的访问请求; 4、服务器处理请求(若首页动态文档需要经过数据处理再返回,若为静态文档直接返回该文档...

城中区18416306941: 简述微型计算机的基本结构并简要说明各组成部分的功能 -
仰妹消肿: 只能简单介绍一下:微型计算机主要包括中央处理器CPU、外部总线扩展电路(包括板卡)、只读存储器ROM、存储器RAM、外部存储器硬盘、光驱等、外部接口串口、USB口...

城中区18416306941: 简述冯诺依曼对电子计算机的设计原理 -
仰妹消肿: 冯·诺依曼结构计算机 (1)计算机工作原理: 存储程序(或程序存储).1946年美籍匈牙利人冯·诺依曼提出. (2)存储程序原理的主要思想:将程序和数据存放到计算机内部的存储器中,计算机在程序的控制下一步一步进行处理,直到得出结果. 冯·诺依曼结构计算机(存储程序计算机):按存储原理设计的计算机. 今天我们所使用的计算机,不管机型大小,都属于冯·诺依曼结构计算机. (3)冯·诺依曼结构的主要特点 (1)存储程序控制:要求计算机完成的功能,必须事先编制好相应的程序,并输入到存储器中,计算机的工作过程是运行程序的过程; (2)程序由指令构成,程序和数据都用二进制数表示; (3)指令由操作码和地址码构成; (4)机器以CPU为中心.

城中区18416306941: 利用大豆蛋白来制造"人造肉"是利用蛋白质什么性质的改变?简述其主要加工过程及原理 -
仰妹消肿: 主要是利用大豆蛋白质的凝胶特性. 将大豆蛋白质与油经斩拌,乳化后加入其它的一些辅料.

城中区18416306941: 交换机的工作原理简要描述 -
仰妹消肿: 是转接音、视频信号的一种装置.例如:转接电话信号的有电话交换机;在网络中使用的网络交换机等.

城中区18416306941: 简述冯诺依曼原理 -
仰妹消肿: 冯诺依曼理论的要点是:数字计算机的数制采用二进制;计算机应该按照程序顺序执行. 其主要内容是: 1.计算机由控制器、运算器、存储器、输入设备、输出设备五大部分组成. 2.程序和数据以二进制代码形式不加区别地存放在存储器中,...

城中区18416306941: 细胞通讯是细胞间或细胞内通过高度精确和高效地发送与接收信息的通讯机制,是一种对环境作出综合反应的细 -
仰妹消肿: (1)分析题图知,图A是典型的激素→血液循环→靶细胞的通讯方式,因此图A所示过程中的信号分子最可能的名称是激素. (2)甲状腺细胞分泌甲状腺激素,作用于受体细胞则应与受体细胞上的糖蛋白结合,体现了细胞膜进行信息交流的功能;...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网