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

Windows——API入门

程序员文章站 2024-03-19 08:11:58
...

学习目标:

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


参考书目:

《Windows程序设计》(charle petzold著)、《深入浅出MFC》(侯俊杰著)、《VC++深入讲解》(孙鑫编著)


学习目的

写第一个基于windows API 的基于窗体、消息循环、事件驱动的 Windows C语言风格的Windows 程序。

代码

#include <windows.h>
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);//回调函数;
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	switch (message)
	{
	case WM_LBUTTONDOWN:
		MessageBox(hwnd, TEXT("请不要随意点击!"), TEXT("鼠标左键按下"), MB_OK);
		break;
	case WM_PAINT:
		HDC adc;
		PAINTSTRUCT ps;
		adc = BeginPaint(hwnd, &ps);
		TextOut(adc, 20, 20, L"Windows API_test 网络编程", 21);
		EndPaint(hwnd, &ps);
		return 0;
	case WM_DESTROY:
		PostQuitMessage(0);
		return 0;
	}
	return DefWindowProc(hwnd, message, wParam, lParam);
}
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrev, LPSTR lpCmdLine, int nCmdShow)
{
    WNDCLASS wndclass;//窗口类;
    MSG msg;
    wndclass.style = CS_HREDRAW | CS_VREDRAW;
    wndclass.lpfnWndProc = WndProc;
    wndclass.cbClsExtra = 0;
    wndclass.cbWndExtra = 0;
    wndclass.hInstance = hInstance;
    wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
    wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
    wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
    wndclass.lpszMenuName = NULL;
    wndclass.lpszClassName = L"Window窗口创建";  //窗口类名称

    if (!RegisterClass(&wndclass))//注册窗口;
    {
        MessageBox(NULL, L"创建失败", L"error", MB_OK);
        return 0;
    }

    HWND hwnd = CreateWindow(    //创建窗口,返回句柄;
        L"Window窗口创建",  //1.窗口类名称
        L"window窗口创建",  //2.窗口标题
        WS_OVERLAPPEDWINDOW, //3.窗口风格
        CW_USEDEFAULT,  //4.窗口左上角相对于屏幕左上角的初始x坐标
        CW_USEDEFAULT,  //5.窗口左上角相对于屏幕左上角的初始y坐标
        CW_USEDEFAULT,  //6.窗口宽度
        CW_USEDEFAULT,  //7.窗口高度
        NULL,           //8.一个子窗口的父窗口的句柄,或隶属窗口的拥有者窗口的句柄,若没有拥有者窗口或者父窗口,置为NULL;
        NULL,           //9.选单句柄
        hInstance,      //10.创建窗口对象的应用程序的实例句柄
        NULL            //11.创建窗口的额外参数
        );

    ShowWindow(hwnd, nCmdShow);//显示窗口;
    UpdateWindow(hwnd);//更新窗口;

    while (GetMessage(&msg, NULL, 0, 0)) //消息循环;
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    return msg.wParam;
}

Windows——API入门
Windows——API入门

总结

提示:

  1. 用VS进行编译的时候,需要改变project属性
    Windows——API入门
    Windows——API入门
    Windows——API入门
    否则会报错
相关标签: 学习小结