NO

Author Topic: Linking Button Click to Event  (Read 3489 times)

tbohon

  • Guest
Linking Button Click to Event
« on: April 14, 2010, 08:22:13 PM »
This is my first Windows program in Pelles C so I'm still learning (a lot) ...

I have a simple dialog defined which has two buttons and a text box.  From the .rc file the buttons are named as follows:

IDOK is labeled 'Generate'
4005 is labeled 'Exit'

The text box is named 4003 Text.

What I'm trying to get it to do is display a message in the Text box when the 'Generate' button is clicked and exit the application when the 'Exit' button is clicked.  So far I have the 'Exit' button working just fine but I'm rapidly running out of ideas (and obviously a deep enough understanding) of how to get the 'Generate' button to place the text message (a simple 'Hello there!') in the text box.

Here is what I think is the relevant part of the generated code - maybe someone can gently point the way?

Code: [Select]
        case WM_COMMAND:
            switch (GET_WM_COMMAND_ID(wParam, lParam))
            {
                /*
                 * TODO: Add more control ID's, when needed.
                 */

   case IDOK:

                break;

                case 4005:
                    EndDialog(hwndDlg, TRUE);
                    return TRUE;
            }
            break;

I'm also curious how one goes about changing the '4003' and '4005' into something equally meaningful to the compiler and yours truly ... when I click the dropdown in the resource window I only have 3 choices with no apparent way to add something (like, e.g., btnGenerate or btnExit) to remind me what it does.

Thanks as always in advance.

Tom

JohnF

  • Guest
Re: Linking Button Click to Event
« Reply #1 on: April 15, 2010, 10:00:24 AM »
I'm also curious how one goes about changing the '4003' and '4005' into something equally meaningful to the compiler and yours truly

The way I do it is to manually change the .h and .rc files.

So in the .h file,

#define ID_EXIT 4005      // EXIT button
#define ID_GENERATE 4004  // OK button
#define ID_TEXT 4003      // Text Box

And in the .rc file make the changes to reflect what you've done in the .h file.

The Generate button becomes ID_GENERATE, the text box becomes ID_TEXT and the Exit button becomes ID_EXIT.

For example.
Code: [Select]
CONTROL "Generate", ID_GENERATE, "Button", BS_DEFPUSHBUTTON|WS_TABSTOP, 56, 76, 40, 24

This will send "Hello" to the text box.
Code: [Select]
case WM_COMMAND:
    switch (GET_WM_COMMAND_ID(wParam, lParam))
    {
      case ID_GENERATE:
        SetWindowText(GetDlgItem(hwndDlg, ID_TEXT), "Hello");
        break;
     
      case ID_EXIT:
        EndDialog(hwndDlg, TRUE);
        return FALSE;
    }
    break;
   
John


tbohon

  • Guest
Re: Linking Button Click to Event
« Reply #2 on: April 15, 2010, 03:20:40 PM »
Great, John - thanks a million!  Makes perfect sense once explained.

Appreciate it!!!

Tom