求一个 windows程序设计实例 用C写的API,要在VC++6.0下实现,只是一个小程序,能运行的,要有界面

求一个 windows程序设计实例 用C写的API,要在VC++6.0下实现,只是一个小程序,能运行的,要有界面,第1张

#include <windows.h>//windows程序设计必须罩橘要包物裤团含的头文件

LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) //回调函数的声明,将在wndclass.lpfnWndProc = WndProc中用到

//主函数即入口函数

int WINAPI WinMain (HINSTANCE hInstance, //实例句柄

HINSTANCE hPrevInstance,//上一个实例句柄

PSTR szCmdLine, //指向一个0结尾的字符串

int iCmdShow) //窗口开始的大小

{

static TCHAR szAppName[] = TEXT ("HelloWin") //将"HelloWin"赋给szAppName[]

HWND hwnd //定义一个窗口句柄,用来标识窗口

MSG msg //定义一个消息结构体,该结构体包含消息的几个数据

WNDCLASS wndclass //定义一个窗口类,该窗口类也是个结构体,下面的语句是修改结构体数据

wndclass.style = CS_HREDRAW | CS_VREDRAW //窗口绘制模式为水平重绘和垂直重绘

wndclass.lpfnWndProc = WndProc //回调函数为一开始申明的函数

wndclass.cbClsExtra = 0 //类的附加内存(额外的),不需要就设为0

wndclass.cbWndExtra = 0 //窗口的附加内存,同上

wndclass.hInstance = hInstance // 当前实例为系统纯返传递过来的实例,只能是这样,其它系统帮你做好了

wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) //加载ICON图标,NULL加载系统的图标,第二个参数使系统里面图标的一个标识

wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) //同上,不过是加载光标

wndclass.hbrBackground= (HBRUSH) GetStockObject (WHITE_BRUSH) // 设置窗口背景为白色

wndclass.lpszMenuName = NULL //因为没有菜单,所以设为空

wndclass.lpszClassName= szAppName //你为你设计的这个窗口类取个名字,在hwnd = CreateWindow(中用到

if (!RegisterClass (&wndclass)) //注册你刚刚设计好的窗口

{

//注册不成功,d出消息框,显示引号里文字

MessageBox ( NULL, //通常是窗口句柄

TEXT ("This program requires Windows NT!"), //消息框显示的文字

szAppName, //题列上的字符串

MB_ICONERROR) //消息框的按钮

return 0

}

//创建窗口

hwnd = CreateWindow( szAppName, // window class name 窗口类的名字

TEXT ("The Hello Program"), // window caption 窗口的标题

WS_OVERLAPPEDWINDOW, // window style 窗口的风格

CW_USEDEFAULT,// initial x position 默认的窗口左上角的X、Y点

CW_USEDEFAULT,// initial y position

CW_USEDEFAULT,// initial x size 默认窗口显示的宽和高

CW_USEDEFAULT,// initial y size

NULL, // parent window handle 没有父窗口

NULL, // window menu handle 没有菜单、菜单句柄为空

hInstance, // program instance handle 程序当前实例,由系统传递

NULL) // creation parameters

ShowWindow (hwnd, iCmdShow) //显示窗口

UpdateWindow (hwnd) //更新窗口

while (GetMessage (&msg, NULL, 0, 0)) //消息循环,获取消息

{

TranslateMessage (&msg) //翻译消息,

DispatchMessage (&msg) // 分发消息

}

return msg.wParam //返回消息里的一个参数,只有退出程序时该值才为0

}

//回调函数的定义

LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)

{

HDC hdc //定义设备上下文句柄

PAINTSTRUCT ps //一个结构体

RECT rect //定义一个矩形

switch (message)

{

case WM_CREATE: //窗口刚刚创建好时发送的消息

//PlaySound (TEXT ("hellowin.wav"), NULL, SND_FILENAME | SND_ASYNC) //播放声音

return 0 //返回

case WM_PAINT: //窗口重画时的消息

hdc = BeginPaint (hwnd, &ps) //得到设备上下文句柄

GetClientRect (hwnd, &rect) //得到当前客户区矩形

DrawText (hdc, TEXT ("Hello, Windows 98!"), -1, &rect,

DT_SINGLELINE | DT_CENTER | DT_VCENTER) //输出引号里文字,后面参数定义它输出的方式

EndPaint (hwnd, &ps) //释放设备上下文句柄

return 0

case WM_DESTROY: //窗口销毁时的消息

PostQuitMessage (0) //退出程序

return 0

}

return DefWindowProc (hwnd, message, wParam, lParam) //对没有定义处理方法的消息,系统默认处理

}

