Код: Выделить всё
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;
}
Почему это происходит? Они получают доступ точно одинаковые данные, и нет никакой изменения строки, выполненной между первым вызовом, к app-> getAppid (). C_str () в строке 15 и второй вызов в строке 28.
Обратите внимание: я знаю, что были вопросы на других форумах, связанных с этой темой, но ни один из этих ответов не объяснил, почему одна строка работала над другой, что я ищу с этим вопросом.
Подробнее здесь: https://stackoverflow.com/questions/649 ... ess-string
Мобильная версия