教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 高等教育 >

Visual C++第03章 MFC基本应用程序的建立(9)

来源:网络收集 时间:2025-09-14
导读: NULL,则WM_TIMER消息放在消息队列中,由窗口对象处理。如果安装成功,则返回非零。 2)、KillTimer()函数:清除定时器函数CMnd::KillTimer()的函数原型为: BOOL KillTimer(int nIDEvent); 其中的参数 nIDEvent 是

NULL,则WM_TIMER消息放在消息队列中,由窗口对象处理。如果安装成功,则返回非零。

2)、KillTimer()函数:清除定时器函数CMnd::KillTimer()的函数原型为: BOOL KillTimer(int nIDEvent);

其中的参数 nIDEvent 是安装定时器时所指定的定时器的ID。 例4:自定义消息处理实例(附加)

用户可以自定义消息,在应用程序中主动发出,这种消息一般用于应用程序 的某一部分内部处理。例如:当用户单击光标上移键时,程序发送用户自定义消 息,在对应的消息响应函数中,弹出消息对话框,显示消息发送成功。 基本知识

建一个单文档应用程序:名为:自定义消息处理 1)定义用户消息的ID(标识符)

在视图类的头文件中用如下语句定义用户消息的标识符:WM_USERMSG const WM_USERMSG = WM_USER + 100;

其中:WM_USER是由Windows定义的,它是第一个有效的用户消息。因为程序的其它部分也会使用用户消息,故将新的用户消息WM_USERMSG设置为 WM_USER + 100 2)用户消息的发送

Windows提供发送消息的函数::PostMessage()函数,函数PostMessage()的功

能是将消息插入消息队列并返回,由处理线程处理,而队列中的消息通过GetMessage()或PeekMessage()函数获取。PostMessage()函数的原型为: BOOL PostMessage

( HWND hWnd, //接收消息的窗口句柄 UINT Msg, //消息的ID

WPARAM wParam,//消息的WPARAM参数 WPARAM IParam, //消息的LPARAM参数 );

编程操作步骤:

(1)定义用户消息和消息响应函数

1)定义用户消息:在View.h中的CMyView类声明的上面写即: #endif // _MSC_VER > 1000

const WM_USERMSG = WM_USER + 100; class CMyView : public CView {

protected: // create from serialization only CMyView();

2)声明并定义用户消息响应函数:在View.h中添加void OnMyFunction()函数 ClassView?右键对准CMyView单击?Add Member Function?写:void和 OnMyFunction()将消息响应函数加到View.cpp中。并定义(加代码)。 void CMyView::OnMyFunction() {

MessageBox(\恭喜你,消息发送成功\}

(2)添加消息映射

BEGIN_MESSAGE_MAP(CMyView, CView) //{{AFX_MSG_MAP(CMyView) ON_WM_LBUTTONDOWN() ON_WM_LBUTTONUP() ON_WM_MOUSEMOVE() ON_WM_KEYDOWN() //}}AFX_MSG_MAP ON_MESSAGE(WM_USERMSG,OnMyFunction) // Standard printing commands (3)编写程序代码

1)添加WM_KEYDOWN消息响应函数并加代码

用户按下光标上移键时,将产生WM_KEYDOWN消息。故加此消息响应函数 View?ClassWizard?Class name:CMyView?Object IDs:CMyView?Messages: WM_KEYDOWN?Add Function?Edit Code到View.cpp的OnKeyDown()函数中 接之加代码:

