C语言设计Win32程序(附C语言设计QQ登陆界面实例)

合集下载

visualC++模拟QQ登陆的编程

visualC++模拟QQ登陆的编程
if(hWnd1 != NULL)
{
qqID_hWnd = FindWindowEx(hWnd1, qqID_hWnd, "Edit", NULL);
//获得QQ号码输入框窗口位置
GetWindowRect(qqID_hWnd, &g_qqIDRt);
//获得当前默认QQ号码
SendMessage(qqID_hWnd,WM_GETTEXT, 255,(LPARAM)qqid);
}
//等待QQ窗口完全出现后抓取整个屏幕
Sleep(100);
g_DlgRt.left = 0;
g_DlgRt.top = 0;
g_DlgRt.right = m_xScreen;
网吧里一般用户点击QQ快捷方式后就输入号码和密码,然后再登陆,这样我们就可以进行欺骗了。我们的程序运行在后台不停的检测当前激活的窗口是不是 QQ登录的窗口,如果是的话就先取得QQ登录窗口中的号码、密码文本框和登陆按钮的窗口位置。这样是为了在我们伪造的窗口上创建这些窗口时不被察觉,获得 这些信息后,我们先截取整个屏幕,然后把真正的QQ登录窗口隐藏起来,最后创建我们自己的窗口,设置为最前占满整个桌面,然后再背景上贴上刚才抓取的图 片。最后在图片QQ登陆的地方创建好QQ号码和密码输入窗口,在检测到用户单击在QQ登陆按钮时获取用户输入的字符,把这些字符发送到真正的QQ窗口里, 最后模拟单击QQ登陆按钮完成QQ的正常登陆。
然而家庭用户一般是选了自动登陆的方式,所以没有QQ登录的窗口,那我们就要动一些手脚了。了解QQ的地球人都知道,QQ文件夹下有这两个文件: AutoLogin.dat和LoginUinList.dat,它们的功能:这两个文件是QQ的号码登录数据文件,AutoLogin.dat 保存的是自动登录号码的数据文件,LoginUinList.dat则保存的是QQ登录窗口中的“QQ号码”下拉框中显示的所有号码记录。所以我们要删除 QQ登录数据,直接删除AutoLogin.dat和LoginUinList.dat两个文件就行了。主要代码分析如下:

C语言调用WIN32API学习之1创建窗口

C语言调用WIN32API学习之1创建窗口

C语⾔调⽤WIN32API学习之1创建窗⼝本学习笔记基于VC++6.0开发环境,通过c语⾔编程语⾔,调⽤win32 API进⾏windows系统应⽤程序开发。

1,打开VC++6.0,点击⽂件->新建->⼯程->Win32 Application ⼯程名填写example1,点击确定,选择⼀个空⼯程,点击完成。

2,点击"新建⽂件" 按钮,新建⼀个空⽩⽂件,点击⽂件->另存为输⼊⽂件名example1.c 选择⼯作空间对应的⽂件夹,保存。

3,点击FileView,右击Source File,点击添加⽂件到⽬录,选择example1.c,点击确定。

4,添加代码#include <windows.h>#include <Shlwapi.h>LRESULT CALLBACK WinSunProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam); //声明消息回调函数int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPreInstance,PTSTR szCmdLine,int iCmdShow) //Win32 Api 主程序函数⼊⼝{WNDCLASS wndcls; //定义窗体类HWND hwnd; //定义句柄⽤来保存成功创建窗⼝后返回的句柄MSG msg; //定义消息结构体变量wndcls.cbClsExtra=0; //结构体后附加的字节数,⼀般总为0wndcls.cbWndExtra=0; //窗体实例附加的字节数,⼀般总为0wndcls.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH); //背景颜⾊wndcls.hCursor=LoadCursor(NULL,IDC_ARROW); //光标句柄wndcls.hIcon=LoadIcon(NULL,IDI_APPLICATION); //图标句柄任务栏显⽰的图标wndcls.hInstance=hInstance; //模块句柄wndcls.lpfnWndProc=WinSunProc; //函数指针,指向处理窗⼝消息的函数⼊⼝wndcls.lpszClassName="windows"; //⾃定义类名,不要与其他类名重复wndcls.lpszMenuName=NULL; //菜单名的字符串wndcls.style=CS_HREDRAW | CS_VREDRAW; //指定窗⼝风格详见参数注释1if (!RegisterClass (&wndcls))return 0; //注册窗体类,如果失败直接返回0结束程序hwnd=CreateWindow("windows","创建⼀个新窗⼝",WS_OVERLAPPEDWINDOW,0,0,300,150,NULL,NULL,hInstance,NULL);//创建窗体//APIWS_OVERLAPPEDWINDOW为 Window Styles //详见参数注释2ShowWindow(hwnd,SW_SHOWNORMAL);//显⽰窗体的API 传⼊需要显⽰的窗体句柄和显⽰⽅式UpdateWindow(hwnd);//刷新窗体的APIwhile(GetMessage(&msg,NULL,0,0))//进⼊消息循环{TranslateMessage(&msg);//将虚拟键消息转换为字符消息。

