系统相关
首页 > 系统相关> > Windows开发:基础知识

Windows开发:基础知识

作者:互联网

文章目录

参考

Windows编程

窗口

GUI程序中用于用户直接交互的基本元素
如:QQ的登录窗口

句柄

Windows平台有许多基本对象:窗口、文件、socket等等,为了操作这些对象,我们需要一个能引用这些对象的东西,这个东西就是句柄。句柄于资源好比遥控器于电视机。
如读文件函数ReadFile,第一个参数就是一个文件的句柄

BOOL WINAPI ReadFile(
  __in         HANDLE hFile,
  __out        LPVOID lpBuffer,
  __in         DWORD nNumberOfBytesToRead,
  __out_opt    LPDWORD lpNumberOfBytesRead,
  __inout_opt  LPOVERLAPPED lpOverlapped
);

Hello World

#include <windows.h>
LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow){
    static TCHAR szAppName[] = TEXT ("BossJue");
    HWND         hwnd;
    MSG          msg;
    WNDCLASSEX   wndclassex = {0};
    wndclassex.cbSize        = sizeof(WNDCLASSEX);
    wndclassex.style         = CS_HREDRAW | CS_VREDRAW;
    wndclassex.lpfnWndProc   = WndProc;
    wndclassex.cbClsExtra    = 0;
    wndclassex.cbWndExtra    = 0;
    wndclassex.hInstance     = hInstance;
    wndclassex.hIcon         = LoadIcon (NULL, IDI_APPLICATION);
    wndclassex.hCursor       = LoadCursor (NULL, IDC_ARROW);
    wndclassex.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH);
    wndclassex.lpszMenuName  = NULL;
    wndclassex.lpszClassName = szAppName;
    wndclassex.hIconSm       = wndclassex.hIcon;

    // 一、注册窗口类
    if (!RegisterClassEx (&wndclassex)){
        MessageBox (NULL, TEXT ("RegisterClassEx failed!"), szAppName, MB_ICONERROR);
        return 0;
    }

    // 二、创建窗口
    hwnd = CreateWindowEx (
           WS_EX_OVERLAPPEDWINDOW,
           szAppName,
           TEXT ("WindowTitle"),
           WS_OVERLAPPEDWINDOW,
           CW_USEDEFAULT,
           CW_USEDEFAULT,
           CW_USEDEFAULT,
           CW_USEDEFAULT,
           NULL,
           NULL,
           hInstance,
           NULL
           );

ShowWindow (hwnd, iCmdShow);
UpdateWindow (hwnd);

    while (GetMessage (&msg, NULL, 0, 0)){
        TranslateMessage (&msg);
        DispatchMessage (&msg);
    }
    return msg.wParam;
}

// 三、消息处理函数
LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam){
    static const LPTSTR text = TEXT("Hello,World");
    HDC hdc;
    PAINTSTRUCT ps;
    switch (message){
        case WM_CREATE:
        return (0);

        case WM_PAINT:
        hdc = BeginPaint (hwnd, &ps);
        TextOut (hdc, 0, 0, text, lstrlen(text));
        EndPaint (hwnd, &ps);
        return (0);

        case WM_DESTROY:
        PostQuitMessage (0);
        return (0);
    }
    return DefWindowProc (hwnd, message, wParam, lParam);
}

运行结果如下
在这里插入图片描述

开发基本步骤

注册窗口类

创建窗口

编写消息响应函数(重要)

标签:窗口,Windows,hwnd,wndclassex,基础知识,开发,句柄,return,NULL
来源: https://blog.csdn.net/weixin_43249758/article/details/112802722