欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

windows API 程序入门

程序员文章站 2024-03-19 08:12:52
...

windows API 程序入门

windows API简介

Windows API 就是windows应用程序接口,是针对microsoft windows操作系统的编程接口,Windows API包括几千个可调用的函数,这些函数的准确拼法与调用语法可以在MSDN上查找。

目的

1.了解 windows操作系统应用程序开发的基本概念,win32 API函数、消息与事件驱动。
2.掌握WinMain函数的基本框架,窗口定义、窗口创建、消息循环及窗口过程函数。

步骤

1.设计一个窗口类
2.创建窗口
3.显示及刷新窗口
4.定义消息结构体,开始消息循环
5.编写窗口过程函数

一个简单的实例

#include <windows.h>
#include <stdio.h>

LRESULT CALLBACK WinSunProc(
  HWND hwnd,      // 窗口句柄
  UINT uMsg,      // 消息标识符
  WPARAM wParam,  // 第一个消息参数
  LPARAM lParam   // 第二个消息参数
);

int WINAPI WinMain(
  HINSTANCE hInstance,      // 处理当前实例
  HINSTANCE hPrevInstance,  // 上一个实例的句柄
  LPSTR lpCmdLine,          // 指挥线
  int nCmdShow              // 显示状态
)
{
	//设计一个窗口类
	WNDCLASS wndcls;
	wndcls.cbClsExtra=0;
	wndcls.cbWndExtra=0;
	wndcls.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);
	wndcls.hCursor=LoadCursor(NULL,IDC_CROSS);
	wndcls.hIcon=LoadIcon(NULL,IDI_ERROR);
	wndcls.hInstance=hInstance;     //应用程序实例句柄由WinMain函数传进来
	wndcls.lpfnWndProc=WinSunProc;
	wndcls.lpszClassName="sunxin2006";
	wndcls.lpszMenuName=NULL;
	wndcls.style=CS_HREDRAW | CS_VREDRAW;
	RegisterClass(&wndcls);

	//创建窗口,定义一个变量用来保存成功创建窗口后返回的句柄
    HWND hwnd;
	hwnd=CreateWindow("sunxin2006","窗口",WS_OVERLAPPEDWINDOW,
		0,0,600,400,NULL,NULL,hInstance,NULL);

	//显示及刷新窗口
    ShowWindow(hwnd,SW_SHOWNORMAL);
	UpdateWindow(hwnd);

	//定义消息结构体,开始消息循环
	MSG msg;
	while(GetMessage(&msg,NULL,0,0))
	{
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}
	return msg.wParam;  
}
//编写窗口过程函数
LRESULT CALLBACK WinSunProc(
  HWND hwnd,      // 窗口句柄
  UINT uMsg,      // 消息标识符
  WPARAM wParam,  // 第一个消息参数
  LPARAM lParam   // 第二个消息参数
)
{
	switch(uMsg)
	{
	case WM_CHAR:
		char szChar[20];
		sprintf(szChar,"char code is %d",wParam);
		MessageBox(hwnd,szChar,"char",0);
		break;
	case WM_LBUTTONDOWN:
		MessageBox(hwnd,"mouse clicked","message",0);
		HDC hdc;
		hdc=GetDC(hwnd);
		TextOut(hdc,0,50,"我也不知道写什么",strlen("我也不知道写什么"));
		break;
	case WM_PAINT:
		HDC hDC;
		PAINTSTRUCT ps;
		hDC=BeginPaint(hwnd,&ps);
		TextOut(hDC,0,0,"窗口",strlen("窗口"));
		EndPaint(hwnd,&ps);
		break;
	case WM_CLOSE:
		if(IDYES==MessageBox(hwnd,"是否真的结束?","message",MB_YESNO))
		{
			DestroyWindow(hwnd);
		}
		break;
	case WM_DESTROY:
		PostQuitMessage(0);
		break;
	default:
		return DefWindowProc(hwnd,uMsg,wParam,lParam);
	}
	return 0;
}

运行的效果:
windows API 程序入门
windows API 程序入门
windows API 程序入门
windows API 程序入门

相关标签: windows c语言