1. Reading and Writing to a Serial Port:

#include <Windows.h> #include <stdio.h>

int main() { HANDLE hComm; BOOL Status; DWORD dwEventMask; char SerialBuffer[256]; DWORD NoBytesRead;

hComm = CreateFile("\\\\.\\COM3", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);

if (hComm == INVALID_HANDLE_VALUE)
{
    printf("Error in opening serial port\n");
    return 0;
}

DCB dcbSerialParams = { 0 };
dcbSerialParams.DCBlength = sizeof(dcbSerialParams);

Status = GetCommState(hComm, &dcbSerialParams);

if (Status == FALSE)
{
    printf("Error in getting serial port state\n");
    return 0;
}

dcbSerialParams.BaudRate = CBR_9600;
dcbSerialParams.ByteSize = 8;
dcbSerialParams.StopBits = ONESTOPBIT;
dcbSerialParams.Parity = NOPARITY;

Status = SetCommState(hComm, &dcbSerialParams);

if (Status == FALSE)
{
    printf("Error in setting serial port state\n");
    return 0;
}

Status = SetCommMask(hComm, EV_RXCHAR);

if (Status == FALSE)
{
    printf("Error in setting event mask\n");
    return 0;
}

while (1)
{
    Status = WaitCommEvent(hComm, &dwEventMask, NULL);

    if (Status == FALSE)
    {
        printf("Error in waiting for event\n");
        return 0;
    }

    Status = ReadFile(hComm, SerialBuffer, sizeof(SerialBuffer), &NoBytesRead, NULL);

    if (Status == FALSE)
    {
        printf("Error in reading from serial port\n");
        return 0;
    }

    printf("Received: %s\n", SerialBuffer);

    Status = WriteFile(hComm, SerialBuffer, NoBytesRead, NULL, NULL);

    if (Status == FALSE)
    {
        printf("Error in writing to serial port\n");
        return 0;
    }
}

return 0;

}

  1. Creating a Simple Window:

#include <Windows.h>

LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { const char CLASS_NAME[] = "Sample Window Class";

WNDCLASS wc = { };

wc.lpfnWndProc = WindowProc;
wc.hInstance = hInstance;
wc.lpszClassName = CLASS_NAME;

RegisterClass(&wc);

HWND hWnd = CreateWindowEx(
    0,
    CLASS_NAME,
    "Sample Window",
    WS_OVERLAPPEDWINDOW,
    CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
    NULL,
    NULL,
    hInstance,
    NULL
);

if (hWnd == NULL)
{
    return 0;
}

ShowWindow(hWnd, nCmdShow);

MSG msg = { };
while (GetMessage(&msg, NULL, 0, 0))
{
    TranslateMessage(&msg);
    DispatchMessage(&msg);
}

return 0;

}

LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_DESTROY: PostQuitMessage(0); return 0;

case WM_PAINT:
{
    PAINTSTRUCT ps;
    HDC hdc = BeginPaint(hWnd, &ps);

    FillRect(hdc, &ps.rcPaint, (HBRUSH)(COLOR_WINDOW + 1));

    EndPaint(hWnd, &ps);
}
return 0;

default:
    return DefWindowProc(hWnd, uMsg, wParam, lParam);
}

return 0;

}

  1. Drawing a Circle in a Window:

#include <Windows.h>

LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { const char CLASS_NAME[] = "Sample Window Class";

WNDCLASS wc = { };

wc.lpfnWndProc = WindowProc;
wc.hInstance = hInstance;
wc.lpszClassName = CLASS_NAME;

RegisterClass(&wc);

HWND hWnd = CreateWindowEx(
    0,
    CLASS_NAME,
    "Sample Window",
    WS_OVERLAPPEDWINDOW,
    CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
    NULL,
    NULL,
    hInstance,
    NULL
);

if (hWnd == NULL)
{
    return 0;
}

ShowWindow(hWnd, nCmdShow);

MSG msg = { };
while (GetMessage(&msg, NULL, 0, 0))
{
    TranslateMessage(&msg);
    DispatchMessage(&msg);
}

return 0;

}

LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_DESTROY: PostQuitMessage(0); return 0;

case WM_PAINT:
{
    PAINTSTRUCT ps;
    HDC hdc = BeginPaint(hWnd, &ps);

    Ellipse(hdc, 10, 10, 100, 100);

    EndPaint(hWnd, &ps);
}
return 0;

default:
    return DefWindowProc(hWnd, uMsg, wParam, lParam);
}

return 0;

}

  1. Creating a Menu in a Window:

#include <Windows.h>

LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { const char CLASS_NAME[] = "Sample Window Class";

WNDCLASS wc = { };

wc.lpfnWndProc = WindowProc;
wc.hInstance = hInstance;
wc.lpszClassName = CLASS_NAME;

RegisterClass(&wc);

HWND hWnd = CreateWindowEx(
    0,
    CLASS_NAME,
    "Sample Window",
    WS_OVERLAPPEDWINDOW,
    CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
    NULL,
    NULL,
    hInstance,
    NULL
);

if (hWnd == NULL)
{
    return 0;
}

HMENU hMenu = CreateMenu();

HMENU hFileMenu = CreateMenu();
AppendMenu(hFileMenu, MF_STRING, 1001, "New");
AppendMenu(hFileMenu, MF_STRING, 1002, "Open");
AppendMenu(hFileMenu, MF_SEPARATOR, 0, NULL);
AppendMenu(hFileMenu, MF_STRING, 1003, "Exit");

AppendMenu(hMenu, MF_POPUP, (UINT_PTR)hFileMenu, "File");

SetMenu(hWnd, hMenu);

ShowWindow(hWnd, nCmdShow);

MSG msg = { };
while (GetMessage(&msg, NULL, 0, 0))
{
    TranslateMessage(&msg);
    DispatchMessage(&msg);
}

return 0;

}

LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_DESTROY: PostQuitMessage(0); return 0;

case WM_COMMAND:
    switch (LOWORD(wParam))
    {
    case 1001:
        MessageBox(hWnd, "New File", "File Menu", MB_OK);
        break;

    case 1002:
        MessageBox(hWnd, "Open File", "File Menu", MB_OK);
        break;

    case 1003:
        DestroyWindow(hWnd);
        break;
    }
    return 0;

default:
    return DefWindowProc(hWnd, uMsg, wParam, lParam);
}

return 0;

}

  1. Creating a Dialog Box:

#include <Windows.h>

LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam); INT_PTR CALLBACK DialogProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { const char CLASS_NAME[] = "Sample Window Class";

WNDCLASS wc = { };

wc.lpfnWndProc = WindowProc;
wc.hInstance = hInstance;
wc.lpszClassName = CLASS_NAME;

RegisterClass(&wc);

HWND hWnd = CreateWindowEx(
    0,
    CLASS_NAME,
    "Sample Window",
    WS_OVERLAPPEDWINDOW,
    CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
    NULL,
    NULL,
    hInstance,
    NULL
);

if (hWnd == NULL)
{
    return 0;
}

DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), hWnd, DialogProc);

ShowWindow(hWnd, nCmdShow);

MSG msg = { };
while (GetMessage(&msg, NULL, 0, 0))
{
    TranslateMessage(&msg);
    DispatchMessage(&msg);
}

return 0;

}

LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_DESTROY: PostQuitMessage(0); return 0;

default:
    return DefWindowProc(hWnd, uMsg, wParam, lParam);
}

return 0;

}

INT_PTR CALLBACK DialogProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_COMMAND: switch (LOWORD(wParam)) { case IDOK: case IDCANCEL: EndDialog(hDlg, LOWORD(wParam)); return TRUE; } break; }

return FALSE;

}

  1. Creating a Modeless Dialog Box:

#include <Windows.h>

LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam); INT_PTR CALLBACK DialogProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { const char CLASS_NAME[] = "Sample Window Class";

WNDCLASS wc = { };

wc.lpfnWndProc = WindowProc;
wc.hInstance = hInstance;
wc.lpszClassName = CLASS_NAME;

RegisterClass(&wc);

HWND hWnd = CreateWindowEx(
    0,
    CLASS_NAME,
    "Sample Window",
    WS_OVERLAPPEDWINDOW,
    CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
    NULL,
    NULL,
    hInstance,
    NULL
);

if (hWnd == NULL)
{
    return 0;
}

CreateDialog(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), hWnd, DialogProc);
ShowWindow(hWnd, nCmdShow);

MSG msg = { };
while (GetMessage(&msg, NULL, 0, 0))
{
    if (!IsDialogMessage(hWnd, &msg))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
}

return 0;

}

LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_DESTROY: PostQuitMessage(0); return 0;

default:
    return DefWindowProc(hWnd, uMsg, wParam, lParam);
}

return 0;

}

INT_PTR CALLBACK DialogProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_INITDIALOG: return TRUE;

case WM_COMMAND:
    switch (LOWORD(wParam))
    {
    case IDOK:
    case IDCANCEL:
        EndDialog(hDlg, LOWORD(wParam));
        return TRUE;
    }
    break;
}

return FALSE;

}

  1. Creating a Simple Text Editor:

#include <Windows.h>

LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { const char CLASS_NAME[] = "Sample Window Class";

WNDCLASS wc = { };

wc.lpfnWndProc = WindowProc;
wc.hInstance = hInstance;
wc.lpszClassName = CLASS_NAME;

RegisterClass(&wc);

HWND hWnd = CreateWindowEx(
    0,
    CLASS_NAME,
    "Sample Window",
    WS_OVERLAPPEDWINDOW,
    CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
    NULL,
    NULL,
    hInstance,
    NULL
);

if (hWnd == NULL)
{
    return 0;
}

HWND hEdit = CreateWindowEx(WS_EX_CLIENTEDGE, "EDIT", "",
    WS_CHILD | WS_VISIBLE | WS_VSCROLL | ES_MULTILINE | ES_AUTOVSCROLL,
    0, 0, 0, 0, hWnd, (HMENU)IDC_MAIN_EDIT, hInstance, NULL);

ShowWindow(hWnd, nCmdShow);

MSG msg = { };
while (GetMessage(&msg, NULL, 0, 0))
{
    TranslateMessage(&msg);
    DispatchMessage(&msg);
}

return 0;

}

LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_DESTROY: PostQuitMessage(0); return 0;

case WM_SIZE:
    {
        RECT rcClient;
        GetClientRect(hWnd, &rcClient);

        HWND hEdit = GetDlgItem(hWnd, IDC_MAIN_EDIT);
        SetWindowPos(hEdit, NULL, 0, 0, rcClient.right, rcClient.bottom, SWP_NOZORDER);
    }
    return 0;

default:
    return DefWindowProc(hWnd, uMsg, wParam, lParam);
}

return 0;

}

  1. Creating a Combo Box:

#include <Windows.h>

LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { const char CLASS_NAME[] = "Sample Window Class";

WNDCLASS wc = { };

wc.lpfnWndProc = WindowProc;
wc.hInstance = hInstance;
wc.lpszClassName = CLASS_NAME;

RegisterClass(&wc);

HWND hWnd = CreateWindowEx(
    0,
    CLASS_NAME,
    "Sample Window",
    WS_OVERLAPPEDWINDOW,
    CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
    NULL,
    NULL,
    hInstance,
    NULL
);

if (hWnd == NULL)
{
    return 0;
}

HWND hComboBox = CreateWindowEx(WS_EX_CLIENTEDGE, "COMBOBOX", "",
    WS_CHILD | WS_VISIBLE | CBS_DROPDOWNLIST,
    10, 10, 200, 200, hWnd, (HMENU)IDC_MAIN_COMBOBOX, hInstance, NULL);

SendMessage(hComboBox, CB_ADDSTRING, 0, (LPARAM)"Option 1");
SendMessage(hComboBox, CB_ADDSTRING, 0, (LPARAM)"Option 2");
SendMessage(hComboBox, CB_ADDSTRING, 0, (LPARAM)"Option 3");

ShowWindow(hWnd, nCmdShow);

MSG msg = { };
while (GetMessage(&msg, NULL, 0, 0))
{
    TranslateMessage(&msg);
    DispatchMessage(&msg);
}

return 0;

}

LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_DESTROY: PostQuitMessage(0); return 0;

default:
    return DefWindowProc(hWnd, uMsg, wParam, lParam);
}

return 0;

}

  1. Creating a List Box:

#include <Windows.h>

LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { const char CLASS_NAME[] = "Sample Window Class";

WNDCLASS wc = { };

wc.lpfnWndProc = WindowProc;
wc.hInstance = hInstance;
wc.lpszClassName = CLASS_NAME;

RegisterClass(&wc);

HWND hWnd = CreateWindowEx(
    0,
    CLASS_NAME,
    "Sample Window",
    WS_OVERLAPPEDWINDOW,
    CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
    NULL,
    NULL,
    hInstance,
    NULL
);

if (hWnd == NULL)
{
    return 0;
}

HWND hListBox = CreateWindowEx(WS_EX_CLIENTEDGE, "LISTBOX", "",
    WS_CHILD | WS_VISIBLE | LBS_STANDARD,
    10, 10, 200, 200, hWnd, (HMENU)IDC_MAIN_LISTBOX, hInstance, NULL);

SendMessage(hListBox, LB_ADDSTRING, 0, (LPARAM)"Option 1");
SendMessage(hListBox, LB_ADDSTRING, 0, (LPARAM)"Option 2");
SendMessage(hListBox, LB_ADDSTRING, 0, (LPARAM)"Option 3");

ShowWindow(hWnd, nCmdShow);

MSG msg = { };
while (GetMessage(&msg, NULL, 0, 0))
{
    TranslateMessage(&msg);
    DispatchMessage(&msg);
}

return 0;

}

LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_DESTROY: PostQuitMessage(0); return 0;

default:
    return DefWindowProc(hWnd, uMsg, wParam, lParam);
}

return 0;

}

  1. Creating a Tool Bar:

#include <Windows.h>

LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { const char CLASS_NAME[] = "Sample Window Class";

WNDCLASS wc = { };

wc.lpfnWndProc = WindowProc;
wc.hInstance = hInstance;
wc.lpszClassName = CLASS_NAME;

RegisterClass(&wc);

HWND hWnd = CreateWindowEx(
    0,
    CLASS_NAME,
    "Sample Window",
    WS_OVERLAPPEDWINDOW,
    CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
    NULL,
    NULL,
    hInstance,
Write 10 Sample c++ coding for windows low level programming

原文地址: https://www.cveoy.top/t/topic/rDI 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录