gpt4 book ai didi

C++ 创建弹出窗口的问题,取而代之的是获取其他窗口

转载 作者:太空宇宙 更新时间:2023-11-04 13:47:20 24 4
gpt4 key购买 nike

我只是想制作一个弹出窗口,稍后会显示我需要的任何信息。我遇到的问题是……当我单击按钮时,不是创建一个新的弹出窗口,而是弹出一个主程序窗口的拷贝。

这是我的 WinMain 函数中的代码:

 HINSTANCE hInstanceSaved;//I am declaring an HINSTANCE VARIABLE HERE
// SO THAT IT IS GLOBAL AND THEN I CAN USE IT WHEN I CREATE MY POPUP WINDOW

INT WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{

hInstanceSaved = hInstance;
//here I am giving the global hInstanceSaved variable the value of hInstance
// so that when I click the button, I can have this variale available to me
// so that i can use the CreateWindowEx() function

MSG Msg;
HWND hWnd;
WNDCLASSEX WndClsEx;
LPCTSTR ClsName = "ResFund";
LPCTSTR WndName = "Resources Fundamentals";

// Create the application window
WndClsEx.cbSize = sizeof(WNDCLASSEX);
WndClsEx.style = CS_HREDRAW | CS_VREDRAW;
WndClsEx.lpfnWndProc = WndProcedure;
WndClsEx.cbClsExtra = 0;
WndClsEx.cbWndExtra = 0;
WndClsEx.hIcon = LoadIcon(hInstance,
MAKEINTRESOURCE(IDI_BOOKED));
WndClsEx.hCursor = LoadCursor(NULL, IDC_ARROW);
WndClsEx.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
WndClsEx.lpszMenuName = NULL;
WndClsEx.lpszClassName = ClsName;
WndClsEx.hInstance = hInstance;
WndClsEx.hIconSm = LoadIcon(hInstance,
MAKEINTRESOURCE(IDI_BOOKED));

// Register the application
RegisterClassEx(&WndClsEx);

// Create the window object
hWnd = CreateWindowEx(0,
ClsName,
WndName,
WS_OVERLAPPEDWINDOW,
200,//CW_USEDEFAULT,//how much to the right
200, //CW_USEDEFAULT,//how much downwards
800,//CW_USEDEFAULT,//width
500,//CW_USEDEFAULT,//height
NULL,
NULL,
hInstance,
NULL);

// Find out if the window was created
if( !hWnd ) // If the window was not created,
return FALSE; // stop the application

// Display the window to the user
ShowWindow(hWnd, nCmdShow);// SW_SHOWNORMAL);
UpdateWindow(hWnd);


///CREATING THE WINDOW CLASS FOR YOUR POP WINDOW:
const char g_szClassName2[] = "invisWindow";//name of the window class
WNDCLASSEX invisWindowClass;
HWND invisHWnd;

invisWindowClass.cbSize = sizeof(WNDCLASSEX);
invisWindowClass.style = 0;
invisWindowClass.lpfnWndProc = WndProcedure;//WndProc;//WNDPROC; //WndProcedure;
invisWindowClass.cbClsExtra = 0;
invisWindowClass.cbWndExtra = 0;
invisWindowClass.hInstance = hInstance;///u might have to get this, but that isn't too hard xD
invisWindowClass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
invisWindowClass.hCursor = LoadCursor(NULL, IDC_ARROW);
invisWindowClass.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
invisWindowClass.lpszMenuName = NULL;
invisWindowClass.lpszClassName = g_szClassName2;
invisWindowClass.hIconSm = LoadIcon(NULL, IDI_APPLICATION);

RegisterClassEx(&invisWindowClass);

while( GetMessage(&Msg, NULL, 0, 0) )
{
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}

return 0;

}

当我点击按钮“这将使窗口弹出”时,我的代码是:

            case IDC_POPUP:
{


const char g_szClassName2[] = "invisWindow";
const char WndName2[] = "invisible Window";

HWND invisWindowHandle = CreateWindowEx(0,
g_szClassName2,
WndName2,
WS_OVERLAPPEDWINDOW,
200,//CW_USEDEFAULT,//how much to the right
200, //CW_USEDEFAULT,//how much downwards
800,//CW_USEDEFAULT,//width
500,//CW_USEDEFAULT,//height
NULL,
NULL,
hInstanceSaved,
NULL);

if( !invisWindowHandle ) // If the window was not created,
return FALSE; // stop the application

ShowWindow(invisWindowHandle, 3);// SW_SHOWNORMAL);
UpdateWindow(invisWindowHandle);

}
break;

现在为什么我没有得到一个新的空弹出窗口,而是我的主程序窗口的拷贝?

最佳答案

第二个窗口的窗口过程似乎有些不确定。您是否为其提供了 WndProcedure 函数?该 WndProcedure 是否处理 WM_PAINT 消息?您必须拥有 WM_PAINT 处理程序才能看到一些东西。

关于C++ 创建弹出窗口的问题,取而代之的是获取其他窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25331543/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com