Windows窗口高级编程-第一讲
- 格式:ppt
- 大小:898.00 KB
- 文档页数:29
Windows编程(窗口化编程)是以基于消息的,以事件为驱动方式的程序设计模式句柄:是唯一标识窗口的一种资源图标句柄(HICON)光标句柄(HCURSOR)消息和消息队列每个应用程序,操作系统都会为它开辟了只属于它的消息队列用户在画图的时候,按下了光标左键,操作系统会第一时间感知到这一事件,并把它包装成为一个消息,投递到用户程序的消息队列中,应用程序从消息队列中取出消息,并作出响应。
这一过程就叫做消息响应,是通过窗口过程函数实现的。
在WINDOWS程序中,消息是以MSG结构来表示的Typedef struct tagmsg{HWND hwnd;//表示消息所属的窗口UINT message;//表示是什么样的消息WPARAM wParam;//表示消息的附加类型LPARAM lParam; //表示消息的附加类型DWORD time;//表示消息投递到消息队列中的时间POINT pt;//表示光标的位置}MSG;WinMain()函数是WINDOWS程序的入口函数写一个完整的WIN32程序的步骤为:第一:WinMain函数的定义第二:创建一个窗口第三:进行消息循环第四:编写窗口过程函数WinMain函数的定义:int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,int nCmdShow)第一:HINSTANCE hInstance 表示该程序当前运行的实例的句柄第二:HINSTANCE hPrevInstance 表示当前实例的前一个句柄第三:LPSTR lpCmdLine 表示以空终止的字符串第四:int nCmdShow) 表示该窗口如何显示创建窗口的步骤:1设计一个窗口类2注册这个窗口类3创建一个窗口4显示及更新窗口1.设计窗口类得结构体typedef struct tagWNDCLASSW {UINT style;//指定窗口的样式WNDPROC lpfnWndProc;//成员变量是一个函数指针,指向的是窗口过程函数int cbClsExtra;/ 追加一定的内存字节数,将这个参数设置为0int cbWndExtra; 追加一定的内存字节数,将这个参数设置为0HINSTANCE hInstance;//窗口过程实例的句柄HICON hIcon;//为窗口类指定图标HCURSOR hCursor;//为窗口指定光标HBRUSH hbrBackground;//指定窗口类的画刷的句柄LPCWSTR lpszMenuName;//指定菜单资源的名字LPCWSTR lpszClassName;//指定窗口类的名称} WNDCLASSW;2.注册窗口类的函数:RegisterClass(指向窗口类的指针)3.创建窗口的函数CreateWindow(LPCWSTR lpClassName,//指定窗口类的名称LPCWSTR lpWindowName,//窗口的名称DWORD dwStyle,//窗口的样式int X,//指定窗口的X坐标int Y, 指定窗口的Y坐标int nWidth, 指定窗口的宽度int nHeight, 指定窗口的高度HWND hWndParent ,//被创建窗口的父窗口句柄HMENU hMenu,窗口菜单的句柄HINSTANCE hInstance,//窗口是属于哪个应用程序的实例的句柄LPVOID lpParam);// WM_CREATE的附加参数(如果函数创建成功。
windows窗体程序教程Windows窗体程序是一种用于开发图形用户界面(GUI)应用程序的技术。
这种技术使用Windows操作系统提供的窗体控件,允许开发人员创建各种各样的交互式应用程序。
本文将向您介绍Windows窗体程序的基本概念和创建过程。
首先,我们需要了解几个概念。
Windows窗体是一个可视化的区域,用于显示应用程序的用户界面。
它可以包含按钮、文本框、标签等各种控件,以及用于布局和组织控件的容器,如面板和表格布局。
通过使用这些控件和布局容器,开发人员可以创建出具有各种功能和交互性的窗体应用程序。
在创建Windows窗体应用程序之前,我们需要安装并配置开发环境。
通常,Windows窗体应用程序是使用Visual Studio IDE来开发的。
Visual Studio是一个强大的集成开发环境,可以提供可视化的设计和调试功能,以及许多其他有用的工具和功能。
在Visual Studio中创建Windows窗体应用程序非常简单。
我们只需要打开Visual Studio,选择“新建项目”选项,在“Visual C#”或“Visual Basic”类别下选择“Windows Forms应用程序”,然后按照向导的指导完成项目的创建。
在创建过程中,我们可以选择项目的名称和位置,以及其他一些项目设置。
创建项目后,Visual Studio将自动生成一个默认的窗体文件,其中包含应用程序的初始窗体。
我们可以通过在窗体设计器中对窗体进行布局和设计,添加所需的控件和组件。
VisualStudio提供了可视化的设计界面,可以轻松拖放和调整控件的位置和大小。
通过使用工具箱中的控件,我们可以快速创建出各种各样的用户界面。
一旦窗体的布局和设计完成,我们就可以开始编写窗体的逻辑代码了。
Windows窗体程序使用事件驱动的编程模型,即通过处理控件的事件来响应用户的操作。
我们可以为控件的各种事件(如点击按钮、文本框内容更改等)编写自定义的事件处理方法,用于执行相应的功能操作和逻辑处理。
Windows下GUI编程——窗⼝windows下创建⼀个基于GUI的窗⼝程序很简单,使⽤MFC或者Win32 API都可以实现。
本⽂简单整理下windows API创建GUI应⽤程序的基本编码框架。
⽐较常见的窗⼝包括:桌⾯窗⼝、应⽤程序窗⼝、对话框及控件。
从编程的⾓度⽽⾔,创建GUI应⽤程序需要提供⼊⼝函数WinMain的实现,其定义格式如下:int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow)这⾥不解释其具体含义,感兴趣的可参考《Windows程序设计》或者msdn上相关资料。
WinMain通常包含以下⼏个过程:1. 注册窗⼝类(window class);2. 创建窗⼝(CreateWindow);3. 消息循环(窗⼝过程回调、消息队列)。
如果使⽤操作系统已经定义的窗⼝类,可以省略第⼀步;如果不需要⾃定义窗⼝消息处理机制,也可以省略第三步(有些资料直接调⽤对话框的默认实现,来给出最短的windows程序实现,基本上就是基于此原理)。
关于窗⼝类的资料介绍,可以参考下我前段时间整理的“”。
如果将上⾯三个步骤和c++编程语⾔对⽐下,第⼀步注册窗⼝类,就是为了给出新的类型的声明和实现,这个类型内部包含了⼀些必要的属性和⽅法,只不过操作系统提供的api在查找该类型时使⽤的类型名字(字符串);第⼆步创建窗⼝就是类实例化的过程,这⾥需要指定要创建的类名称(字符串);第三步就是针对先前实例化类型变量的调⽤规约,需要按照操作系统提供的约定来使⽤(消息处理及传递)。
下⾯是函数的声明。
HWND WINAPI CreateWindowEx(_In_ DWORD dwExStyle,_In_opt_ LPCTSTR lpClassName,_In_opt_ LPCTSTR lpWindowName,_In_ DWORD dwStyle,_In_ int x,_In_ int y,_In_ int nWidth,_In_ int nHeight,_In_opt_ HWND hWndParent,_In_opt_ HMENU hMenu,_In_opt_ HINSTANCE hInstance,_In_opt_ LPVOID lpParam);这⾥⾯的所有参数基本就是⼀个窗⼝⽤于的可定制的属性。
第10章Windows高级编程10.1 Windows控件的开发Windows窗体控件都是直接或间接地继承自System.Windows.Forms.Control类。
在.NET框架中,可以利用3种方法创建Windows窗体控件,分别是用户控件、自定义控件、从现有控件类派生新的控件。
10.1.1 用户控件创建用户控件,一般是把已存在的Windows控件组合在构成一个新用户控件,这种创建方式,要从UserControl类派生出用户的控件类。
UserControl类从ContainerControl类派生,所以他可以包含其他控件。
Visual Studio2008提供了图形化的创建用户控件方法,共有2种方法:新建Windows 控件库和在已存在的工程中添加用户控件。
1、新建Windows控件库创建用户控件1)单击菜单栏中的“文件/新建项目”(快捷键:Ctrl+N),打开“新建项目”对话框,开发语言选择“Visual C#”,模板选择“Windows窗体控件库”,如图10-1所示。
图10-1 新建项目对话框2)设置好各参数后,单击“确定”按钮,这样就创建了用户控件,如图10-2所示。
0 第10章 Windows 高级编程2图10-2 用户控件3) 用户控件的设计过程与Windows 窗体设计方法相同。
选择用户控件,然后就可以利用属性面板对其进行设置。
4) 选择工具箱中的Windows 控件,可以向用户控件上添加任何控件。
5) 查看用户控件代码。
双击用户控件,进入代码视图,就可以看到自动生成的代码,如图10-3所示。
图10-3 用户控件代码6) 在这里,可以看出来,用户控件的代码与窗体代码除基类不同外,其他部分完全相同。
用户控件类从erControl 类派生,他在System.Windows.Forms 命名空间中。
2、 在已存在的工程中添加用户控件1) 打开任一个工程,然后单击菜单栏中的“项目/添加用户控件”命令,这时弹出“添加新项”对话框,如图10-4所示。