Windows 程序设计

本文仅为应付考试,如想详细学习,这远远不合适。


Windows程序设计

这门课以实践为主,讲的原理很浅,带我们见识、了解函数等

语法-- 类似C,添加了很多资源管理、消息机制(一种程序、函数形成的代码段,写在程序中,这里不再描述)


窗口和消息 :

 建立窗口很简单,只需呼叫CreateWindow函数即可,函数内提供很多参数,用以调节窗口大小、模式等。

绘制和更新

要在窗口的显示区域绘图,可以使用Windows的图形设备接口(GDI)函数。Windows提供了几个GDI函数,用于将字符串输出到窗口的显示区域内。可以使用DrawText函数,或普遍的文字输出函数是TextOut。该函数的格式如下:

TextOut (hdc, x, y, psText, iLength) ;

大多数Windows程序在WinMain中进入消息循环之前的初始化期间都要呼叫函数UpdateWindow。Windows利用这个机会给窗口消息处理程序发送第一个WM_PAINT消息。这个消息通知窗口消息处理程序:必须绘制显示区域。此后,窗口消息处理程序应在任何时刻都准备好处理其它WM_PAINT消息,必要的话,甚至重新绘制窗口的整个显示区域。在发生下面几种事件之一时,窗口消息处理程序会接收到一个WM_PAINT消息:

  • 在使用者移动窗口或显示窗口时,窗口中先前被隐藏的区域重新可见。
     
  • 使用者改变窗口的大小(如果窗口类别样式有着CS_HREDRAW和CS_VREDRAW位旗标的设定)。
     
  • 程序使用ScrollWindow或ScrollDC函数滚动显示区域的一部分。
     
  • 程序使用InvalidateRect或InvalidateRgn函数刻意产生WM_PAINT消息。
     

在某些情况下,显示区域的一部分被临时覆盖,Windows试图保存一个显示区域,并在以后恢复它,但这不一定能成功;


图形基础

GDI 的结构

程序写作者的观点来看,GDI由几百个函数呼叫和一些相关的数据型态、宏和结构组成

因为PC兼容机种上可以连接许多种不同的视讯设备,所以,GDI的主要目的之一是支持与设备无关的图形。Windows程序应该能够毫无困难地在Windows支持的任意一种图形输出设备上执行,GDI通过将您的程序和不同输出设备的特性隔离开来的方法来达到这一目的。


GDI基本图形

在屏幕或打印机上显示的图形型态本身可以被分为几类,通常被称为「基本图形」,它们是:

  • 直线和曲线线条是所有向量图形绘制系统的基础。GDI支持直线、矩形、椭圆(包括椭圆的子集,也就是我们所说的「圆」)、椭圆圆周上的部分曲线即所谓的「弧」以及贝塞尔曲线(Bezier spline),我们将在本章中分别对它们进行介绍。所有更复杂的曲线可由折线(polyline)代替,折线通过一组非常短的直线来定义一条曲线。线条用设备内容中选中的目前画笔绘制。
     
  • 填入区域当一系列直线或者曲线封闭了一个区域时,该区域可以使用目前GDI画刷对象进行填图。这个画刷可以是实心色彩、图案(可以是一系列的水平、垂直或者对角标记)或者是在区域内垂直或者水平重复的位图图像。
     
  • 位图位图是位的矩形数组,这些位对应于显示设备上的图素,它们是位映像图形的基础工具。位图通常用于在视讯显示器或者打印机上显示复杂(一般都是真实的)图像。位图还可以用于显示必须快速绘制的小图像(诸如图标、鼠标光标以及在应用工具条中出现的按钮等)。GDI支持两种型态的位图-旧式的(虽然还非常有用)「设备相关」位图,是GDI对象;和新的(如Windows 3.0的)「设备无关」位图(或者DIB),可以储存在磁盘文件中。
     
  • 文字文字的数学味道不像计算机图形的其它方面那样浓。文字和几百年的传统印刷术有关,它被许多印刷工人看作为一门艺术。因此,文字通常不仅是所有的计算机图形系统中最复杂的部分,而且(如果识字还是社会基本要求的话)也是最重要的部分。用于定义GDI字体对象和取得字体信息的数据结构是Windows中最庞大的部分之一。从Windows 3.1开始,GDI开始支持TrueType字体,该字体是在填入轮廓线基础上建立的,这样的填入轮廓线可由其它GDI函数处理。依据兼容性和储存大小的考虑,Windows 98继续支持旧式的点阵字体。

例如: 等等

Windows程序还可以取得适用于整个窗口(而不仅限于窗口的显示区域)的设备内容句柄:

hdc = GetWindowDC (hwnd) ;
        
其它行程序
        
ReleaseDC (hwnd, hdc) ;

  • LoadIcon 加载图标供程序使用。
     
  • LoadCursor 加载鼠标光标供程序使用。
     
  • GetStockObject 取得一个图形对象(在这个例子中,是取得绘制窗口背景的画刷对象)。
     
  • RegisterClass 为程序窗口注册窗口类别。
     
  • MessageBox 显示消息框。
     
  • CreateWindow 根据窗口类别建立一个窗口。
     
  • ShowWindow 在屏幕上显示窗口。
     
  • UpdateWindow 指示窗口自我更新。
     
  • GetMessage 从消息队列中取得消息。
     
  • TranslateMessage 转译某些键盘消息。
     
  • DispatchMessage 将消息发送给窗口消息处理程序。
     
  • PlaySound 播放一个声音文件。
     
  • BeginPaint 开始绘制窗口。
     
  • GetClientRect 取得窗口显示区域的大小。
     
  • DrawText 显示字符串。
     
  • EndPaint 结束绘制窗口。
     
  • PostQuitMessage 在消息队列中插入一个「退出程序」消息。
     
  • DefWindowProc 执行内定的消息处理。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值