C ++和创建弹出窗口,让其他的窗口,而不是问题
问题说明
我只是试图让一个弹出窗口,那以后会显示我需要它的任何信息。我遇到的问题是不是创建一个新的弹出窗口,当我按一下按钮......,我的主程序窗口的副本弹出。
I am simply trying to make a pop up window, that later on will display whatever information i need it to. The issue I am having is... instead of creating a new popup window when I click the button, a copy of my main program window pops up.
下面是我WinMain函数的code:
Here is the code in my WinMain Function:
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;
}
在code我有,当我点击按钮这将使窗口弹出是:
the code I have for when I click the button "which will make the window pop up" is:
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;
现在为什么我没有得到一个新的空弹出窗口,而是我的主程序窗口的副本?
Now why am I not getting a new empty popup window but rather a copy of my main program window?
正确答案
有似乎是关于第二个窗口的窗口过程一定的不确定性。你有没有为它提供一个WndProcedure功能?这是否WndProcedure处理WM_PAINT消息?你必须有WM_PAINT处理,所以你可以看到一些东西。
There seems to be some uncertainty about the window procedure for the 2nd window. Did you provide a WndProcedure function for it? Does that WndProcedure handle the WM_PAINT message? You have to have the WM_PAINT handler so you can see something.
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /reply/detail/tanhcfjgje
-
YouTube API 不能在 iOS (iPhone/iPad) 工作,但在桌面浏览器工作正常?
it1352 07-30 -
iPhone,一张图像叠加到另一张图像上以创建要保存的新图像?(水印)
it1352 07-17 -
保持在后台运行的 iPhone 应用程序完全可操作
it1352 07-25 -
使用 iPhone 进行移动设备管理
it1352 07-23 -
在android同时打开手电筒和前置摄像头
it1352 09-28 -
扫描 NFC 标签时是否可以启动应用程序?
it1352 08-02 -
检查邮件是否发送成功
it1352 07-25 -
Android微调工具-删除当前选择
it1352 06-20 -
希伯来语的空格句子标记化错误
it1352 06-22 -
Android App 和三星 Galaxy S4 不兼容
it1352 07-20