выше написано: первый символ переводишь в конец строки и печатаешь строку заново.
в первом случае не понимаю, что делает Copy; а во втором, как я думаю, строка будет выводиться до 800го пикселя по иксу в окне, а потом начинаццо с начала окна. а мне надо, чтобы она всегда бежала, причем справа налево
ну фиг с ним...
теперь таймер: наскока я понимаю из определения в справке, если в функцию
UINT SetTimer(
HWND hWnd,
UINT nIDEvent,
UINT uElapse,
TIMERPROC lpTimerFunc );
передавать
SetTimer(NULL, [все равно что],100[мс], NULL), то каждые 100 мс у меня будет посылаться сообщение WM_TIMER в WndProc, в обработчике которого код. в функции потока я вызываю SetTimer, значит, каждые 100 мс у меня строка должна двигаться вперед на 1 пиксел. так? тока у меня ничего не происходить вообще
код в обработчике:
Код:
void WndProc_OnTimer(HWND hwnd, UINT id)
{
HDC hdc=GetDC(hwnd);
GetClientRect(hwnd,&rect);
TextOut(hdc,xPos,yPos,"Hello!",6);//xPos=yPos=10 первоначально
InvalidateRect(hwnd,&rect,TRUE);
xPos++;
if(xPos>=800) xPos=0;
ReleaseDC(hwnd,hdc);
}
или я с SetTimer'ом че-то не так делаю? 1) если посылать дескриптор окна, то что тогда посылать вторым параметром? 2) если на TimerProc указатель не нулевой, то что в этой процедуре писать?
и еще: а смысл этого таймера? мне кажется, можно было это все циклом от х=0 до х=800 сделать, в который добавить какой-нибудь фор для задержки. или я неправильно понимаю все это?
и не стирает ли InvalidateRect то, что только что вывел TextOut?