欢迎光临112期刊网!
网站首页 > 论文范文 > 计算机论文 > 计算机应用 > 深入应用Visual C++编程

深入应用Visual C++编程

日期:2023-01-24 阅读量:0 所属栏目:计算机应用


摘 要:本文主要介绍如何使用Visual C++编程技巧,突破一般的用鼠标单击窗口标题栏移动窗口、用字体属性设置文本旋转效果,通过编程巧妙实现用鼠标单击窗口标题栏以外区域移动窗口、显示旋转文本的操作。同时简单介绍使用上下文菜单的操作。

关键词:Visual;C++;窗口;旋转文本
引言
  Visual C++是一个功能强大的面向对象的可视化应用程序开发工具,是计算机界公认的最优秀的应用开发工具之一。在提供可视化的编程方式的同时,Visual C++也适用于编写直接对系统进行底层操作的程序,生成代码的质量也优于其它的开发工具。它提供的AppWizard能自动生成应用程序的标准框架,大大减轻了编程的工作量,使得程序员从大量的复杂劳动中解脱出来,体会到真正的程序语言的强大功能和良好的灵活性。本文主要介绍如下的编程技巧:用鼠标单击窗口标题条以外区域移动窗口、显示旋转文本、使用上下文菜单。
1  用鼠标单击窗口标题栏以外区域移动窗口
    移动标准窗口是通过用鼠标单击窗口标题栏来实现的,但对于没有标题栏的窗口,就需要用鼠标单击窗口标题栏以外区域来移动窗口。有两种方法可以达到这一目标。
    方法一:当窗口确定鼠标位置时,Windows向窗口发送WM_NCHITTEST消息,可以处理该消息,使得只要鼠标在窗口内,Windows便认为鼠标在标题栏上。这需要重载CWnd类处理WM_NCHITTEST消息的OnNcHitTest函数,在函数中调用父类的该函数,如果返回HTCLIENT,说明鼠标在窗口客户区内,使重载函数返回HTCAPTION,使Windows误认为鼠标处于标题栏上。
    下面是使用该方法的实际代码:
UINT CEllipseWndDlg::OnNcHitTest(CPoint point)
{        // 取得鼠标所在的窗口区域
UINT nHitTest = CDialog::OnNcHitTest(point);
// 如果鼠标在窗口客户区,则返回标题栏代号给Windows
// 使Windows按鼠标在标题栏上类进行处理,即可单击移动窗口
return (nHitTest==HTCLIENT) ? HTCAPTION : nHitTest;
}
    方法二:当用户在窗口客户区按下鼠标左键时,使Windows认为鼠标是在标题栏上,即在处理WM_LBUTTONDOWN消息的处理函数OnLButtonDown中发送一个wParam参数为HTCAPTION,lParam为当前坐标的WM_NCLBUTTONDOWN消息。
    下面是使用该方法的实际代码:
void CEllipseWndDlg::OnLButtonDown(UINT nFlags, CPoint point)
{      // 调用父类处理函数完成基本操作
CDialog::OnLButtonDown(nFlags, point);
// 发送WM_NCLBUTTONDOWN消息
// 使Windows认为鼠标在标题栏上
PostMessage(WM_NCLBUTTONDOWN,
HTCAPTION,
MAKELPARAM(point.x, point.y));
}
2  显示旋转文本
    在有的应用中,为了达到特殊的效果,经常需要显示旋转的文本。文本的显示方式,包括旋转,都是由字体来设置的。
    字体的属性主要由创建字体时使用的LOGFONT结构规定,该结构中的lfEscapement域指定了文本行与X轴(水平轴)的角度,其角度单位是十分之一度。为了使所有的字体向相同的方向旋转,还应同时将LOGFONT结构的lfClipPrecision域设为 CLIP_LH_ANGLES。
    下面的代码将在对话框中显示在同一起点每隔15度显示一行文本:
void CRotateTextDlg::OnPaint()
{
CPaintDC dc(this); // device context for painting
if (IsIconic())
{
SendMessage(WM_ICONERASEBKGND, (WPARAM) eHdc(), 0);
// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (() - cxIcon + 1) / 2;
int y = (() - cyIcon + 1) / 2;
// Draw the icon
on(x, y, m_hIcon);
}
else
{
CRect rc;
GetClientRect(rc);
CString str(_T(""............旋转文本!""));
ode(TRANSPARENT);
tColor(RGB(0,0,255));
CFont font;
LOGFONT lf;
memset(&lf,0,sizeof(LOGFONT));
ht = -14;
ht = FW_NORMAL;
Precision = CLIP_LH_ANGLES;
strcpy(Name, ""宋体"");
for (int i=0;i<3600;i+=150)
{
pement = i;
FontIndirect(&lf);
CFont *pOldFont = Object(&font);
t(2, 2,str);
Object(pOldFont);
Object();
}
CDialog::OnPaint();
}}
3  使用上下文菜单
  Windows 应用程序支持单击鼠标右键弹出上下文菜单的功能,这可通过处理WM_CONTEXTMENU消息来实现。
  当在窗口内单击鼠标右键时,窗口将接收到WM_CONTEXTMENU消息,在该消息的处理函数内装载上下文菜单,并调用CMenu::TrackPopupMenu函数便可显示上下文菜单。CMenu::TrackPopupMenu函数的原型如下:
