понедельник, 25 мая 2009 г.

Wii Sports

Решил вот попробывать бокс. Вроде получается, уложил противника пару раз в К.о.
Проснулся Павел и сразу же отобрал пульт. Не знаю как у него так получается, но мои результаты раза в два хуже! Ему 4, а мне 31... Будем махать руками дальше :)
Зато в боулинге я первый, пока!

Первый велопробег!

Первый раз выбрались с сыном на велосипедах на большие дороги! Раньше я только бегал рядом и подхватывал, если Павлик намеревался упасть несмотря на поддерживающие колесики. А вчера я достал и свой велосипед, стер прошлогоднюю пыль, и мы отправились в сторону полей. Почти доехали до соседнего городка! Научились держаться правой стороны дороги и останавливаться на перекрестках. Папа устал больше чем ребенок :)

вторник, 19 мая 2009 г.

Old tricks: The way to use member function for C-style callback

template <class T> class Thunk
{
BYTE asm86[12];
public:
typedef void (__stdcall T::*ThunkType)();

void InitThunk(ThunkType method, const T *pthis)
{
union uPtr { BYTE *byte; DWORD *dword; ThunkType method; };

uPtr pAsm86;
pAsm86.byte = asm86;
uPtr pFn;
pFn.method = method;

*pAsm86.byte++ = 0x58; //pop eax
*pAsm86.byte++ = 0x68; //push pthis
*pAsm86.dword++ = (DWORD)pthis;
*pAsm86.byte++ = 0x50; //push eax
*pAsm86.byte++ = 0xE9; //jmp method
*pAsm86.dword++ = (DWORD)pFn.dword - (DWORD)(this+1);

//This function is valid only on multiprocessor computers.
//FlushInstructionCache(GetCurrentProcess(), this, sizeof(*this));
}

FARPROC GetThunk() const
{
return (FARPROC)this;
}
};
class Window : private Thunk<Window>
{
LRESULT CALLBACK WindowProc(HWND,UINT,WPARAM,LPARAM);
public:
Window()
{
InitThunk((Thunk<Window>::ThunkType)WindowProc,this);
WNDCLASSEX wc;
wc.lpfnWndProc=(WNDPROC)GetThunk();
}
};

среда, 13 мая 2009 г.

Этот пост огорчит Вашего Кота :)

Вчера попал в 18 километровую пробку. По радио сказали, что произошла сильная авария. Когда доехали до места аварии, разбитых машин уже не было, но дорогу старательно отмывали от... песочка для котячих туалетов! Видимо вывалилось из грузовика. Это всеравно, что тушить Памперсы :) На обратном пути, через 3 часа, дорожная служба все еще отдирала дорогу!

P.S. "Повезло" прочувствовать аквапланинг :( на 140км/ч при перестроении. На Quattro такого никогда не было! >:-(