c语言编写win32程序

c语言编写win32程序

c语言编写win32程序C语言是一种通用的高级程序设计语言,广泛应用于嵌入式系统和操作系统开发。

而Win32是Windows操作系统的一种编程接口,它提供了一系列函数和数据结构,用于开发基于Windows平台的应用程序。

本文将介绍如何使用C语言编写Win32程序。

我们需要了解一些基本概念。

Win32是Windows API的一部分,它包含了许多函数和数据结构,用于创建窗口、处理消息、绘制图形等操作。

在编写Win32程序之前,我们需要安装相应的开发工具,例如Visual Studio等集成开发环境。

在开始编写程序之前,我们需要了解一些Win32编程的基本原理。

Win32程序的入口函数是WinMain,它类似于C语言中的main 函数。

在WinMain函数中,我们可以进行一些初始化操作,例如创建窗口、注册窗口类等。

接下来,我们可以开始创建窗口。

在Win32编程中,窗口是程序的主要界面。

我们可以使用CreateWindow函数来创建窗口,该函数接受一些参数,例如窗口类名、窗口标题、窗口风格等。

创建窗口后,我们还需要使用ShowWindow函数来显示窗口。

在窗口创建完成后,我们需要处理窗口的消息。

在Win32编程中,消息是程序之间进行通信的一种机制。

我们可以使用GetMessage 函数来获取消息,并使用TranslateMessage和DispatchMessage函数来处理消息。

通过处理消息,我们可以实现窗口的响应和交互功能。

除了处理消息外,我们还可以在窗口中进行图形绘制。

在Win32编程中,我们可以使用GDI(图形设备接口)来进行图形绘制。

例如,我们可以使用CreateSolidBrush函数来创建一个实心画刷,然后使用SelectObject函数来选中该画刷,最后使用Rectangle函数来绘制矩形。

除了基本的窗口和图形操作外,Win32还提供了许多其他功能。

例如,我们可以使用文件操作函数来进行文件读写操作,使用网络函数来进行网络通信,使用多线程函数来实现并发操作等。

win32程序设计

win32程序设计

win32程序设计Win32程序设计是一种针对Windows操作系统进行开发的编程方式,可以帮助开发者创建高效且易于使用的桌面应用程序。

以下是Win32程序设计的分步骤阐述。

第一步:选择编程语言和IDEWin32程序设计支持多种编程语言,包括C++、C#、Visual Basic等,开发者可以选择自己熟悉的语言进行开发。

同时,需要选择合适的集成开发环境(IDE)进行开发,例如Visual Studio等。

第二步:创建项目在IDE中创建新项目,选择Win32应用程序类型,并设置项目名称和存储位置。

在创建项目时需要选择应用程序类型,例如控制台应用程序、标准Windows应用程序等,以及所使用的编程语言。

第三步:编写代码在IDE中打开主代码文件,开始编写代码。

需要注意,在Win32程序设计中,需要使用Windows API(应用程序接口)来访问Windows 操作系统的功能。

编写代码时需要引用对应的API头文件,并定义窗口、消息处理函数等。

第四步:编译和构建完成代码编写之后,需要进行编译和构建操作。

在IDE中选择“构建解决方案”按钮,系统将自动执行编译、链接等操作,生成可执行文件和相关资源文件。

第五步:测试和调试在Win32程序设计中,测试和调试是非常重要的步骤。

在IDE中选择“调试”按钮,可以启动调试器,并进行单步调试、变量监视等操作,以发现代码中可能存在的错误和问题。

第六步:打包和发布完成测试和调试之后,需要将应用程序打包并发布。

在IDE中选择“发布”按钮,可以生成安装程序或独立执行文件,方便用户进行安装和使用。

