[WinAPI] Wcisniecie przycisku lezacego na groupbox

0

Tworze na oknie GroupBox, potem chce na group boxie dodac przycisk wiec w przycisku 3 od konca parametr podaje hwndGroupbox1, teraz chce odebrac zdarzenie wciniecie Button1, jak to zrobic ? umiem to zrobic gdy przycisk jest na oknie.

hwndGroupbox1 = CreateWindow( TEXT("button"), 
                        "GroupBox",
                        WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_CENTER | BS_GROUPBOX, 
                        0, /* x1 */
                        60, /* y1 */
                        FWIDTH-8, /* dl */
                        110, /* wys */
                        hwnd, (HMENU) 1,
                        ((LPCREATESTRUCT) lParam)->hInstance, NULL) ;  
hwndButton1 = CreateWindow( TEXT("button"), 
                        "Button1",
                        WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_FLAT | BS_PUSHBUTTON, 
                        10, /* x1 */
                        70, /* y1 */
                        FWIDTH-28, /* dl */
                        35, /* wys */
                        hwndGroupbox1, (HMENU) 2,
                        ((LPCREATESTRUCT) lParam)->hInstance, NULL) ;  
0

Zapisz starą funkcje GroupBoxa
LPWNDPROC OldWndProc = GetWindowLong(hwndGroupbox1, GWL_WNDPROC);
Podmień na własną

SetWindowLong(hwndGroupbox1, GWL_WNDPROC, NewWndProc);

gdzie NewWndProc to nowa procedura okna, która musi również wywołać starą:

LRESULT NewWndProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
{
   switch(Msg)
   {
      ...
      case(BN_CLICKED): //button kliknięty
      ...
   }
   return CallWindowProc(OldWndProc, hWnd, Msg, wParam, lParam);
}

A jak sie pozbyłeś czernej ramki wokół pushbuttona, który leży na group boxie ?

0

A jak sie pozbyłeś czernej ramki wokół pushbuttona, który leży na group boxie ?

Tzn. u mnie jest ta ramka tyle ze nie jest wypułka (może masz inny styl po xp)
dodałem BS_FLAT.

Jeśli już rozmawiamy o stylach to nie mam pojecia jak zrobić wypukłego (lub wklęsłego)
edita, albo jest to białe pole albo białem pole ze zwykła ramką (WS_BORDER)

//edit
Czy to co napisałeś to jedyny/najprostszy sposób, bo będzie troche roboty przy tym
gdy bede miał np. groupbox w nim 3 groupboxy a w nich jakies kontrolki buttony edity itp :(

0
stabilob napisał(a)

Czy to co napisałeś to jedyny/najprostszy sposób, bo będzie troche roboty przy tym

Ani jedno ani drugie.
Pomysl o MFC.

0

Pomysl o MFC.

bawiłem sie troszeczke w MFC, potem dłuuugo w VCL , i doszedłem do winapi tego chce sie nauczyc, przynajmniej próbuje :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1