Hier ist ein Ausschnitt aus meinem Fenster.
Code: Select all
bool Window::show(const GUI::Application *const app)
{
WNDCLASSEXW windowClass = { 0 };
windowClass.cbSize = sizeof(WNDCLASSEXW);
windowClass.lpfnWndProc = m_WindowProc;
windowClass.hInstance = app->getInstance();
// Load standard cursor
if (!(windowClass.hCursor = ::LoadCursorW(NULL, IDC_ARROW)))
{
return false;
}
windowClass.hbrBackground = reinterpret_cast(COLOR_WINDOW + 1);
windowClass.lpszClassName = app->getAppId().c_str();
// Register window class with system
if (!::RegisterClassExW(&windowClass))
{
return false;
}
OutputDebugStringW(L"Registered window class");
// Actually create the window
m_handle = ::CreateWindowExW(
0,
windowClass.lpszClassName,
m_title.c_str(),
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT,
m_width, m_height,
NULL,
NULL,
app->getInstance(),
NULL
);
if (!m_handle)
{
DisplayErrorMessage(GetLastError());
return false;
}
OutputDebugStringW(L"Created window");
::ShowWindow(m_handle, app->getShowCmd());
OutputDebugStringW(L"ShowWindow executed, going into message loop");
MSG msg = { 0 };
while (::GetMessageW(&msg, NULL, 0, 0))
{
::TranslateMessage(&msg);
::DispatchMessageW(&msg);
}
// Cleanup resources
::UnregisterClassW(windowClass.lpszClassName, app->getInstance());
return true;
}
Warum passiert das? Sie greifen genau auf die gleichen Daten zu, und es gibt keine Änderung der Zeichenfolge, die zwischen dem ersten Anruf an app-> getAppid (). C_str () in Zeile 15 und der zweite Anruf in Zeile 28. p>
Bitte beachten Sie: Ich weiß, dass es in anderen Foren zu diesem Thema Fragen gab, aber keine dieser Antworten hat tatsächlich erklärt, warum eine Zeile über die andere über die andere gearbeitet hat, was ich mit dieser Frage suche.