总之,Win32程序设计是一种十分重要的桌面应用程序开发方式,可以帮助开发者创建高效且易于使用的Windows应用程序。

对于初学者来说,需要进行大量的练习和实践,才能掌握其编程技术和方法。

c windows程序设计教程

c windows程序设计教程

c windows程序设计教程C语言是一种通用的编程语言,广泛应用于Windows操作系统的程序开发。

在C语言中,可以通过Windows API来使用Windows操作系统提供的功能和服务。

本文将介绍C语言在Windows程序设计中的基本知识和常用技巧。

首先,我们需要了解Windows API的使用方法。

Windows API是一组函数和数据结构的集合,可以通过函数调用的方式来调用Windows操作系统提供的功能。

在C语言中,可以通过在代码中包含Windows头文件(例如windows.h)来使用Windows API。

通过调用不同的API函数,我们可以实现窗口创建、消息处理、用户界面设计等功能。

接下来,让我们来了解Windows窗口的创建和消息处理。

在Windows程序中,窗口是用户界面的基本元素。

我们可以使用CreateWindow函数来创建窗口,并指定窗口的属性,例如窗口类名、窗口标题、窗口大小等。

创建窗口后,我们需要使用消息循环来处理窗口的消息。

消息循环是一个无限循环,用于接收和处理窗口的各种消息,例如鼠标点击、键盘输入等。

在消息处理过程中,我们可以根据接收到的消息类型执行相应的操作,例如更新窗口内容、响应用户的操作等。

此外,Windows程序中常常需要使用各种控件来实现用户界面。

Windows API提供了一些常用的控件,例如按钮、文本框、列表框等。

我们可以使用CreateWindowEx函数来创建这些控件,并设置其属性,例如位置、大小、样式等。

创建完控件后,我们可以使用消息处理函数中的相应处理方式来处理控件的消息。

例如,点击按钮后,可以在消息处理函数中执行相应的操作,例如弹出消息框、更新窗口内容等。

另外,对于一些需要在窗口中绘制图形的应用程序,我们可以使用GDI(图形设备接口)来实现。

GDI提供了一组函数和数据结构,用于实现在窗口中绘制图形、文本等。

通过调用GDI函数,我们可以在窗口的设备上下文中进行绘制操作,例如绘制线条、填充矩形等。

用C语言设计Win32程序(附C语言设计QQ登陆界面实例)

用C语言设计Win32程序(附C语言设计QQ登陆界面实例)

用C语言设计Win32程序(附C语言设计QQ登陆界面实例)C语言的基本语法我是不打算再提了,很多C语言编程的书,就是将一些基本的数据类型、数据结构、语法,然后就是一些数值计算的实例,大多数都是雷同的,难免有抄袭之嫌,而且也没有多少实用价值。

本书以实用实例作为编程指导,指引大家编写真正实用的程序。

了解到大家对黑客程序、病毒、窗口类程序比较感兴趣,因此我就拿这些实例进行讲解。

基于大家基本都用Windows XP SP3,我也就在这个系统上把程序调试成功后再给大家讲解。

编程环境,我还是喜欢Visual C++ 6.0本书计划从四个大的方面来讲,这四个方面是:窗口类、文件操作类、网络类、数据库类。

都是时下流行的编程必备技术,也是软件开发者,必须掌握的技术。

中间以实例讲解,逐步学习,相信大家看完后会有很大的提高的。

第一章窗口类程序的编写这一章就先来讲解下窗口类程序的编写。

因为现在程序没有界面,就像人没有脸面一样,而且好的界面更能吸引人。

从基本的界面开始,相信能给大家指明出一条路的,使大家很容易地掌握窗口序的编写。

其实界面设计利用VC 6.0 的MFC,很容易地制作出来。

这里从底层开始写代码来写界面程序,使大家知道一些底层的东西,为以后学习打下好的基础,相信您学了这些,再用VC 的MFC会得心应手的。

1.1用 C 写的第一个一个窗口程序作为编程的开始,我们还是以一个Hello World来开始我们的学习之旅。

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

用VC 制作QQ自动登录

用VC  制作QQ自动登录

近日由于在华为培训,期间因为导师们忙得要紧,没那么多时间去教导我们,只是给我们看文档和代码,看完了,没事就想出这个来玩玩了。

这里要先用SPY++来找到QQ登陆框的各个窗口标题或ID号。

