Подскажите, плз. как получить тексты надписей, которые отображаются на кнопках при вызове стандартного MessageBox. Например, для русской версии Windows:
IDYES — "Да", IDNO — "Нет", IDCANCEL — "Отмена", и т.д.
Замечание: без реального вызова MessageBox.
Здравствуйте, checkpsn, Вы писали:
C>Подскажите, плз. как получить тексты надписей, которые отображаются на кнопках при вызове стандартного MessageBox. Например, для русской версии Windows: C>IDYES — "Да", IDNO — "Нет", IDCANCEL — "Отмена", и т.д. C>Замечание: без реального вызова MessageBox.
Такая же проблема.
Ни у кого за год идей не появилось?
Здравствуйте, remark, Вы писали:
R>Здравствуйте, checkpsn, Вы писали:
C>>Подскажите, плз. как получить тексты надписей, которые отображаются на кнопках при вызове стандартного MessageBox. Например, для русской версии Windows: C>>IDYES — "Да", IDNO — "Нет", IDCANCEL — "Отмена", и т.д. C>>Замечание: без реального вызова MessageBox.
R>Такая же проблема. R>Ни у кого за год идей не появилось?
Сходу придумалось это — проверил, работает вроде кругом.
Здравствуйте, remark, Вы писали:
R>Здравствуйте, checkpsn, Вы писали:
C>>Подскажите, плз. как получить тексты надписей, которые отображаются на кнопках при вызове стандартного MessageBox. Например, для русской версии Windows: C>>IDYES — "Да", IDNO — "Нет", IDCANCEL — "Отмена", и т.д. C>>Замечание: без реального вызова MessageBox.
R>Такая же проблема. R>Ни у кого за год идей не появилось?
R>
Есть тут статья "MessageBox и немного фантазии", ставим хук и поехали из хуковой процедуры
HWND hwnd=GetDkgIten(hwndMsgBox,IDOK);
TCHAR sz[51];
GetWindowText(hwnd,sz,50);
Здравствуйте, Carc, Вы писали:
C>Здравствуйте, remark, Вы писали:
R>>Здравствуйте, checkpsn, Вы писали:
C>>>Подскажите, плз. как получить тексты надписей, которые отображаются на кнопках при вызове стандартного MessageBox. Например, для русской версии Windows: C>>>IDYES — "Да", IDNO — "Нет", IDCANCEL — "Отмена", и т.д. C>>>Замечание: без реального вызова MessageBox.
R>>Такая же проблема. R>>Ни у кого за год идей не появилось?
R>> C>Есть тут статья "MessageBox и немного фантазии", ставим хук и поехали из хуковой процедуры C>HWND hwnd=GetDkgIten(hwndMsgBox,IDOK); C>TCHAR sz[51]; C>GetWindowText(hwnd,sz,50);
Здравствуйте, Conr, Вы писали:
C>Здравствуйте, remark, Вы писали:
R>>Здравствуйте, checkpsn, Вы писали:
C>>>Подскажите, плз. как получить тексты надписей, которые отображаются на кнопках при вызове стандартного MessageBox. Например, для русской версии Windows: C>>>IDYES — "Да", IDNO — "Нет", IDCANCEL — "Отмена", и т.д. C>>>Замечание: без реального вызова MessageBox.
R>>Такая же проблема. R>>Ни у кого за год идей не появилось?
C>Сходу придумалось это — проверил, работает вроде кругом.
C>
Вот это примерно типа того, чего хотелось бы... но попахивает чёрной магией
Это документировано? Откуда 800? Откуда "user32"? На каких ОС работает? Есть гарантии, что не изменится?
R>Вот это примерно типа того, чего хотелось бы... но попахивает чёрной магией R>Это документировано? Откуда 800? Откуда "user32"? На каких ОС работает? Есть гарантии, что не изменится?
Нее, это магия белая, пусть и недокументированная 800 — это ID из StringTable, которая лежит в user32.dll — стандартной dll, присутствующей на всех системах, начиная с win95 + она всегда загруженная (в общем случае). Насчет изменится — в висте работает, проверил
а ты пробовал с английской версией ОС под русским MUI?
я, наример, не представляю, как MUI в систему интегрируется так, чтобы еще и переключать языки можно было. по-хорошему надо отдельную DLL с языковыми ресурсами подключать, но как это у мелкомягких решено — не разбирался. если с DLL, то ты рискуешь от user32 получить строки на исходном языке системы
Здравствуйте, NightBlade, Вы писали:
NB>а ты пробовал с английской версией ОС под русским MUI? NB>я, наример, не представляю, как MUI в систему интегрируется так, чтобы еще и переключать языки можно было. по-хорошему надо отдельную DLL с языковыми ресурсами подключать, но как это у мелкомягких решено — не разбирался. если с DLL, то ты рискуешь от user32 получить строки на исходном языке системы
Про это я сразу подумал. Но я же писал, что придумалось сходу А вот, что получилось после небольших размышлений:
в pfnMB_GetString нужно передавать идентификатор кнопки минус еденица, то есть для получения текста для IDOK передать нужно (IDOK-1)
Вот только не уверен, что это будет работать на win9x, но думаю сейчас это уже некритично. на 2003, XP c MUI и висте работает.