|
Hi everyone,
i had a component with diff PopUp Buttons, to catch the OnClick-Event i added a message-handler in the
Pane ( it herids from CWnd ) and a click on the different PopUp Buttons executes the code in the method On_xxxxxx_Click() in this Pane.
Now, i have created a modified the component and added a Click-Handle that determinates the Button of the component who's clicked.
Then i must send a message to the Pane to execute the On_xxxxxx_Click() ( The Pane doesn't change )
void MyTaskPanel::OnLButtonDown(UINT nFlags,CPoint point)<br />
{<br />
<br />
TaskPanelGroup* Item;<br />
<br />
Item = HitTestGroup(point);<br />
<br />
UINT SelectedID;<br />
if(Item) {<br />
SelectedID = Item->GetID();
SendMessage(BN_CLICKED,(WPARAM)SelectedID,NULL);
} else {<br />
}<br />
}
In the pane i have this message-map :
BEGIN_MESSAGE_MAP(Home_Bht_Kunden_Side, CPaneView)<br />
ON_BN_CLICKED(ID_OF_CLICKED_BUTTON,On_ID_OF_CLICKED_BUTTON_Click)<br />
...<br />
END_MESSAGE_MAP()<br />
<br />
void ThePane::On_ID_OF_CLICKED_BUTTON_Click()<br />
{<br />
int test = 9;
}<br />
<br />
The Question: If i send a message from out the component, where does the message arrives?
Can all Message-Maps receive this Message and trade it ( if it matches )
Big Thanks
|
|
|
|
|
BN_CLICKED is not a message, it is notification code and should be sent through WM_COMMAND message.
e.g.
WPARAM wParam = (WPARAM)(((WORD)BN_CLICKED << 16) | ((WORD)GetDlgCtrlID()));
GetParent()->SendMessage(WM_COMMAND, wParam, (LPARAM)m_hWnd);
where m_hWnd is the HWND of the control and GetDlgCtrlID() returns the id of the control.
The message arrives to that CWnd you sent it. In your situation, you send the message to MyTaskPanel, so MyTaskPanel should process the message. If you want to send a message to other CWnd object , you should call SendMmessage fct. for that object : pMyView->SendMessage(...)
|
|
|
|
|
Thanks for the answer
but i don't have a HWND. I will sent the Message from out the Component.
The component should send a message to the window where it's placed.
Because the components gets the universal click on the component
The OnClick-Function determinates which button is clicked and the component sends a new message
to the window by specifing which Button is clicked ( over the ID )
Thanks
|
|
|
|
|
You will also find that your code may work in Debug build, but when you build a release version, it will crash.
The reason is that the SendMessage actually sends the command and a WPARAM and LPARAM. You must handle those in your message handler:
void ThePane::On_ID_OF_CLICKED_BUTTON_Click(WPARAM, LPARAM)<br />
{<br />
int test = 9;
}Karl - WK5M<br />
PP-ASEL-IA (N43CS)<br />
<kmedcalf@ev1.net><br />
PGP Key: 0xDB02E193<br />
PGP Key Fingerprint: 8F06 5A2E 2735 892B 821C 871A 0411 94EA DB02 E193
|
|
|
|
|
I found the error
I send the Message from the Pane, but that's wrong
I must send the Message from the Parent of the Pane.
GetParent()->SendMessage(WM_COMMAND, wParam, (LPARAM)NULL);
Thanks nevertheless
|
|
|
|
|
Hi all,
i am doing project in MFC. up to this moment i used visual studio 6.0
IDE for my developement purpose. but because of some reasons i shifted
Visual studio 2003 Version 7.1.3088.
i migrated all my project to this version and now when i create a final
release.
and run it on other machine that does not have .NET or .NET framework
installed on it
gives an error by saying mfc71.dll not found.
so is it necessary to install .NET framework on the client's computer
to run my application??
Thanks and regads
Harshal
|
|
|
|
|
Try this:
In project settings search for "Use MFC in a Static Library" in Project>Properties>General > Use of MFC and select and apply it.
Somethings seem HARD to do, until we know how to do them.
_AnShUmAn_
|
|
|
|
|
harsha_1234 wrote: and run it on other machine that does not have .NET or .NET framework
installed on it
gives an error by saying mfc71.dll not found.
If you write a program using .NET, it will require the pertaining framework to be installed in the target machine where you run the program. Linking the files statically may result in an increased size of the application.
harsha_1234 wrote: so is it necessary to install .NET framework on the client's computer to run my application??
Yes!
Nobody can give you wiser advice than yourself. - Cicero
|
|
|
|
|
brahmma wrote: harsha_1234 wrote:
so is it necessary to install .NET framework on the client's computer to run my application??
Yes!
NO !!!!
he's programming MFC !
so only the MFC71.dll, MSVCR71.dll and MSCVP71.dll may be necessary
|
|
|
|
|
toxcct wrote: he's programming MFC
Sorry, I missed that. Sincerely.
Nobody can give you wiser advice than yourself. - Cicero
|
|
|
|
|
don't confuse, installing Visual Studio .NET doesn't mean you actually use the .NET framework.
if your program is pure MFC project, then provide the MFC71.dll, MSVCR71.dll and MSCVP71.dll libraries with your exe (or statically link your project to MFC, but that'll increase the .exe file size significantly)...
|
|
|
|
|
Thanks for replying.
as you said i think it does not use the framework it's running in pure MFC.
so by putting these dll's on client's machine will be suffice..
Thanks
Harshal
|
|
|
|
|
complete answer
|
|
|
|
|
Ship all required dll's on client m/c. No need to install .net framework.
Use depends.exe for detecting dependencies.(It will show files mentioned by you).
|
|
|
|
|
.NET 2003 include VC7.0 , Convert VC6.0 project to VC7.0 , then rebuild all .
No need other dll , no need .NET framework.
|
|
|
|
|
I need to know when a copy event occurs in the explorer. I think I must set a global hook using SetWindowsHookEx API. But which type of hook it has to be?
|
|
|
|
|
You can write an ICopyHook shell extension to get those notifications.
|
|
|
|
|
That seems to work only for folders. I want my application to know immediately when user is copying one or more files. Will a clipboard hook help? Is there any other way to do this?
|
|
|
|
|
No, it gets called for any file operations done in Explorer. A copy hook gets registered under a "folder" key but that doesn't mean it works only for folders.
|
|
|
|
|
Oh thats cool. Can you point me to some sample article or code? When I searched CP I found one article but there only folder copy operation is handled. My app requirement is like I need to log whenever the user is performing a file copy in the explorer. Thanks.
|
|
|
|
|
|
How to run a VC console app from a batch file but with variable number of params?
file.bat
vcConsole.exe %????
> file.bat param1 params2 param3 ... paramN
and pass them all at once without %1 %2 %3 ... in batch file?
9ine
|
|
|
|
|
use %1- instead...
sorry, this was the unix way.
use %* to expand all the parameters excluding the %0 (which is the batch file name).b
|
|
|
|
|
good morning
is it possible to fill a table with CString ?
CString tab [20];
|
|
|
|
|