C ++创建弹出窗口

时间:2014-08-15 16:03:04

标签: 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函数中,还有其他窗口的信息? / p>

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

2 个答案:

答案 0 :(得分:2)

在main()和主窗口一起注册窗口。并且在WndProc的情况下调用CreateWindowEx()。

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

如果你的意思是另一个窗口,例如设置窗口,你应该使用DialogBoxes。

P.S。如果你是俄罗斯人,那么我强烈推荐由Yuri Shchupak撰写的关于俄语的“Win32 API。有效应用程序开发”一书

答案 1 :(得分:1)

应该在wndProc的case语句中创建新窗口,用于处理按钮单击。