TO jest jakby zrobienie wlasnej procedury do reakcji na zadzerzenia kontrolek. A robi się to mniewiecej tak.
WNDPROC OldEditProc;
// obsluga komunikatow dla Edita
LRESULT CALLBACK EditProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
{
switch (Msg)
{
case WM_KEYDOWN:
switch(wParam)
{
case VK_RETURN:
MessageBox(NULL, "ble", "ble", 0);
break;
}
break;
}
return CallWindowProc(oldEditProc, hWnd, Msg, wParam, lParam);
}
//obsluga komunikatow dla okna glownego
CALLBACK LRESULT WndProc(...)
{
//...
case WM_CREATE:
HWND hEdit = CreateWindow("edit",...);
OldEditProc = (WNDPROC) SetWindowLong(hEdit, GWL_WNDPROC, (LONG) EditProc);
break;
//...
}
Jesli teraz nacisniesz ENTER w edicie to wyskoczy okienko MessageBox ;)
A zeby zamist okienka wykonalo ci nacisniecie guiziak to poprostu wysylasz komunikat klikniecia do buttona.
SendMessage(UchwytButtona, BM_CLICK, 0, 0);