|
Thank you. It's a good point.
mIchAel Liu
__________________________________________________________
The secret of business is to know something that nobody else knows.
|
|
|
|
|
Hello there,
I have 10 editbox in my dialog ...
I want to show a message when user pressed enter in the EditBox Number 2(for example) !!!
How can i do that ?
My month article: Game programming by DirectX by Lan Mader.
Please visit in: www.geocities.com/hadi_rezaie/index.html
Hadi Rezaie
|
|
|
|
|
Keyboard messages...[^]
This should answer your question.
int x=1, y=5;
x^=y^=x^=y;
<a href="http://www.codeproject.com/useritems/StupidXORTrick.asp" target="_blank">ClickHereForHelp();</a>
|
|
|
|
|
1. Create your own class, say MyEdit.
2. Derive it from CEdit.
3. In my edit add a handler for the message WM_GETDLGCODE message by using the class wizard.
4. The Wizard will add the handler afx_msg UINT OnGetDlgCode() for you.
5.Replace the default return value by return DLGC_WANTALLKEYS;
6.Now in the same way add one more handler for WM_KEYDOWN. nChar value will be 13 for Enter-Key. Handle the Enter-Key event here.
7. Use the new class in your dialog box instead of the CEdit class to get Enter-Key event.
Regards,
Rejeesh
|
|
|
|
|
How can I listen a port and map the OnConnect, OnAccept, OnReceive and OnClose events to the socket that listen the port ??
Any example ??
Thanks,
Cristiano.
|
|
|
|
|
Derive your own Socket class from CSocket, you can then easily react on the On..() event. Here's how I've derived the CSocket class:
#include "stdafx.h"
#include "UDPSocket.h"
#include "MainFrm.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
CUDPSocket::CUDPSocket()
{
}
CUDPSocket::~CUDPSocket()
{
}
#if 0
BEGIN_MESSAGE_MAP(CUDPSocket, CAsyncSocket)
END_MESSAGE_MAP()
#endif // 0
void CUDPSocket::SetParent(CFrameWnd *pWnd)
{
m_pWnd = pWnd;
}
void CUDPSocket::OnReceive(int nErrorCode)
{
if (nErrorCode == 0)
((CMainFrame*)m_pWnd)->OnReceive();
}
and the header file:
#if !defined(AFX_UDPSOCKET_H__B455316B_592B_4066_B909_F961153C0A61__INCLUDED_)
#define AFX_UDPSOCKET_H__B455316B_592B_4066_B909_F961153C0A61__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
class CUDPSocket : public CSocket
{
public:
public:
CUDPSocket();
virtual ~CUDPSocket();
public:
void SetParent(CFrameWnd *pWnd);
protected:
virtual void OnReceive(int nErrorCode);
private:
CFrameWnd* m_pWnd;
};
#endif
You can then, after you have set up the Socket, Listen with
CUDPSocket sock;
sock.Listen();
Hope this helps
modified 12-Sep-18 21:01pm.
|
|
|
|
|
Ok, Gregor ... thanks !!!
One more thing,
.
.
CUDPSocket sock;
//setup the socket
sock.Listen();
.
.
How can I accept a connection ??
Do I need to use Create, Listen and Accept function ?? How ??
How I use the SetParent(CFrameWnd *pWnd) function on my class dialog ?
Thanks again,
Cristiano.
|
|
|
|
|
If you have a dialog based app I suggest you to change CFrameWnd to CDialog. Then, e.g. in OnInitDialog() you simply call socket.SetParent(this);
One again, if you have a dialog you should replace all instances of "CMainFrame" to "CYourDialog" in the derived socket class.
Then you create the functions OnAccept, OnReceive and so on in your dialog class so that the Socket class can redirect the events to your dialog. (That's what ((CMainFrame*)m_pWnd)->OnReceive(); is for).
All you need to do before the Listen() call is to "Create()" your socket.
In the OnAccept() handler inside your dialog (or mainframe class) you simply call socket.Accept(...)
regards
modified 12-Sep-18 21:01pm.
|
|
|
|
|
Ok, its work partially well ...
The OnAccept event (not OnConnect ??) triggered.
But, the OnReceive and OnClose events don't triggered.
Any idea ??
Thanks,
Cris.
|
|
|
|
|
Did you implement them in your derived CSocket class and did you set up similar functions in your Dialog/Mainframe class? If yes, everything should work fine.
Well, don't forget to change all occurances of "CAsyncSocket" to "CSocket" in your derived class
modified 12-Sep-18 21:01pm.
|
|
|
|
|
What do means: "change all occurances of CAsyncSocket to CSocket in your derived class" ??
I changed my derived class to derive from 'CAsyncSocket' and not more 'CSocket', but don't work too. I don't receive the OnReceive and OnClose events.
[]'s
Cris.
|
|
|
|
|
Hi,
I disabled listbox style 'No integral height', but it doesn't work with resizeable dialogs/controls.
Yes, I'd like to see only full visible items. When I resize the dialog, the listbox becomes also resized... and I see partly visible items. It seems 'integral height' is being ignored. What I'm doing wrong?
|
|
|
|
|
|
Hello guys,
I have a question in reagrds to MDIs. I have a MDI application that has 2 different CMDIChildWnd classes. I need both of these classes to be able to access the same variables in the MyDoc or MyView class.
This is what I do know.
I know that if I want to access a variable from the Doc or View class from the default MDI application CMDIChildWnd class (ChildFrm.cpp), then to access these variables I can use GetActiveDocument or GetActiveView.
Here is my problem.
When I open a new window from the CMDIChildWnd class that I added into my project (MyCMDIChildWnd), then it becomes the current Doc/View. So if I use GetActiveDocument on this, I get a return value of NULL.
What I want to do then is to access the variables that the 1st CMDIChildWnd class (ChildFrm) with the second CMDIChildWnd class (MyCMDICHildWnd). How can I do this?
I was thinking that maybe if I assigned a number to each of the windows, then I could always say, "Access the information in ChildFrm, which is window number 1"
Is there a way to enumerate the open windows? Or to access information that the first window opened?
Thanks a whole lot,
NickOne
p.s. If I wrote this all wordy or too confusing, just yell at me and I'll try to rephrase. I am really stuck with this and I want to solve my problem, so any driection or advice could help.
|
|
|
|
|
I'm not sure I understand your question. Do you want the two MDI child windows to use the same document? If so, then put a pointer to the current document into the CCreateContext structure when creating the second MDI child.
This is quite a large subject, so I'd like to know your exact requirement and problem before getting to deep into it.
Cheers
Steen.
"To claim that computer games influence children is ridiculous. If Pacman had influenced children born in the 80'ies we would see a lot of youngsters running around in dark rooms eating pills while listening to monotonous music"
|
|
|
|
|
1. How do I update a status bar 'field' outside of MainFrame.cpp (where I declared the status bar window)? More specifically, I'm invoking a function in View.cpp and would like that function to update the status bar 'field'.
2. When using the Wizard, you end up with the MFC appln icon. How do I change that? In my resource.rc, I have the following [IDR_MAINFRAME ICON DISCARDABLE "res\\SEI.ico"], which specifies the small icon I want for my appln. The icon, however, does not show. What else do I need to do toward that effect? Thanks,
Ralf.
ralf.riedel@usm.edu
|
|
|
|
|
1. Write public function in CMainFrame which updates status bar by the way you want. You can call this function from any place of your project:
((CMainFrame*)AfxGetMainWnd())->SomeFunction(...);
2. When you edit the icon, don't forget to change both 32x32 and 16x6 versions.
|
|
|
|
|
You can handle messages ON_UPDATE_COMMAND_UI in any window that is child to MainFrame, particularly in your View. Just do not create similar handler in MainFrame, otherwise it will have more priority and your handler will be never called
I disagree with "Alex F" about public method in MainFrame, it breaks the law, that is called "Incapsulation". Plus it increases inflexibility of modules' links
|
|
|
|
|
Hi,
I've noticed that when a double is >= 1e15 and <= 1e-5 it is automatically output in scientific notation. I wish to output in fixed notation. I have managed to control the smaller values by using a CString with multiple values after the point:
x.Format(_T("%.20f"), double);
and messing about with the CString created, but I am having trouble controlling large values. I have tried using the Format method, as with small values, to create a CString and then manipulate it using:
x.Format(_T("%.20d"), double);
but it just outputs ridiculous values which do not resemble the original double. Is there a way of using Format to achieve this?
Thanks in advance,
Graham
|
|
|
|
|
'%d' doesn't work with doubles. You may try with %e or %g.
You may also consider using std::ostringstream.
Tomasz Sowinski -- http://www.shooltz.com
Never argue with an idiot, he'll bring you to his level and beat you with experience.
|
|
|
|
|
Just learning about STL and I am having a problem compiling this, what part am I missing?
#include <iostream.h>
void main()
{
vector<int> vList;
for(int i = 0;i < 20;i++)
{
vList.push_back(i);
cout << i << " added to vector." << endl;
}
}
I get a whole slew of errors with this.
Nick Parker
|
|
|
|
|
Add #include <vector> , and either add using namespace std; somewhere, or prefix vector with std (i.e. std::vector<int> vList; ).
---
Shog9
If I could sleep forever, I could forget about everything...
|
|
|
|
|
|
You need to have:
#include <vector>
and then include vector in the namespace or use
#include <vector>
#include <iostream>
using std::cout;
using std::vector;
Regards,
Brian Dela
|
|
|
|
|