Собственный EDIT элемент

Тема в разделе "WASM.WIN32", создана пользователем Zib, 25 ноя 2009.

  1. Zib

    Zib New Member

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

    Где и как его взять позицию первого отображаемого символа?