打造Windows信使服务程序

信使服务是Windows 2000/XP下面的一种通信服务,通过它我们可以在网上象QQ一样进行实时的交流,但和QQ不同的是信使服务不需要拥有一个号码,它只要知道对方的IP地址--如果在局域网中,只要知道对方的计算机名就可以了。我们可以利用"net send"在命令行下面发送消息,也可以通过"控制面板-管理工具-计算机管理"中的" *** 作"菜单里面的"所有任务-发送控制台消息…"来发送。接收方的计算机要求必须是Win2000/XP,因为 Win9x本身是不提供信服服务的,除非你手动启动了WinPopup.。程序编译运行后,在Windows2000下启动控制台,输入:netsend 192.168.0.10 127.0.0.1 "我的信使程序!"运行以上命令后,在Windows桌面上将d出一个对话框,其上标有"我的信使程序!"字符和相关IP信息。

一、实现方法

信使服务为大家在网络上提供了简便、快捷的'聊天方式,所以网上也有一些改进了的信使服务发送程序,使信息的发送可以按照自己的意愿来进行而不受微软提供的"net send"所限制。如果你经常上网,也许会收到通过信使服务发来的广告或者其他莫名其妙的信息,而在"信使服务"窗口中所显示出来的发送方的计算机名或者IP地址和你自己的竟然一样。如果你遇到过这种情况,那么你想不想知道这种改进了的信使服务发送程序是怎么实现的呢?

本实例将要带你去剖析一下Windows的信使服务,我们将从一个程序员的角度来看看这个信使服务发送程序是如何实现的。其实实现信使服务的整个过激岩程很简单,我们只需要调用一个API函数:

NET_API_STATUS NetMessageBufferSend(

LPWSTR servername,

LPWSTR msgname,

LPWSTR fromname,

LPBYTE buf,

DWORD buflen

)

其中该函数的参数说明如下:

servername:计算机名,该函数将在指定的这个计算机上面执行。如果为NULL,则表示为本地计算机,通常我们都将其设置为NULL。

msgname:目标计算机的名字或者IP地址。

fromname:源计算机的名字或者IP地址。

buf:指向一个信息缓冲区的指针,在这里你可以填上你想发送的信息。要注意的是,这个参数用的是Unicode编码。

buflen:上述信息缓冲区中的字节亩铅乎数。

现在函数已经介绍完了,通过这个函数我们可以发现如果想实现匿名的信使服务实在是太简单--只需要在fromname中填上一个假冒的计算机名或者IP地址就行了。下面给出一个实际例子,在这个程序中,我们从命令行参数接受目标计算机和源计算机名字(IP地址),同时我们还可以设定信息发送的次数。

 迅悉  二、编程步骤

1、启动Visual C++6.0,新建项目netsend,选择控制台模式

2、在项目中添加新文件netsend.c

3、添加代码,编译运行程序。

三、程序代码

#define _UNICODE

#define UNICODE

#include

#include

#include

#include

#include

#include

#include

#pragma comment(lib,"netapi32.lib")

int wmain(int argc, wchar_t *argv[])

