winapi — Использование Win32InputBox в переполнении стека

Я использую этот код InputBox (используя шаблоны диалогов) -> http://www.codeproject.com/Articles/13330/Using-Dialog-Templates-to-create-an-InputBox-in-C

и если я сначала вызываю функцию MessageBox (..), все работает нормально, но без них приложение зависает! (там должен быть какой-то инициализирующий код)!

На самом деле мне не нужен MessageBox (), я просто хочу использовать этот InputBox -> как я могу это реализовать?

Мои шаги:

  • включен Win32InputBox.h / .cpp
  • включенный заголовок к моему файлу
  • добавленной CWin32InputBox::InputBox(_T("Input Dialog"), _T("Please enter password"), buf, 100, false, NULL); (wchar_t buf [100] = {0};)

Мой код:

void ClassA::SomeFunction()
{
// ...
MessageBoxA(NULL, "TEST!", "TEST", MB_ICONINFORMATION); // with this ALL OK
wchar_t buf[100] = {0};
CWin32InputBox::InputBox(_T("Input Dialog"), _T("Please enter password"), buf, 100, false, NULL);
// ...
}

если приложение зависает именно эта строка в CWin32InputBox::InputBoxEx(...)

INT_PTR r = ::DialogBoxIndirectParam(param->hInstance, dlgTemplate, param->hwndOwner, (DLGPROC)DlgProc, (LPARAM)&inputbox);

Спасибо

-1

Решение

Я решил это, создав фиктивное окно прямо перед вызовом InputBox!

void ClassA::SomeFunction()
{
// ...
// create a dummy window
HWND dummyHWND = ::CreateWindowA("STATIC","dummy",WS_VISIBLE,0,0,100,100,NULL,NULL,NULL,NULL);

wchar_t buf[100] = {0};
CWin32InputBox::InputBox(_T("Input Dialog"), _T("Please enter KeyCard password"), buf, 100, false, dummyHWND);
// ...
}
0

Другие решения


По вопросам рекламы [email protected]