C语言编写Windows下的实用程序:[3]窗口

前面两篇,我们只是通过Windows系统的MessageBox函数,简单做出了一个提示对话框,这对我编写实用的窗口程序是远远不够的,这篇开始,我们来介绍下怎样用C语言开发Windows下的窗口程序。

操作方法

  • 01

    打开VS2010,建立Win32项目SimpleWindow。

  • 02

    设置项目为"空白项目",从而不让VS2010为我们生成代码。

  • 03

    在项目中添加"SimpleWindow.cpp"文件。

  • 04

    这里我们要介绍几个Windows的函数,首先是RegisterClassEx函数。 该函数注册在随后调用CreateWindow函数和CreateWindowEx函数中使用的窗口类。 RegisterClass函数己经由函数RegisterClassEx函数来代替,但是,如果不需要设置类的小目标则仍然可以使用RegisterClass函数。 可以参见微软的msdn。

  • 05

    CreateWindowEx函数: 该函数创建一个具有扩展风格的层叠式窗口、弹出式窗口或子窗口,其他与CreateWindow函数相同。关于创建窗口和其他参数的内容,请参看CreateWindow。具体仍可见微软的msdn。

  • 06

    消息处理函数WindowProc : 该函数是一个应用程序定义的函数。它处理发送给窗口的消息。WINDPROC类型定义了一个指向该回调函数的指针。WindowProc是用于应用程序定义函数的占位符。 函数原型: LRESULT CALLBACK WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam); 参数: hwnd:指向窗口的句柄。 uMsg:指定消息类型。 wParam:指定其余的、消息特定的信息。该参数的内容与UMsg参数值有关。 IParam:指定其余的、消息特定的信息。该参数的内容与uMsg参数值有关。 返回值:返回值就是消息处理结果,它与发送的消息有关。 速查:Windows NT:3.1以上版本;Windows:95以上版本;Windows CE:1.0 以上版本;头文件:winuser.h;库文件:用户自定义。 我们这里的窗口处理函数,如图所示,并没有做太多工作,而只是做了简单的消息处理。

  • 07

    最终SimpleWindow的代码如下: #include <Windows.h> #include <tchar.h> LRESULT WINAPI WinProc(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam); int WinMain( __in HINSTANCE hInstance, __in_opt HINSTANCE hPrevInstance, __in LPSTR lpCmdLine, __in int nShowCmd ) { TCHAR *szName = _T("myWindow"); WNDCLASSEX wc = {0}; HWND hWnd     = NULL; MSG Msg       = {0}; wc.cbClsExtra    = 0; wc.cbWndExtra    = 0; wc.cbSize        = sizeof(WNDCLASSEX); wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);//通过函数来设置一个白色的背景,这里大家设置为NULL看看,会很有趣的 wc.hCursor       = NULL;//不设置 wc.hIcon         = NULL;//不设置 wc.hIconSm       = NULL;//不设置 wc.hInstance     = hInstance;//当前程序的句柄,hInstance是有系统给传递的 wc.lpfnWndProc   = WinProc;//窗口处理过程的回调函数。 wc.lpszClassName = szName;//窗口类的名字。 wc.lpszMenuName  = NULL; wc.style         = CS_HREDRAW | CS_VREDRAW; RegisterClassEx(&wc);//在系统中注册 hWnd = CreateWindowEx(WS_EX_CLIENTEDGE,szName,_T("我的窗口我喜欢"),WS_OVERLAPPEDWINDOW, 200,100,600,400,NULL,NULL,hInstance,NULL);//创建窗口,窗口标题为"我的窗口我喜欢" if(hWnd == NULL) { MessageBox(NULL,_T("There's an Error"),_T("Error Title"),MB_ICONEXCLAMATION|MB_OK); return 0; } ShowWindow(hWnd,nShowCmd);//显示窗口 UpdateWindow(hWnd); //下面是对消息的循环处理,大家先不必管这些,下节课我会细说的 while(GetMessage(&Msg,NULL,0,0)) { TranslateMessage(&Msg);//翻译消息 DispatchMessage(&Msg);//分派消息 } return Msg.message; } //消息处理函数 LRESULT WINAPI WinProc(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam) { switch(Msg)//处理消息过程 { case WM_DESTROY://响应鼠标单击关闭按钮事件 PostQuitMessage(0);//退出消息队列 return 0;//退出函数 } return DefWindowProc(hWnd,Msg,wParam,lParam); } 编译链接后,得到如图中所示,可以看到我们自己的窗口程序就出来了。

(0)

相关推荐

  • Go语言开发环境搭建与初探(Windows下)-全面

    Go语言开发环境的搭建(Windows) 操作方法 01 在Go语言的Google代码项目上下载Windows下的Go语言开发包(下载地址见工具).有zip压缩版和msi安装版两个按本下载.(这里使用 ...

  • 怎样在windows下搭建go语言的开发环境

    这个教程介绍了怎样安装go语言的环境 操作方法 01 首先打开go语言中文网https://studygolang.com/dl下载中心,找到windows下的go语言安装包,这里会列出所有的go安装 ...

  • Windows下结合LiteIDE搭建Go开发环境图文详解

    Go是一种新的语言,一种并发的.带垃圾回收的.快速编译的语言. Go是一种编译型语言,它结合了解释型语言的游刃有余,动态类型语言的开发效率,以及静态类型的安全性.它也打算成为现代的,支持网络与多核计算 ...

  • Windows 下使用IE 浏览器(1)

    操作方法 01 Windows 下使用IE 浏览器(1) Internet Explorer 浏览器(简称IE 浏览器),是Microsoft 公司设计开发的一个功能强大.很受欢迎的Web 浏览器.在 ...

  • windows下lamp搭建

    简介 01 Linux+Apache+Mysql+Perl/PHP/Python一组常用来搭建动态网站或者服务器的开源软件,本身都是各自独立的程序,但是因为常被放在一起使用,拥有了越来越高的兼容度,共 ...

  • Windows下利用cwRsync批量同步文件(4.1.0版本)

    前段时间写了一篇linux下利用rsync批量更新的文章,网游公司windows服务器还是很多的,今天就来讲讲windows下批量更新的方法,windows下同步数据利用cwRsync来完成的 一、系 ...

  • Windows下各个文件夹的作用分别是什么

    ├—WINDOWS │ ├—system32(存放Windows的系统文件和硬件驱动程序) │ │ ├—config(用户配置信息和密码信息) │ │ │ └—systemprofile(系统配置信息 ...

  • windows下MRTG安装全攻略

    在一个网络中,作为网络工程师或者网络管理员,需要随时了解网络的各种状态,以判断网络是否处于健康状态或者随时了解网络的流量、每个路由器的流量、每个交换机端口的流量…,以供年度报告时向上级领导提供详实的数 ...

  • Windows下安装python的scipy等科学计算包

    如果要使用python进行科学计算.数据分析等,一定要安装scipy.seaborn.numpy等等包. 但Windows下安装python的第三方库经常会出现问题.此前,已介绍过Windows下如何 ...