Здравствуйте, BlackHeretic, Вы писали:
BH>Здравствуйте, Фил, Вы писали:
Фил>>Привет всем! Тут передо мной встала задача изменить текст сообщения в MessageBox, выдаавемой какой-нить прогой. Я отловил дескриптор окна и теперь могу поменять заголовок, а вот как нгасчет текста сообщения? Заранее благодарен.
BH>Проэнумеруй детские окна, там будет 2 статика. Один картинка, второй текст. Вот тот что текст и меняй на здоровье
Насколько я понял дескриптор месадж бокса у тебя есть, обзовем его
HWND hMsgBox;
Тогда
BOOL CALLBACK EnumChildProc(HWND hwnd, LPARAM lParam)
{
CHWNDArray* pArr = (CHWNDArray*)lParam;
pArr->Add(hwnd);
return TRUE;
}
typedef CArray<HWND,HWND> CHWNDArray;
CHWNDArray hwndArr;
EnumChildWindows(hMsgBox, EnumProc, (LPARAM)&hwndArr);
Ну и собсно тут у тебя есть массив всех деток.
Далее пробегаешь по массиву
TCHAR className[1024];
int index = -1;
for(int i=0; i<hwndArr.GetSize(); i++)
{
if(GetClassName(hwndArr[i], className, 1024))
{
if(_tcsicmp(className, _T("STATIC")==0)
{
if(!(GetWindowLong(hwndArr[i], GWL_STYLE) & SS_ICON))
{
index = i;
break;
}
}
}
}
if(index>=0)
{
SetWindowText(hwndArr[index], _T("Yesss!!!!"));
}
Ну в обчем если где есть недочет — не серчай — я это не проверял. Но работать по идее должно. Удачи