Re: Оконная процедура кнопки
От: Ed.ward Россия  
Дата: 11.11.04 19:46
Оценка:
Здравствуйте, Hyboid, Вы писали:

H>Хочу сделать кнопке собственную процедуру обработки сообщений (WM_LBUTTONDOWN). Подскажите пожалуйста, почему не работает код:


H>[code]

H>static LRESULT CALLBACK ButtProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
H>{
H> HDC dc;
H> HBRUSH brush;
H> RECT rect;
H> PAINTSTRUCT ps;

H> switch (message)

H> {

H> case WM_ERASEBKGND:

H> dc = GetDC(hWnd);
H> brush = (HBRUSH)GetStockObject(BLACK_BRUSH);
H> brush = (HBRUSH)SelectObject(dc, brush);
H> GetClientRect(hWnd, &rect);
H> FillRect(dc, &rect, 0);
H> SelectObject(dc, brush);
H> ReleaseDC(hWnd, dc);
H> return 1;
H> break;

H> case WM_PAINT:

H> dc = BeginPaint(hWnd, &ps);
H> brush = (HBRUSH)COLOR_BTNFACE+1;
H> brush = (HBRUSH)SelectObject(dc, brush);
H> GetClientRect(hWnd, &rect);
H> FillRect(dc, &rect, 0);

H> DrawEdge(dc, &rect, EDGE_RAISED, BF_TOPLEFT);

H> DrawEdge(dc, &rect, EDGE_RAISED, BF_BOTTOMRIGHT);

H> DrawText(dc, "the", -1, &rect, DT_CENTER | DT_VCENTER | DT_SINGLELINE);


H> EndPaint(hWnd, &ps);

H> break;

H> case WM_LBUTTONDOWN:

H> MessageBox(NULL, "Pressed", "Button", MB_OK); // !!!!!!!!!! — не работает
H> break;
H> }
H> return 0;H>}

Старую функцию надо бы вызывать вна те сообщения которые ты не обрабатываешь

см CallWindowProc

Ed.ward
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.