Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 540
  • Last Modified:

Getting double BN_CLICKED messages in dlg...

In an application I'm working on I have a group of radio buttons. I elected to handle the messages myself, so I turned the AUTO property of these buttons off.  To handle turning the radio buttons on and off, I handle the BN_CLICKED message.  This seems to work fine, with one exception:  I'm getting 2 BN_CLICKED messages for each time I click on the radio button.  Any suggestions?
0
salamander
Asked:
salamander
  • 5
  • 5
1 Solution
 
jhanceCommented:
Yes, one is the button down message and the other is the button up message.
0
 
salamanderAuthor Commented:
So, how can I tell which is which so I can disregard one of them?
0
 
salamanderAuthor Commented:
I need an answer, sorry.
0
Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

 
interCommented:
Dear salamander,
As you probably note the BN_CLICKED message carries the following info:

idButton = (int) LOWORD(wParam);    // identifier of button
hwndButton = (HWND) lParam;         // handle of button

so if you know hwndButton for each of you buttons, at the program begining record it your defaults handle as oldButtonHandle. Then when receive BN_CLICKED :
  ignore the message if hwnButton == oldButtonHandle
  and process if hwnButton != oldButtonHandle {
    ... // processing code
    oldButtonHandle := hwnButton
  }

Does it solves your problem! (It may require other steps if you wrote in Delphi or VB)

Please notify,
Sincerely,
Igor
0
 
salamanderAuthor Commented:
Is BN_CLICKED the only solution for this?  Is it the best solution?  This just seems to be too common a situation to have no standard way of message handling.
0
 
interCommented:
Please indicate the compiler you are using, so if I know more (or specific handling)I can help you.
Thanks,
Igor
0
 
salamanderAuthor Commented:
I'm using Microsoft VC++ 5.  I'm not using MFC, just standard WIN32 API.
0
 
interCommented:
Friend,
I am mainly using Delphi 2.0. So, in about 15 minutes I can digup the source code for their library and find out how they can simply do on group of radio buttons and post C pseudo code, it may solve your problem.
If you want to add anything I am here to extend the discussion.
Igor
0
 
interCommented:
Wow!
Thats a mess but I try to explain. They provide a base that can handle any windows control. But for our problem, the easiest way can be as follows(here we cannot follow but simulate Borlands way):
1 - The idea is to use the message sending logic of the customcontrol such as radio buttons. The BN_CLICKED message is passes to the owner of the radiobuttons. So first we should create a group box.
2 - Place only radio buttons to this group box and set the id of these group boxes to 0 to N-1
3 - Override WM_COMMAND of group box we have created
4 - If the message is BN_CLICKED use switch to determine the IDs(0 to N-1) and perform the required funtion.

Unfortunately, without using an OOP approach we can not simplify more(as far as I know).

Sincerely,
Igor
0
 
salamanderAuthor Commented:
This is what I have been doing.  This does not eliminate the double BN_CLICKED messages.  I'll just use your first answer.  Respond back by answering, and I'll give you the points.
0
 
interCommented:
Ok Thanks,
If you want to add anything I have still notification check.

Sincerely,
Igor
0

Featured Post

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 5
  • 5
Tackle projects and never again get stuck behind a technical roadblock.
Join Now