Показать сообщение отдельно
Старый 12.02.2006, 16:01   #13
ZanoZa
Элита
 
Регистрация: 02.10.2005
Сообщений: 1,789
Написано 132 полезных сообщений
(для 252 пользователей)
Originally posted by jimon@12.2.2006, 14:00
гм например ?
Код:

//По умолчанию 10 секунд рисуем на экран
DWORD TextShow=10000;
//Выводимый на экран текст
char *Textbuf=NULL;
//Поток для рисования текста на экране
DWORD CALLBACK DoText(void *hInstance)
{
int bkmodeold;
COLORREF oldcolor;
//Запомним время начала показа
DWORD TextStart=GetTickCount();
//Берём контекст экрана
//Крутимся заданое в TextShow время
while(GetTickCount() -TextStart <=TextShow)
{
HDC ScreenDC=GetDC(0);
RECT R,Rtext;
GetClipBox(ScreenDC,&R);
//Устанавливаем цвет текста и прозрачный фон
oldcolor=SetTextColor(ScreenDC,COLORREF(0,0,255));
bkmodeold=SetBkMode(ScreenDC,TRANSPARENT);

Rtext.left=(R.right-R.left)/2; Rtext.right=Rtext.left+100;
Rtext.top=((R.bottom-R.top))/2; Rtext.bottom=Rtext.top+100;
if(Textbuf)
{
//Определяем прямоугольник для текста
DrawText(ScreenDC,Textbuf,strlen(Textbuf),&Rtext,D T_CALCRECT|DT_CENTER);
//Рисуем на экране
DrawText(ScreenDC,Textbuf,strlen(Textbuf),&Rtext,D T_CENTER);
}
SetBkMode(ScreenDC,bkmodeold);
SetTextColor(ScreenDC,oldcolor);
//Освобождаем контекст экрана
ReleaseDC(0,ScreenDC);
}
//Перерисовываем экран чтобы убрать нашу картинку
RedrawWindow(GetDesktopWindow(), NULL, NULL,
RDW_INVALIDATE |RDW_UPDATENOW |RDW_ALLCHILDREN);
return 0;
}
//Запуск потока для рисования текста на экране
ULONG Tid;
HANDLE hThread;
TextShow=10000; //Устанавливаем время показа
//Устанавливаем текст для показа
Textbuf="Sample Show Text";
hThread=::CreateThread(0,0,DoText,(void *)hInst, 0, &Tid);
::SetThreadPriority(hThread,THREAD_PRIORITY_NORMAL );
::CloseHandle(hThread);
//Остановить поток можно в любой момент
TextShow=0;
а это ч по твоему?
(Offline)