{

int count

wchar_t *wdest, *wfrom, *buffer,*wtarget

DWORD dwReturn

if((argc 5))

{

printf("Usge: %S [Count] ",argv[0])

printf("Count: Count means number of times to send message,default is 1. ")

return 0

}

wdest = argv[1]//目标计算机

wfrom = argv[2]//源计算机

buffer = argv[3]//发送的信息

count = _wtoi(argv[4])//发送次数,缺省为1次

if(count ==0)

count = 1

printf("count = %d ",count)

dwReturn = NetMessageBufferSend(NULL, wdest, wfrom,

(LPBYTE)buffer, 2*lstrlen(buffer))//因为buffer是Unicode编码,所以需要乘以2

if(dwReturn == NERR_Success)

{

printf("Send OK!")

while(count1)

{

NetMessageBufferSend(

新手做Windows应用程序开发,这里推荐用C#来进行开发。C#对控件有很好的封装,且开发环境是可视化图形界面,前台是类似于PPT直接拖拽控件到程序界面,然后再在后台写逻辑就可以,极大的简化了开发流程,大大降低了开发门槛,所以十分适合新手入门。

这里我就新手如何用C#去做window应用程序开发的一个过程来详细阐述一下:

IDE

个人建议微软的编程语言最好是安装VisualStudio。

.NET

库一般电脑装系统都是装好的,然后你安装VisualStudio的时候会根据你得IDE版本可能会安装更新的版本,这里需要注意一下,在开发的时候若是选择了高版本的

.NET

然后程序放在低版本可能会运行不了。个人建议用.NET3.5。

新建项目

有了IDE之后就可以开始开发程序了,我们打开VisualStudio,如果是第一次打开可能需要半个小时左右进行初始化。打开后新建项目:

如上图红色标记处可以新建项目,也可以在菜单栏文件处新建项目:

新建项目的时候注意选择:VisualC#然后选择Windows,再在右边选择Windows窗体应用程序:

改好你的项目名,点击右下角确认,这样你就已经开发好了自己的第一个window桌面程序了,这个程序是可以运行的,知识他暂时没有任何的界面和功能,他能运行且能显示界面这都是

.NET

在背后默默的给你封装好的,他帮你做了很多工作,下面你可以添加自己需要的空间和后台逻辑。

编写自己的逻辑

点击IDE左边的工具箱,然运贺仔后点击右边的小三角,选择停靠

这样所有的控件都在左边,你只需要弄清楚每个控件是干嘛的就可以了。这里我讲一下最常用的几个吧:

Button:按钮,可以点击的

Label:标签,可以显示文字

TextBox:输入框

以上三个是用的最多的,我们只需要将需要的控件点击选中并按住鼠标拖动至我们的界面上就可以了:然后在右下角你可以针对每个控件去设置他的属性和事件绑定(button的点击事件可以直接双击button控件,IDE会直接跳转至该事件的代码编写区):

前台页面设置好后旁汪,我们可以按“F7”进入后台代码页进行逻辑编写。我这里就演示一下在输入框中输入字符并且点击按钮后d出来我输入的内容的提示:

其中textbox1和button1都是系统自动给TextBox和Button空间取的名字(ID)这个在你控件多了的时候他是不能重复的,你可以在属性修改项中修改对应控件Name属性。

我们看一下运行结果:

我再输入框中输入“我爱你”点击确定后d框提示“我爱你”,简单的逻辑已经实现。一个简单的window应用程序已经开发OK,你可以将这个程序(

.exe

文件,在debug文件下)给到别人去使用是没有问题的。

当然,我在这里讲的只是C#开发Windows应用程序的简单过程,要想做出功能丰富强大的Windows应用程序还需要去了解各空控件的功能和用法,还有后台逻辑怎么去编写,数据库怎么去链接,这些都是很深很广的知识,需要你在不断的学习和使用中去提升。

希望我的回答对您有帮助,谢谢~

Windows桌面应用程序开发,首选当然是C#了,不管是开发效率还是平台兼容性来说,都是最好的,其次可以考虑Delphi开发工具,学习成本不高,效率也不错,最后实在没有编程基础的话,可以考虑使用易语言,纯粹中文编程,容易入门也易掌握,下面我分别简单介绍一下,感兴趣的朋友可以尝试一下:

01

C#

这是微软自主设计研发的拍袜一款编程语言,目前在Windows平台下有着广泛的使用率和普及率,不管是桌面开发还是动态网页开发,C#无疑是最合适也是效率最高的,只需简单拖拽控件、编辑属性,就可快速创建一个应用,支持各种主流数据库开发,只要你有一定的编程基础,学习来说,非常容易,很好入门,但在跨平台性方面有一些欠缺:

02

Delphi

这是Windows平台下一个非常著名的开发工具,在早期的Windows桌面开发中,Delphi一直占据着非常重要的位置,对于初学者使用来说,不需要掌握太多的编程基础,只需简单拖拽控件,设计属性,就可快速创建一个桌面应用,不管是开发效率,还是编译效率都非常高,而且支持数据库开发,不过随着C#的兴起,Delphi的使用范围逐渐缩小,目前主要集中在一些中小型个人应用和企业的老项目上:

03

易语言

使用易语言开发桌面应用程序,应该是下下之策了,这种方法适合于没有任何编程基础,而又对英文不熟悉的开发人员,纯粹基于中文的编程方式和思想,对于国人来说,非常容易接受和学习,可以快速开发一个桌面应用,但在目前大的环境和主流思想下,易语言的应用范围很局限,很少被企业采用,而且本身属于付费产品,难以推广:

目前,就分享这3种适合新手的Windows应用程序开发语言或工具吧,对于新手学习使用来说,完全够用了,比较流行,也是主流的是C#,只要你有一定的编程基础,熟悉一下使用过程,很快就能掌握的,当然,考虑到跨平台,可能Qt,Electron等更合适,网上也有相关资料和教程,介绍的非常详细,感兴趣的话,可以搜一下,希望以上分享的内容能对你有所帮助吧,也欢迎大家评论、留言进行补充。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12397008.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存