void CMyView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) { // TODO: Add your message handler code here and/or call default HWND hWnd = GetSafeHwnd(); //接收消息的窗口句柄

if(nChar==VK_UP) { ::PostMessage(hWnd,WM_USERMSG,0,0);// 将消息插入消息队列并返回 return; // HWND hWnd, //接收消息的窗口句柄 // UINT Msg, //消息的ID

//WPARAM wParam,//消息的WPARAM参数 //WPARAM IParam, //消息的LPARAM参数 } CView::OnKeyDown(nChar, nRepCnt, nFlags); }

说明:1、函数OnKeyDown(UINT nChar,UINT nRepCnt,UINT nFlags)中,第一个参数nChar为所按的键的字符代码值,第二个参数nRepCnt为重复击键的次数,第三个参数nFlags表示扫描码和键转换前后的状态。2、在函数OnKeyDown() 中的VK_UP是光标上移键的虚拟键。虚拟键以VK_为前缀,对虚拟键处理时需要它们的参数。下面是一些常用的虚拟键的信息。 虚拟键名称 对应的虚拟键 VK_UP 光标上移 VK_DOWN 光标下移 VK_LEFT 光标左移 VK_RIGHT 光标右移 VK_HOME Home键 VK_END End

VK_PRIOR PageUp页向上 VK_NEXT PageDown页向下 VK_RETURN 回车 例5:类的删除 删除你已建的类:(书162页)

(1)将Visual C++6.0打开的所有文档窗口关闭。

(2)将项目工作区窗口切换到FileView页面,展开Source Files和Header Files

结点,分别选定要删除类的对应的 .h和 .cpp文件,按下Delete键,删除 这两个文件。

(3)选择“File”->”Close Workspace”选单命令,关闭项目。

(4)从实际的文件夹中删除对应的 .h和 .cpp文件及 .clw文件。 需注意的是:当下一次打开MFC ClassWizard对话框时,就会弹出 Select Source Files对话框,这时只要单击右下的[Add All]按钮即可。

例6:字体滚动程序(本章附加举例)

除了键盘和鼠标外,还有一种常用的输入设备就是计时器,它周期性地 按一定的时间间隔向应用程序发送WM_TIMER消息,它能实现“实时更新” 以及“后台运行”等功能。

应用程序是通过CWnd类的SetTimer函数来设置并启动计时器的,函数 如下:(前面已经介绍过)

UINT SetTimer(UINT nIDEvent,UINT nElapse,void(CALLBACK EXPOR

*lpfnTimer)(HWND,UINT,UINT,DWORD));

参数:nIDEvent用来指定该计时器的标识值(不能为0) nElapse 表示计时器的时间间隔(单位:ms)

lpfnTimer 回调函数指针,由应用程序定义,用来处理计时器

WM_TIMER消息,一般该参数为NULL,此时WM_TIMER消息被放入到应用程序消息队列中供CWnd对象使用。 一、建一个SDI应用程序 二、1、在View.h里加: private:

int x; //x坐标向前步进用

//(如果要有颜色加:在public里)

COLORREF m_pColor1; //第一种颜色 COLORREF m_pColor2; //第二种颜色 COLORREF m_pColor3; //第三种颜色

2、在View.cpp的构造函数里加: x=0;

//(如果要有颜色加:)

m_pColor1=RGB(255,0,0); // 红 m_pColor2=RGB(0,255,0); // 绿 m_pColor3=RGB(0,0,255); // 蓝

3、在View.cpp里往上找到OnDraw函数并加如下代码: View::OnDraw(CDC *pDC) { ---

pDC->SetTextColor(m_pColor1); //红

pDC->TextOut(x,80,”中国改革开放的28年颂歌!”); pDC->SetTextColor(m_pColor2); //绿

pDC->TextOut(x,100,”我们一定要统一祖国的神圣领土台湾!”); pDC->SetTextColor(m_pColor3); // 蓝

pDC->TextOut(x,120,”攀登计算机科学高峰,培养现代化创新人才!”); x=x+20; // 步长

RECT re; //矩形结构体对象,也就是窗口矩形。见最后面的说明。 GetClientRect(&re);//获得矩形窗口的大小 if(x>re.right-re.left) x=0; } 4、(1)添加一个菜单项名为“启动”,ID标识为 ID_TEST (2)将此消息(ID_TEST)连接到视图View中并加代码:

void View::OnText() {

SetTimer(1,200,NULL);

// 1处不能为0,为定时器的ID值,2 …… 此处隐藏:3049字,全部文档内容请下载后查看。喜欢就下载吧 ……

Visual C++第03章 MFC基本应用程序的建立(9).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/608642.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)