Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.12.2012, 21:09   #11
Nuklon
Форумчанин
 
Аватар для Nuklon
 
Регистрация: 05.04.2012
Сообщений: 134
По умолчанию

Код:
LRESULT CALLBACK  EditProc(HWND edit, UINT msg, WPARAM wParam, LPARAM lParam);
WNDPROC   edit_proc  = NULL;

// в инициализации диалога
WM_INITDIALOG:
HWND wnd = GetDlgItem(hDlg, IDC_EDIT3);
#ifdef _WIN64
edit_proc = (WNDPROC) SetWindowLongPtr(wnd, GWLP_WNDPROC, (LONG_PTR)EditProc);
#else 
edit_proc = (WNDPROC) SetWindowLong(wnd, GWL_WNDPROC, (LONG)EditProc);
#endif
//


LRESULT CALLBACK EditProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam){
    switch(msg){
	case WM_CHAR:
        if(LOWORD(wParam) == VK_RETURN){
               
              // вот здесь обработка 

              PeekMessage(NULL, hwnd, WM_KEYFIRST, WM_KEYLAST, PM_REMOVE);
              return 0;
        }
        break;
    }
    return CallWindowProc(edit_proc, hwnd, msg, wParam, lParam);
}
Nuklon вне форума Ответить с цитированием
Старый 03.12.2012, 11:21   #12
enjo
Пользователь
 
Регистрация: 14.12.2009
Сообщений: 47
По умолчанию

Я так понимаю, что в EditProc передаем дескриптор еллемента, то есть едита, а как теперь обратиться к дескриптору окна.
Потому как не работтает следующее:
Код:
LRESULT CALLBACK EditProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam){
    switch(msg){
	case WM_CHAR:
        if(LOWORD(wParam) == VK_RETURN){
               
              int sl1max = GetDlgItemInt(hwnd, IDC_EDIT3, NULL, FALSE);
	      SendDlgItemMessage(hwnd,IDC_SLIDER1,TBM_SETRANGE,1,MAKELONG(1,sl1max));

              PeekMessage(NULL, hwnd, WM_KEYFIRST, WM_KEYLAST, PM_REMOVE);
              return 0;
        }
        break;
    }
    return CallWindowProc(edit_proc, hwnd, msg, wParam, lParam);
}

Последний раз редактировалось enjo; 03.12.2012 в 11:48.
enjo вне форума Ответить с цитированием
Старый 03.12.2012, 12:26   #13
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

Ответьте себе на вопрос каков первый аргумент у WNDPROC функций.
waleri вне форума Ответить с цитированием
Старый 03.12.2012, 12:37   #14
enjo
Пользователь
 
Регистрация: 14.12.2009
Сообщений: 47
По умолчанию

дескриптор едита... а десриптор окна с помощью чего можно передать?

Последний раз редактировалось enjo; 03.12.2012 в 12:46.
enjo вне форума Ответить с цитированием
Старый 03.12.2012, 13:25   #15
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

GetParent() вам нужен. Только я не понял, зачем вы меняли WNDPROC у edit а не у диалога?
waleri вне форума Ответить с цитированием
Старый 04.12.2012, 16:37   #16
enjo
Пользователь
 
Регистрация: 14.12.2009
Сообщений: 47
По умолчанию

А разве есть разница для текущей задачи?

Извините, я недавно работаю с win api.
enjo вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
считка массива из файла aank10 C++ Builder 0 10.10.2011 18:43
Получить адрес ячейки до нажатия Enter Sergey112233 Microsoft Office Excel 6 23.08.2011 20:02
Проверка нажатия Enter и переход на метку не работает gefest58 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 01.04.2011 22:03
обработка нажатия ENTER(#13): что-то странное... D][mon Помощь студентам 0 13.10.2010 19:12
отловить нажатие клавиши в ячейке (до нажатия enter) loginrl103 Microsoft Office Excel 3 07.08.2009 15:10