Т.к. элемент EDIT не дает возможности отрисовывать его по своему, то я создаю свой собственный MYEDIT элемент. Инициализация класса: Код (Text): WNDCLASSA wca; HINSTANCE hInst; hInst = (HINSTANCE)GetModuleHandle(0); zerro(&wca, sizeof(wca)); GetClassInfoA(0, "EDIT", &wca); OldEdtProc = wca.lpfnWndProc; wca.lpfnWndProc = (WNDPROC)EdtProc; wca.hInstance = hInst; wca.lpszClassName = EdtCls; if (!RegisterClassA(&wca)) ExitProcess(1); Кусок EdtProc: Код (Text): LRESULT CALLBACK EdtProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { // ... // + Кусок кода отрисовки + CallWindowProcA(OldEdtProc, hWnd, EM_GETSEL, (WPARAM)&iSelStart, (LPARAM)&iSelEnd); iFirstCharPos = CallWindowProcA(OldEdtProc, hWnd, EM_GETFIRSTVISIBLELINE, 0, 0); // - Кусок кода отрисовки - // ... return CallWindowProc(OldEdtProc, hWnd, uMsg, wParam, lParam); } В 2k, XP все работает на ура. В Vista и W7 - iFirstCharPos всегда равно нулю. Где и как его взять позицию первого отображаемого символа?