用C语言做Win程序(C语言设计QQ登录界面)

上传人:豆浆 文档编号:1647669 上传时间:2017-07-01 格式:DOC 页数:74 大小:955.50KB
返回 下载 相关 举报
用C语言做Win程序(C语言设计QQ登录界面)_第1页
第1页 / 共74页
用C语言做Win程序(C语言设计QQ登录界面)_第2页
第2页 / 共74页
用C语言做Win程序(C语言设计QQ登录界面)_第3页
第3页 / 共74页
用C语言做Win程序(C语言设计QQ登录界面)_第4页
第4页 / 共74页
用C语言做Win程序(C语言设计QQ登录界面)_第5页
第5页 / 共74页
点击查看更多>>
资源描述

《用C语言做Win程序(C语言设计QQ登录界面)》由会员分享,可在线阅读,更多相关《用C语言做Win程序(C语言设计QQ登录界面)(74页珍藏版)》请在金锄头文库上搜索。

1、C 语言的基本语法我是不打算再提了,很多 C 语言编程的书,就是将一些基本的数据类型、数据结构、语法,然后就是一些数值计算的实例,大多数都是雷同的,难免有抄袭之嫌,而且页没有多少实用价值。本书以实用实例作为编程指导,指引大家编写真正实用的程序。了解到大家对黑客程序、病毒、窗口类程序比较感兴趣,因此我就拿这些实例进行讲解。基于大家基本都用 Windows XP SP3,我也就在这个系统上把程序调试成功后再给大家讲解。编程环境,我还是喜欢 VisualC+ 6.0本书计划从四个大的方面来讲,这四个方面是:窗口类、文件操作类、网络类、数据库类。都是时下流行的编程必备技术,也是软件开发者,必须掌握的技

2、术。中间以实例讲解,逐步学习,相信大家看完后会有很大的提高的。第一章 窗口类程序的编写这一章就先来讲解下窗口类程序的编写。因为现在程序没有界面,就像人没有脸面一样,而且好的界面更能吸引人。从基本的界面开始,相信能给大家指明出一条路的,使大家很容易地掌握窗口序的编写。其实界面设计利用 VC 6.0 的 MFC,很容易地制作出来。这里从底层开始写代码来写界面程序,使大家知道一些底层的东西,为以后学习打下好的基础,相信您学了这些,再用 VC 的 MFC 会得心应手的。1.1用 C 写的第一个一个窗口程序作为编程的开始,我们还是以一个 Hello World 来开始我们的学习之旅。代码如下:#incl

3、ude void main()printf(Hello World!);这是一个再简单不过的 C 程序了,只要有点 C 语言的知识就能够懂的,不过这里估计还有些人,到现在还不知道#include 中的头文件 stdio.h 到底是什么东西,我就来说下了, stdio.h 是一个文本文件,存在于磁盘上的,已 VC 为例它的位置如下图:也许你听说过 printf()函数是在 stdio.h 中预定义的,但是你见过其定义的形式没有,没有且看下图其定义形式,就如图中所示,也许你并不懂前面那些东西是什么,不用担心,以后我会慢慢解释给大家的。函数是先定义才能使用的,所以 stdio.h 中定义 print

4、f 函数,我我们在引用了 stdio.h 头文件后就可以在程序中调用 printf 函数了。上面是在命令行中显示一个“Hello World!”,没什么意思,下面我写一个窗口程序,显示个 Hello World!#include void main()MessageBox(NULL, Hello World!,我的第一个窗口程序,MB_OK);编译运行后如下图:弹出的是一个对话框,上面有 Hello World,还有一个标题和一个“确定”按钮。当然你会说这对话框也算个窗口吗?这里肯定的告诉你:是的,对话框是窗口程序的一个子集。你可能还会这样问,这样一个简单的窗口有啥用呢,其实这样的窗口非常有用

5、,我们在操作计算机的时候,会出现一些警告或提示的对话框,都是基本是这种方法写出来的。就算是这个很简单,学习本来不就是有易向难,有浅显深奥去的过程吗。整个效果几乎就是靠一个函数 MessageBox 的功劳。这里也先不介绍这个函数了,说些其他的。其实用 C 编写一些恶程序,就是把编程环境中所提供的一些函数熟悉了基本就可以了。用 VC 来写成序,其中的头文件有很多,定义了很多 Windows API 函数 、数据结构、宏,可以让我们大家运用,通过它们,我们可以快速开发出使用的程序。这些Windows API 在微软的 MSDN 上查,上面有很多说明,部分还有代码示例。不会是可以输入函数名,查找相关

6、信息,建议大家用英文版的 Library,因为其内容比中文版的全面,英语不好的同学呢,就先看中文了中文 MSDN:http:/ MSDN:http:/ “stdio.h”int i=0,j=0;for(i=1;i/回调函数LRESULT WINAPI WinProc(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam)switch(Msg)/处理消息过程,什么是消息,下节再讲case WM_DESTROY:/响应鼠标单击关闭按钮事件PostQuitMessage(0);/退出消息队列,至于什么是消息队列,下节说return 0;/退出函数return

7、DefWindowProc(hWnd,Msg,wParam,lParam);/主函数int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd)char *cName = myWindow;WNDCLASSEX wc;HWND hWnd;MSG Msg; wc.cbClsExtra = 0;wc.cbWndExtra = 0;wc.cbSize = sizeof(WNDCLASSEX);wc.hbrBackground = (HBRUSH)GetStockObject(W

8、HITE_BRUSH);/通过函数来设置一个白色的背景,这里大家设置为 NULL 看看,会很有趣的wc.hCursor = NULL;/不设置wc.hIcon = NULL;/不设置wc.hIconSm = NULL;/不设置wc.hInstance = hInstance;/当前程序的句柄,hInstance 是有系统给传递的wc.lpfnWndProc = WinProc;/窗口处理过程的回调函数。wc.lpszClassName =(LPSTR)cName;/窗口类的名字。wc.lpszMenuName = NULL;/目录名,不设置wc.style = CS_HREDRAW | CS_