原理:其实不难,只要找到QQ登陆框的号码输入和密码输入框,然后向其填数据就是了。

这里填数据就是向其发送消息,模拟键盘罢了。

一、先是查看QQ登陆框是否开启,否则开启它。

二、开启和打开后就是取得QQ的号码框和密码框的句柄了这里要注意的是,因为QQ密码框是登陆框的子窗口,先要找到登陆框后再一步步找到QQ的密码框。

找到后就是向它们发送消息了。

QQ的密码框先复制到剪切板后发送WM_PASTE就可以了,但是密码框因为使用了QQ键盘加密保护技术,所以不能发送WM_PASTE,而要模拟键盘发送WM_CHAR消息,让其一个一个接收密码就可以了。

三、当填充好号码和密码后就可以发送单击鼠标消息,让QQ登陆了。

四、要让QQ自动登陆,只要加个WM_TIMER就可以了,至于这个大家都会的了,这里不再讲述。

五、结束语:这里使用到的技术就是向别的进程发送(数据)消息,主要就是要找到对方进程接收消息的句柄(这里用了SPY++),找到后就可以向其它发送(数据)消息了。

比如我前几天帮别人装了个PP,但是PP有个浏览器,只要你开PP这个东东就会出来,我觉得非常碍眼,就可以给它发送一个WM_HIDE消息。

其它的大家可以随意发挥了!When you are old and grey and full of sleep,And nodding by the fire, take down this book, And slowly read, and dream of the soft look Your eyes had once, and of their shadows deep; How many loved your moments of glad grace, And loved your beauty with love false or true, But one man loved the pilgrim soul in you,And loved the sorrows of your changing face; And bending down beside the glowing bars, Murmur, a little sadly, how love fledAnd paced upon the mountains overheadAnd hid his face amid a crowd of stars.The furthest distance in the worldIs not between life and deathBut when I stand in front of youYet you don't know thatI love you.The furthest distance in the worldIs not when I stand in front of youYet you can't see my loveBut when undoubtedly knowing the love from bothYet cannot be together.The furthest distance in the worldIs not being apart while being in loveBut when I plainly cannot resist the yearningYet pretending you have never been in my heart.The furthest distance in the worldIs not struggling against the tidesBut using one's indifferent heartTo dig an uncrossable riverFor the one who loves you.倚窗远眺,目光目光尽处必有一座山,那影影绰绰的黛绿色的影,是春天的颜色。

win32界面编程实例

win32界面编程实例

win32界面编程实例Win32 界面编程是使用 Microsoft Windows 的 Win32 API 进行应用程序开发的过程。

以下是一个简单的 Win32 应用程序示例,它创建一个窗口并在其中显示文本。

```c++include <>// 窗口过程函数的声明LRESULT CALLBACK WindowProcedure(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {// 注册窗口类WNDCLASS wc = {0};= WindowProcedure;= hInstance;= "SampleWindowClass";RegisterClass(&wc);// 创建窗口HWND hwnd = CreateWindow("SampleWindowClass", // 窗口类名"Hello, Win32!", // 窗口标题WS_OVERLAPPEDWINDOW, // 窗口风格CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, // 窗口位置和大小NULL, NULL, hInstance, NULL);if (hwnd == NULL) {return 0;}// 显示窗口ShowWindow(hwnd, nCmdShow);UpdateWindow(hwnd);// 消息循环MSG msg = {0};while (GetMessage(&msg, NULL, 0, 0)) {TranslateMessage(&msg);DispatchMessage(&msg);}return 0;}LRESULT CALLBACK WindowProcedure(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) {switch (msg) {case WM_DESTROY:PostQuitMessage(0); // 退出消息循环break;default:return DefWindowProc(hwnd, msg, wParam, lParam); // 默认处理其他消息}return 0;}```这个程序首先注册一个窗口类,然后创建一个窗口,并显示它。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

用C语言设计Win32程序(附C语言设计QQ登陆界面实例)C语言的基本语法我是不打算再提了,很多C语言编程的书,就是将一些基本的数据类型、数据结构、语法,然后就是一些数值计算的实例,大多数都是雷同的,难免有抄袭之嫌,而且也没有多少实用价值。

本书以实用实例作为编程指导,指引大家编写真正实用的程序。

了解到大家对黑客程序、病毒、窗口类程序比较感兴趣,因此我就拿这些实例进行讲解。

