|
Sorry, I spaced -- static controls don't support events.
In general:
MFC supports message cracking; there is a tool built in to visual studio to help with this or you can manually modify the message map macros.
win32 makes you do some more work on your own. In general, most controls (and certainly the system controls -- static, edit, button, etc) will notify you via a WM_COMMAND message sent to your WndProc. See the WM_COMMAND docs in the msdn, but basically you check WPARAM for the window identifier, LOWORD(LPARAM) for your child window handle, and HIWORD(LPARAM) for your notification code. See the docs for the various controls to see lists of the notification codes. Or just grab them from the headers -- seach for, eg, EN_CHANGE (code for an edit control changing).
http://windowssdk.msdn.microsoft.com/en-us/library/ms649779.aspx
earl
|
|
|
|
|
It's not totally clear what you mean by events. As earl says, there isn't anything interesting that a static control would be doing to warrant it sending notifications to the parent window.
However, if you want to handle messages going to the control yourself, WM_MOUSEMOVE, WM_LBUTTONDOWN etc etc, you can subclass the window using SetWindowLong with GWL_WNDPROC and specify your own window procedure that would receive the messages.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnwui/html/msdn_subclas3.asp[^]
In MFC you would just inherit off the appropriate base class (CStatic etc) and the framework handles the subclassing for you and you just have to use the IDE to add the messages you are interested in handling to the message map.
|
|
|
|
|
Hi,
I have a project using MFC ( win32 but use mfc in static library)
and would like to use a code that not use mfc(win32). Anyone know the best way to modify it?
thanks in advance
farshad
|
|
|
|
|
Can you be a little more specific about what you are trying to do?
If you decide to become a software engineer, you are signing up to have a 1/2" piece of silicon tell you exactly how stupid you really are for 8 hours a day, 5 days a week
Zac
|
|
|
|
|
Most of the MFC classes are a wrapper for win32 functions or doing a set of actions that can be performed with a number if win32 functions.
on using win32, you may have to play with handles instead of classes and its pointer.
It is depends on your project and amount of MFC code used inside project. Anyway there's a countable effort to make an MFC application to win32 application.
e.g there is CWnd::FindWindow function and FindWindow win32 function
the differnce is that. CWnd FindWindow returns a static CWnd* (pointer) and FindWindow API return an HWND. in win32 you may have to add more parameters for corresponding API.
Sit with MSDN and visual studio. If you are an expert or average knowledge in win32 and MFC, the conversion will be more fast. Using static library and shared library is not a big deal. in the initialization, there we need to call Invoke static library instead for controls. finally it matters in the file size and less number of dependency.
SaRath.
"It is your attitude, not your aptitude, that determines your altitude - Zig Ziglar."
<blink>My Blog | Understanding State Pattern in C++
|
|
|
|
|
My project have two dialog box.
If I want to call AddString function from parent dialog for add string of List Box Control that in child dialog.
How I write the code?
|
|
|
|
|
is the child dailog is a modal dialog?
there you can do this in 2-3 ways.
1. Provide an interface from child dialog(public function) to add the string to list box. Inside that function call "Addstring" function of the required list box. or keep it in data array and update to list box whenever needed(recommended)
2. Return the handle of the list box on calling an interface (public function)provided. ( not recommended)
3. Define a custom message handler in child dialog. pass the string in on calling PostMessage or SendMessage pass the string (pointer) in WPARAM or LPARAM (casting may requried). Inside the message handler cast the passed parameter to string pointer and update the listbox. for message sending in this case SendMessage is good because post message will return on posting the command. it will not wait till the update complete. so the pointer passing to the function may get invalid. ( this is too not recommended)
SaRath.
"It is your attitude, not your aptitude, that determines your altitude - Zig Ziglar."
<blink>My Blog | Understanding State Pattern in C++
|
|
|
|
|
hi
i have downloaded a project from Codeproject,for serial port communication.
http://www.codeproject.com/com/CompCateg2.asp[^]
In SerialCommunications Classes i have added function Ready() and function Run(),When Ready function is called i am getting "ok" reply from instrument,then i call Run() function, it takes 5 to 10 mintues to complete the run, so i have to wait,bec of that UI freez,for that i want to create a worker thread,so that worker thread will check for the reply from instrument,after some time..how to dot it..?.In Ready() i am calling On_FireSend()..should i need to in Run() also..?
Thanks in before
James
-- modified at 9:57 Wednesday 5th July, 2006
|
|
|
|
|
Cedric answered your question below. CreateThread
earl
|
|
|
|
|
|
|
hi sarath..when u have checked..it did not complete my question,i was just checking whether..URL link is correctly added or not..pls help me..if u have any idea...
James
-- modified at 10:09 Wednesday 5th July, 2006
|
|
|
|
|
What's the problem?
Somethings seem HARD to do, until we know how to do them.
_AnShUmAn_
|
|
|
|
|
Well done!!
... she said you are the perfect stranger she said baby let's keep it like this... Dire Straits
|
|
|
|
|
hi marcdev..when u have checked..it did not complete my question,i was just checking whether..URL link is correctly added or not..pls help me..if u have any idea...
|
|
|
|
|
Just start a worker thread as you said in which you manage the communication with your device. Communication with the UI can be done through messages.
I don't really understand your problem, so I cannot give a more specific answer.
Cédric Moonen
Software developer
Charting control
|
|
|
|
|
pls download the sample from URL,i have added to funtions Ready() and Run(),in Ready
if (TRUE == m_Serial.IsOpen())
{
m_Serial.Write(buf, sizeof(buf));
Fire_OnSend();
return S_OK;
}
at client slide i am getting "ok" reply from instrument..
Next In Run()..i do the same but..i will get "ok" reply after 5 to 10 mintues..bec.instrument..5 to 10 min to Run..So in Run() i want to create an worker thread..so that this thread will pool ..for."ok" reply..this is my logic..i want know ,how to implement it..
Thanks in before
james
|
|
|
|
|
|
Hi
Question, there is any way to use DbgPrint in user mode, or some similar tool?
I need to know if certain parts of my code are beign executed without stopping execution.
All I can think is writting to a file, but the project I'm working on is hooking IO functions and I dont want to use them :S
Well, thanks in advance people
|
|
|
|
|
OutputDebugString works in user mode.
See also this nice utility:
http://www.sysinternals.com/Utilities/DebugView.html
earl
|
|
|
|
|
Thanks a lot Earl
|
|
|
|
|
I am writing some instruction below.
can you explain these instruction. and also what these aredo written i.e. for what purpose?
//{{AFX_MSG_MAP(CDCApp)
// NOTE - the ClassWizard will add and remove mapping macros here.
// DO NOT EDIT what you see in these blocks of generated code!
//}}AFX_MSG
|
|
|
|
|
I think
http://www.codeproject.com/dialog/messagehandling2.asp
this article may help u.
|
|
|
|
|
Nirmal Khatri wrote: //{{AFX_MSG_MAP(CDCApp)
// NOTE - the ClassWizard will add and remove mapping macros here.
// DO NOT EDIT what you see in these blocks of generated code!
//}}AFX_MSG
if you add message handlers via class wizard, it will add the functions in between AFX_MSG_MAP and AFX_MSG. these are the comments which is used by class wizard to indetify some specific spots like message maps etc...
SaRath.
"It is your attitude, not your aptitude, that determines your altitude - Zig Ziglar."
<blink>My Blog | Understanding State Pattern in C++
|
|
|
|
|
It basically says that this block is MFC Framework (a.k.a. AFX) generated code, which matches what you have done through MFC ClassWizard. Don't manually alter this block.
Best,
Jun
|
|
|
|