BOOL TrackPopupMenu( UINT nFlags,    // 显示和选取方式标志
int x, int y,    // 显示菜单的左上角坐标
CWnd* pWnd,    // 接收菜单操作的窗口对象
LPCRECT lpRect = NULL ); // 敏感区域
    为了使用上下文菜单,首先应在资源编辑器中编制好上下文菜单,假设上下文菜单名为IDR_MENU_CONTEXT;其次,用ClassWizard给窗口增加处理消息WM_CONTEXTMENU的函数OnContextMenu,以及各菜单命令的处理函数;然后编写相应的代码。
    下面的是OnContextMenu函数的代码实例:
void CEllipseWndDlg::OnContextMenu(CWnd* pWnd, CPoint point)
{
CMenu menu;        // 装入菜单
nu(IDR_MENU_CONTEXT);      // 显示菜单
Menu(0)->TrackPopupMenu(
TPM_LEFTALIGNTPM_LEFTBUTTONTPM_RIGHTBUTTON,
point.x, point.y, this);
}
4  结束语
  Visual C++ 功能强大又具有很好的灵活性,同传统的结构化程序设计方法相比,它缩短软件的研制时间,提高软件的开发效率,使程序员可以更好的理解和管理庞大而复杂的程序。它利用了人们根据对事物分类和抽象的倾向,引入了类和对象的概念,具有封装性(数据抽象)、继承和多态的特点。由于面向对象的程序设计方法非常贴近现实,所以越来越流行。学好Visual C++对我们今后编程大有裨益。 
参考文献:
[1] 郑阿奇. Visual C++教程[M]. 北京:机械工业出版社,2004.9.1
[2] 蒋立翔.C++程序设计技能百练[M]. 北京:中国铁道出版社,2004.1.1
[3] 萨维茨.完美C++教程[M]. 北京:清华大学出版社,2005.8.1
[4] 金雪云. Visual C++教程[M]. 北京:清华大学出版社,2005.7.1 本文链接:http://www.qk112.com/lwfw/jsjlw/jisuanjiyingyong/241725.html

论文中心更多

发表指导
期刊知识
职称指导
论文百科
写作指导
论文指导
论文格式 论文题目 论文开题 参考文献 论文致谢 论文前言
教育论文
美术教育 小学教育 学前教育 高等教育 职业教育 体育教育 英语教育 数学教育 初等教育 音乐教育 幼儿园教育 中教教育 教育理论 教育管理 中等教育 教育教学 成人教育 艺术教育 影视教育 特殊教育 心理学教育 师范教育 语文教育 研究生论文 化学教育 图书馆论文 文教资料 其他教育
医学论文
医学护理 医学检验 药学论文 畜牧兽医 中医学 临床医学 外科学 内科学 生物制药 基础医学 预防卫生 肿瘤论文 儿科学论文 妇产科 遗传学 其他医学
经济论文
国际贸易 市场营销 财政金融 农业经济 工业经济 财务审计 产业经济 交通运输 房地产经济 微观经济学 政治经济学 宏观经济学 西方经济学 其他经济 发展战略论文 国际经济 行业经济 证券投资论文 保险经济论文
法学论文
民法 国际法 刑法 行政法 经济法 宪法 司法制度 法学理论 其他法学
计算机论文
计算机网络 软件技术 计算机应用 信息安全 信息管理 智能科技 应用电子技术 通讯论文
会计论文
预算会计 财务会计 成本会计 会计电算化 管理会计 国际会计 会计理论 会计控制 审计会计
文学论文
中国哲学 艺术理论 心理学 伦理学 新闻 美学 逻辑学 音乐舞蹈 喜剧表演 广告学 电视电影 哲学理论 世界哲学 文史论文 美术论文
管理论文
行政管理论文 工商管理论文 市场营销论文 企业管理论文 成本管理论文 人力资源论文 项目管理论文 旅游管理论文 电子商务管理论文 公共管理论文 质量管理论文 物流管理论文 经济管理论文 财务管理论文 管理学论文 秘书文秘 档案管理
社科论文
三农问题 环境保护 伦理道德 城镇建设 人口生育 资本主义 科技论文 社会论文 工程论文 环境科学