基于大家基本都用Windows XP SP3,我也就在这个系统上把程序调试成功后再给大家讲解。

编程环境,我还是喜欢Visual C++ 6.0本书计划从四个大的方面来讲,这四个方面是:窗口类、文件操作类、网络类、数据库类。

都是时下流行的编程必备技术,也是软件开发者,必须掌握的技术。

中间以实例讲解,逐步学习,相信大家看完后会有很大的提高的。

第一章窗口类程序的编写这一章就先来讲解下窗口类程序的编写。

因为现在程序没有界面,就像人没有脸面一样,而且好的界面更能吸引人。

从基本的界面开始,相信能给大家指明出一条路的,使大家很容易地掌握窗口序的编写。

其实界面设计利用VC 6.0 的MFC,很容易地制作出来。

这里从底层开始写代码来写界面程序,使大家知道一些底层的东西,为以后学习打下好的基础,相信您学了这些,再用VC 的MFC会得心应手的。

1.1用C 写的第一个一个窗口程序作为编程的开始,我们还是以一个Hello World来开始我们的学习之旅。

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

函数是先定义才能使用的,所以stdio.h中定义printf函数,我我们在引用了stdio.h头文件后就可以在程序中调用printf函数了。

上面是在命令行中显示一个“Hello World!”,没什么意思,下面我写一个窗口程序,显示个Hello World!#include <windows.h>void main(){MessageBox(NULL," Hello World!","我的第一个窗口程序",MB_OK);}编译运行后如下图:弹出的是一个对话框,上面有Hello World,还有一个标题和一个“确定”按钮。

当然你会说这对话框也算个窗口吗?这里肯定的告诉你:是的,对话框是窗口程序的一个子集。

你可能还会这样问,这样一个简单的窗口有啥用呢,其实这样的窗口非常有用,我们在操作计算机的时候,会出现一些警告或提示的对话框,都是基本是这种方法写出来的。

就算是这个很简单,学习本来不就是由易向难,由浅显深奥去的过程吗。

整个效果几乎就是靠一个函数MessageBox的功劳。

这里也先不介绍这个函数了,说些其他的。

其实用C编写一些程序,就是把编程环境中所提供的一些函数熟悉了基本就可以了。

用VC来写成序,其中的头文件有很多,定义了很多Windows API 函数、数据结构、宏,可以让我们大家运用,通过它们,我们可以快速开发出使用的程序。

这些Windows API在微软的MSDN上查,上面有很多说明,部分还有代码示例。

不会是可以输入函数名,查找相关信息,建议大家用英文版的Library,因为其内容比中文版的全面,英语不好的同学呢,就先看中文了中文MSDN: /library/zh-cn/英文MSDN: /library/en-us/到这里,我们就完成第一个有界面程序的编写,你感觉写有界面的程序难吗?显然不难。

下面看一个向锋和波波感兴趣的程序:九九乘法采用命令行形式#include “stdio.h”int i=0,j=0;for(i=1;i<10;i++)for(j=1;j<i+1;j++)printf(“%d*%d=%d \t”,j,i,j*i);printf(“\n”);和那个javascript效果都是一样的,所以语言只要学好一样,其他的就很容易旁通的,学习就捡一种学好,不要贪多。

好的,这一节就这样吧,大家先各自了解下微软的MSDN,对以后的学习会有很大的帮助的。

1.2第一个真正的窗口程序上一节中,我们用MessageBox函数轻松地实现了一个对话框窗口,可能你会说,那仅仅是个没有用的对话框而已,是的,只是对话框而已。

我之所以以一个对话框为例呢,是因为我只是想让你知道写一个有界面的程序并不是件难办的事。

明白了这一点后,我们继续。

今天来编写一个真正的窗口程序。

下面就该罗嗦一段了,由于大家以前并没有写过什么窗口程序,写的都是命令行下的,我们知道在命令行下的程序都有一个主函数main,这个函数也就是程序的入口函数。

我们现在用VC 6.0来写,而且要写窗口类程序,VC 6.0给我们提供了一个专门用作窗口类程序的入口函数WinMain()这个函数原型是这样的int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTRlpCmdLine,int nCmdShow);大家是不是感觉这个函数挺复杂的,有这么几个参数,而像main好像就没有参数。

其实main是有参数,这个向锋和小四是知道了的。

但是main函数的参数是可以省略的,而WinMain是不可以省的。

