C++ 创建弹窗

标签 c++ api popup window

我想在我点击程序主窗口上的按钮时显示一个弹出窗口。我到处寻找弹出窗口示例,大多数答案只是向我展示了如何制作一个窗口,但是我的应用程序中已经有一个主窗口。

基本上我遇到的困难是知道在哪里放置新窗口类和弹出窗口的代码(因为我希望弹出窗口具有与主窗口不同的属性)。它也应该在 WinMain 函数中还是应该在 CALLBACK WndProcedure 部分中的一种情况下?

我的一些窗口代码是:

WNDCLASSEX wc;
HWND hwnd;
MSG Msg;

wc.cbSize        = sizeof(WNDCLASSEX);
wc.style         = 0;
wc.lpfnWndProc   = WndProc;
wc.cbClsExtra    = 0;
wc.cbWndExtra    = 0;
wc.hInstance     = hInstance;
wc.hIcon         = LoadIcon(NULL, IDI_APPLICATION);
wc.hCursor       = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wc.lpszMenuName  = NULL;
wc.lpszClassName = g_szClassName;
wc.hIconSm       = LoadIcon(NULL, IDI_APPLICATION);

if(!RegisterClassEx(&wc))
{
    MessageBox(NULL, "Window Registration Failed!", "Error!",
        MB_ICONEXCLAMATION | MB_OK);
    return 0;
}

hwnd = CreateWindowEx(
    WS_EX_CLIENTEDGE,
    g_szClassName,
    "The title of my window",
    WS_OVERLAPPEDWINDOW,
    CW_USEDEFAULT, CW_USEDEFAULT, 240, 120,
    NULL, NULL, hInstance, NULL);

if(hwnd == NULL)
{
    MessageBox(NULL, "Window Creation Failed!", "Error!",
        MB_ICONEXCLAMATION | MB_OK);
    return 0;
}

ShowWindow(hwnd, nCmdShow);
UpdateWindow(hwnd);

我只是不确定把它放在哪里......它应该放在按下按钮时激活的代码中,还是应该与其他窗口的信息一起留在 WinMain 函数中?

我希望你能理解我的困境,我对编程有点陌生。

最佳答案

在 main() 中与主窗口一起注册窗口。并且在 WndProc 的 case 语句中调用 CreateWindowEx()。

但我不知道如何制作弹出动画。我可以想象代码应该放在 WM_CREATE 的某个地方,但我不知道。

如果您的意思只是另一个窗口,例如设置窗口,您应该使用对话框。

附言如果你是俄罗斯人,那么我强烈推荐 Yuri Shchupak 的俄语版《Win32 API. Effective Application Development》一书

关于C++ 创建弹窗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25329905/

相关文章:

javascript - 小书签如何避免弹出窗口拦截器

C++ 非直接包含场景

c - Lua API 计算变量名而不是值

java - java 7u45之后是否所有小程序用户都会受到弹窗的影响?

javascript - shopify 和 instafeed.js 兼容性问题

api - Foursquare field /搜索不返回完整类别列表

Android:从选项菜单打开自定义弹出对话框

c++ - 成员和成员函数的歧义部分模板特化

c++ - 确定 C++ 类是否具有私有(private)析构函数

c# - 如何将 C++/CX 结构传递给纯 C++ 方法?