跳转至

initgraph_win32

函数 · 位于 HiWindow.cpp 中第 1630 行

函数模型

HWND HiEasyX::initgraph_win32(int     w = 640,
                              int     h = 480,
                              int     flag = EW_NORMAL,
                              LPCTSTR lpszWndTitle = L"",
                              WNDPROC WindowProcess = nullptr,
                              HWND    hParent = nullptr);

作用

创建一个 Win32 绘图窗口(异于原生 EasyX 窗口)

说明

参数

  • w:绘图窗口的宽度。

  • h:绘图窗口的高度。

  • flag:窗口样式(EW_ 系列宏,默认为 EW_NORMAL)。可为以下值:

含义
EX_DBLCLKS 在绘图窗口中支持鼠标双击事件。
EX_NOMINIMIZE 禁用绘图窗口的最小化按钮。
EX_SHOWCONSOLE 显示控制台窗口。
  • lpszWndTitle:窗口标题

  • WindowProcess:窗口过程函数

  • hParent:父窗口句柄

返回值

返回新建绘图窗口的句柄。

BUG

不建议大批量创建绘图窗口,如果必要,请适当添加延时,否则可能导致未知问题。

说明

initgraph 函数 与 initgraph_win32 函数的区别

initgraph:当所有程序窗口被关闭后,程序会自动退出(结束进程)

initgraph_win32:当所有程序窗口被关闭后,程序 不会 退出(结束进程)

窗口过程函数规范

函数签名
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
注意事项

若要以默认方式处理消息,则返回 HIWINDOW_DEFAULT_PROC 即可(不要使用 DefWindowProc 函数)

示例函数
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
    switch (msg)
    {
    case WM_PAINT:
        BEGIN_TASK_WND(hWnd);
        circle(100, 100, 70);
        END_TASK();
        break;

    case WM_CLOSE:
        DestroyWindow(hWnd);
        break;

    case WM_DESTROY:
        // TODO: 在此处释放申请的内存
        PostQuitMessage(0);
        break;

    default:
        return HIWINDOW_DEFAULT_PROC;   // 标识使用默认消息处理函数继续处理

        // 若要以默认方式处理,请勿使用此语句
        //return DefWindowProc(hWnd, msg, wParam, lParam);
        break;
    }

    return 0;
}

评论