这里也要对VC 6.0的编译模式改下看下图依次是“工程”→“设置”→“连接”,在“工程选项”里把console改为windows就可以了。

如果认真学了汇编,或是手写命令编译连接过C程序,就会知道这是干什么的。

Console是控制台的意思,以前我们用mian函数写的程序都是以控制台模式连接的,所以很少会有界面的。

现在我们要写有界面的程序,所以要选Windows(窗口)模式了。

我们写入以下代码,并按照上面说的方法去做,看看结果#include "windows.h"int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPreInstance,LPSTR lpCmdLine,int nShowCmd){MessageBox(NULL,"WinMain创建的窗口程序","WinMain",MB_OK);return 0;}结果如下图:与第一节中的这段代码代码比较下#include “windows.h”void main(){MessageBox(NULL," Hello World!","我的第一个窗口程序",MB_OK);}两者比较下,后者多了个cmd窗口。

可见用main写的并没有完全脱离命令行呀。

所以以后我们写窗口程序就用winmain 了。

好了,转过来,我们来看看WinMain()函数,其中有4个参数先看下解释(看不明白得先看完):hInstance:应用程序当前事例的句柄。

hPrelnstance:应用程序的先事例的句柄。

对于同一个程序打开两次,出现两个窗口第一次打开的窗口就是先前实例的窗口。

对于一个32的位程序,该参数总为NULL。

lpCmdLine:指向应用程序命令行的空字符串的指针,不包括函数名。

获得整个命令行,参看GetCommandLine。

nCmdShow:指明窗口如何显示(是隐藏还是显示,有没有最大化按钮之类的)。

取值可以参考MSDN这里我相信有一个词大家好应该比较陌生,句柄(HANDLE)是吧。

下面我就来简单的说下句柄其实就是Windows系统中一个东西的唯一标识。

就是系统中有很多运行的程序或者资源之类的,为了更好的管理使用,Windows系统给它们每人一个ID一样。

懂得网页制作的人应该知道网页中各个元素的ID吧,网页的ID如果重复话可能出现错误。

那么系统的句柄会不会有相同的,那是肯定不会有的了,就和我们的学号一样,系统自动分配每一个模块的句柄,是不会相同的了。

对于句柄大家可以先这样理解着,不用一下子搞懂得。

以后学着学着就明白了。

估计大家对那几个参数的类型改犯迷糊了吧。

其实那几个类型,并不是什么新类型,都是Windows开发人员为了自己和他人编程方便,同过基本的C语言语法定义一种新的结构体,或者是共同体,再者就是枚举类型。

我知道结构体、共同体和枚举类型,很多老师是没有讲到的,因为在书的后边,很多教C的,又是很垃圾的老师,所以不会讲那么快的。

其实结构体这些数据类型,就是通过我们常用的字符、整型、浮点等数据类型构造一个比较复杂的类型而已,举个例子,就是我们知道C没有一个数据类型可以描述一个人吧,那么我构造一个是不是很方便我们编程呢。

我们可以这样构造一个struct People{int age;//年龄char sex[2];//性别int height;//身高……}我们这样定义以后就可以在我们以后的程序中利用这个数据类型了,People zhangsan;把zhangsan的身高172放到zhangsan.height中。

这样可以方便完成很多工作。

所以结构体是很简单的,还有其他的复杂数据类型也是很简单的,都是有常用的简单的类型来结合到一起构造一个复杂的而已。

这和JAVA定义类是很相似的,java定义个人类,不是可以这样的public class People{public int age;public string sex;public height;……}看起来都差不多,而且用法也很相像。

唯一的差别其实就是类可以有方法,而结构体是没有的(经过特殊处理也是可以的,这里不用考虑)。

上面是为了让大家了解下复杂数据类型的定义,罗嗦了一大堆。

下面来看下WinMain中第一个参数的类型HINSTANCE这个只是个结构体而已,实际上和HANDLE这个类型差不多,但是有一点差别,而HANDLE是这样typedef PVOID HANDLE;定义的,PVOID是什么呢,我们来看下typedef void *PVOID;说明PVOID是一个指针,初始指向空(void)。

因此可以知道句柄也是个指针而已。

看着这么复杂原来也只是指针。

这些都可以在微软的msdn上查得到的,而且很详细的那个第二个LPSTR 根据字面上的意思就知道是字符串类型了。

相关文档
最新文档