求一个 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) //对没有定义处理方法的消息,系统默认处理

}

汉字不一定就是unicode编码 ,你所看到的汉字是GB2312编码

在ASCII体系下,如果系统读取字符串时某个字节的值大于161(0Xa1),并且下一个字节的值大于176(0Xb0),那么系统会认为这是一个汉字的GB2312双字节编码,然后查询码表显示汉字

比如下面这个程序,运行后会显示“中文”两个字,因为数组a的值恰恰符合GB2312编码

#include<stdio.h>

int main()

 char a[5]={214,208,206,196,0}

 printf("%s\n",a) 

 return 0

}


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存