9、VREDRAW; RegisterClassEx(&wc);/在系统中注册hWnd = CreateWindowEx(WS_EX_CLIENTEDGE,cName,我的窗口我喜欢,WS_OVERLAPPEDWINDOW,200,100,600,400,NULL,NULL,hInstance,NULL);/创建窗口,窗口标题为我的窗口我喜欢if(hWnd = NULL)/容错处理MessageBox(NULL,Theres an Error,Error Title,MB_ICONEXCLAMATION|MB_OK);return 0;ShowWindow(hWnd,nShowCmd);/显示窗口

10、UpdateWindow(hWnd);/下面是对消息的循环处理,大家先不必管这些,下节课我会细说的while(GetMessage(&Msg,NULL,0,0)TranslateMessage(&Msg);/翻译消息DispatchMessage(&Msg);/分派消息 return Msg.message;编译运行后,可以看到一个白色背景的窗口出来了。如下图哎,这一节,篇幅可是真有点长的,看完估计得换几口气吧,但是只要你看到了这些,你的水平就立马上了一个档次。想你看完后也许会头昏脑胀的,没有再看下去的信心的,但是估计当你把我的代码复制到 VC 中编译运行后,看到一个可爱的窗口时,肯定又会重新

11、点燃你心中学习的热情吧,因为你已经看到了成功,看到了成就,一种成就感犹然自心中生,自信也提起来了,这比什么都好,人嘛就得对自己充满信心的。所以大家要发扬持之以恒的精神,坚持和我一起把这段苦闷的入门过程给走完,那么编程就不再是痛苦,而是一种乐趣。其实写这些程序很多东西都不用去记的想 WNDCLASSEX 结构的成员及成员作用,这些都不用去死记,只要知道有这么个东西,到时时再查就可以了,编程用到的函数、结构体那么多,谁想记呀。这一节已经留下了些问题,在下节介绍的,大家如果有余力的话,可以先查下资料的。1.4 鼠标指针特效大家在都玩过网络游戏吧,里面的界面都是很吸引人的,好的界面的确能给人以美的感受

12、。而里面的鼠标并不是我们平常见到的箭头了,而是独具匠心的。网游我就只玩过魔域,所以就以魔域为例,魔域中的鼠标是这样的 。今天我们就来实现让鼠标到程序窗口上就变为我们想要的图案。在写代码之前,我们还是先来看下先驱知识,这里要说的就是上节说资源了,当时大家看了可能并不知道什么是资源,这里就详细说一下。大家知道 Windows 程序都有图标,鼠标有光标,窗口上有图片、按钮、文字等等,这些都是程序的部分,这样就是程序的资源。程序没有进入内存运行的时候,我们就叫它可执行文件吧,在磁盘保存的时候,并不只是保存了程序运行的代码部分(即 cpu 指令部分),还有一些图片、字符、按钮、图标并不是在代码段的。可执

13、行文件的大致机构如下图一个可执行文件是很复杂的,这里就简单的画这么一个难看的图,知道资源所在的大概位置,能理解程序的执行部分和知道程序的图标是从哪来的就可以了。今天我们只是修改鼠标的指针,所以用到的资源,只有鼠标的光标资源而已。资源的源文件是以 rc 为扩展名的脚本文件(仍然是 C 语言格式的,很简单),有资源编译器 Rc.exe 编译成以 res 为扩展名的二进制资源文件,最后用连接器,把 res 文件和 obj 文件连接到一起就成了我们的程序 exe 文件了,现在知道了程序编译后要连接了吧。光标的图片格式有两中 cur 和 ani 的。这个文件我在魔域的图片库里面找到了就复制到,当前项目目

14、录下。下面来定义下资源文件 myOwnCursor.rc/myOwnCursor.rc written by xhk 2009.3.1#include /资源文件要用到的图文件#define CUR 0x1000 /定义资源的 ID,为整型 idCUR CURSOR myOwnCursor.ani /用到的光标图案写完后,在命令提示符下进入目录,然后用 rc.exe 编译,输入 rc myOwnCursor.rc 命令,回车我们查看下项目目录下多了个 myOwnCursor.RES 的文件,就是编译生成的二进制资源件。接下来就该编写代码了,来应用这个资源文件,建立 myOwnCursor.c

15、文件,其实代码和上节所写代码很相似的,只是稍微加以修改而已。#include #define CUR 0x1000 /预定义光标的 id/回调函数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);/主函数int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd)char *cName = myWindow;WNDCLASSEX wc;HWND hWnd;MSG Msg;wc.cbClsExtra = 0;wc.cbWndExtra = 0;wc.cbSize = sizeof(WNDCLASSEX);wc.hbrBackgroun

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 电子/通信 > 综合/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号