Windows程序设计学习笔记

WIN32编程

1.What should I know beforehand?

  • the concept of the window
  • the concept of the event drive
  • the applicant of messege in coding
  • object and the histance

2.Window

window is the base unit(单元) in Win applicant

3.Message

Message is used to describe the event happening.For a example, when the mouse knickdown,there will be a message to record(记录) it. It will be convenient especially in programing the Interactive program(交互式程序).

4.Handle & Windows message

Handle is the basics of the whole windows programing.It is expressed by a PVOID type. Every Handle can mark the Unique object in application.The unique object can be a window,a button, a icon,a scroolbar,a outputDC(输出设备) or a file...The application can visit the information by Handle.

5.Here are some useful kinds of Handles

HWND
HISTANCE
HCURSOR
HDC
HBITMAP
HICON
HMENU
HFILE
HPEN
HBRUSH
HFONT

6.The construction of a windows message

  • 消息号
  • 字参数
  • 长字参数

7.Some frequent Windows Message

  • WM_LBUTTONDOWN
  • WM_KEYDOWN
  • WM_CHAR
  • WM_CREATE 调用CreateWindow时产生的消息
  • WM_CLOSE
  • WM_DESTROY
  • WM_PAINT ★★★

8.The construction of a WIn program source ".cpp"

入口函数WinMain+窗口函数Winproc
1. WinMain: do some definition and initiation.And it will produce the message circulation.The message ciculation is the kernel of the whole project.
2.WinProc: It is consist of a series of "switch".

9.Some datastructure

MSG
WNDCLASSEX
RECT
POINT

10.GDI,Graphics Device Interface

11.DC,Device context设备描述表

There exits three types of the DC
  • Display:屏幕显示
  • Print:打印机
  • Storage:Bitmap
  • Message:设备数据恢复

12.DC & the relevant function




13.Here are three ways to Get the Device enviorment

  • BeginPaint(hwnd,&ps)
  • GetDC
  • GetDCEx

14. The Universal Applied (普遍应用的) Mapping(映射) mode

MM_TEXT

15.TextOut()
16.键盘输入——>扫描码——>虚拟码
17.按键分为系统按键和非系统按键
18.光标cursor 插字符caret
19.ScreenToClient()屏幕坐标转化为窗口坐标
20.Resource资源的使用

  • Resource.h  设定资源的消息ID

Resource.rc 定义资源,设定资源ID名称,属性,样式等。

  • 菜单+加速键

    • CHECKED
    • INACTIVE
    • MENUBARBREAK
    • GRAYED
    • WM_COMMAND消息中字参数wParam中包含选中菜单项的标识
    • 加载菜单在窗口类中wndclass.lpszMenuname = ? OR 在创建窗口时加载菜单,此时要用到LoadMenu函数,在CreateWIndow的参数中设置菜单 OR 使用SetMenu动态加载菜单,提高灵活性。
    • EnableMenuItem()禁用或者激活菜单项 EnableMenuItem(hmenu,IDM_OPEN,MF_BYCOMMAND|MF_DISABLED)

  • SendMessage(hWnd,WM_DESTROY,0,0);这个向窗口发送消息的函数经常使用
  • DrawMenuBar()刷新并重新显示菜单

21.内存环境的黄建及初始化工作一般通过相应消息WM_CREATE完成
22.位图输出至屏幕有两个函数

  • Bitblt保持原始尺寸
  • StretchBlt()多了一个目标尺寸

MFC编程

1.CWnd类和消息映射机制隐藏了窗口函数WndProc,onMessage()

2.以Afx开头的函数除了数据库类函数和DDX函数外,都表示这是一个全局函数

3.控件

  • 几乎所有的控件都继承了XWnd类

4.为控件添加消息映射

  • 声明:afx_msg void OnBnclickedButton1();
  • 消息映射:ON_BN_CLICKED(IDC_BUTTON1,&CAboutDlg::OnClickedButton1);
  • 函数体:实现声明
    • 因此如果要删除映射必须将以上三个部分一起删除

5.在应用程序中使用控件的时候,往往要获取控件的指针或者控件的名称。

CEdit *pEdit = (CEdit*)GetDlgItem(IDD_EDIT1);
默认返回的控件基类是CWnd,所以使用的时候往往要进行强制类型转换。

6.UpdateData的作用

当为控件添加变量且变量的类型是value的时候,控件中的内容和变量的值可能不一样,所以先、
UpdateData(FALSE)刷新,当修改完变量的值之后,再UpdateData(TRUE)再次刷新,这样在对话框中心的value就能显示出来了。


近有幸拜读了Charles Petzold的大作《Windows程序设计》,真有种相见恨晚的感觉。这是一本1999年出版、主要讲述在Windows平台下如何使用C语言调用API函数进行软件开发的老书。在当今RAD工具充斥市场的今天,该书依然是新手从事Windows下软件开发入门的不二之选。本人从事Windows平台软件开发已近三年,Windows相关的书籍和文档也阅读过不少,直到接触该书之后,好多以往含糊不清的概念才一下子豁然开朗。说到这里,不得不佩服Charles Petzold先生的文笔和才识,能够把windows程序开发知识讲解的如此简洁明了、浅显易懂。   第一章讲述的主要是些介绍性的、基础性的文字内容。   接触该书的先决条件是安装有Windows系统、了解C语言、安装有可进行Windows编程的开发环境。   Winows是支持抢占式多任务、多线程的图形操作系统。支持CUI(控制台用户接口)和GUI(图形用户接口)两种编程方式。所有基于GUI的Windows程序至少有一个窗口,支持鼠标和键盘控制,每一个时刻可以有多个Windows程序同时运行,互不冲突。   Winows运转的核心是一个被称作“动态连接”的概念。通过“动态连接”功能可调用Windows提供的系统函数即API,这些函数主要包含在Kernel.dll(包含内存管理、文件I/O、任务处理API函数)、User.dll(包含用户界面API函数)、GDI.dll(包含图形设备接口API函数)三个动态连接库中。以往调用C库函数,只要包含头文件,就可以将C库函数中的机器代码连接到我们的程序中;调用Windows API函数,除了需包含头文件,还需要一个对应的“导入库(import library)”文件,用以指明dll动态库的函数调用入口,而且dll动态库并不被连接到我们的程序中,只有在程序运行时,系统才将相应dll动态库载入到内存中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值