|
Hello,
You can do this:
In class 1 add the next variable:
Class1
{
Class2 * m_pClass2;
};
Class2
{
};
if you also want to have acess to private and protected members add the following to Class1:
friend class Class2;
hope this helps
A student knows little about a lot.
A professor knows a lot about little.
I know everything about nothing.
|
|
|
|
|
Hi,
thanks for the help.
Does this work if the 2 classes are in different .cpp files? where exactly would this friend stuff go?
thanks again
|
|
|
|
|
The classes should be in header files!
exemple:
class a
{
public:
void somefunc();
};
void a::somefunc()
{
}
But it will work if the 2 classes reside in other files!
If you make a class fiend of an other class, That class has access to the private and protected members of that class:
exemple:
class a
{
private:
int nPrivateInt;
public:
int nPublicInt;
};
class b
{
public:
friend class a;
void somefunc()
{
a InstanceOfa;
InstanceOfa.nPrivateInt = 0;
}
};
a InstanceOfA;
InstanceOfA.nPrivateInt = 0;
InstanceOfA.nPublicInt = 0;
Hope this makes thing clear!
A student knows little about a lot.
A professor knows a lot about little.
I know everything about nothing.
|
|
|
|
|
Class1 instanceOfClass1;<br />
Class2 instanceOfClass2;<br />
<br />
instanceOfClass2.m_ptrToClass1Object = &instanceOfClass1;
/ravi
Let's put "civil" back in "civilization"
Home | Articles | Freeware | Music
ravib@ravib.com
|
|
|
|
|
Hello,
thank you for helping me.
Where would all of this go? I am lost.
|
|
|
|
|
Suppose you have the following:
<br />
class ClassB<br />
{<br />
public:<br />
void ActionB();<br />
};<br />
<br />
class ClassA<br />
{<br />
public:<br />
ClassB* m_pB;<br />
void ActionA();<br />
};
Then you can access ClassB from ClassA using the following:
<br />
ClassA a;
ClassB b;<br />
<br />
a.ActionA();
<br />
a.m_pB = &b;
a.m_pB->ActionB();
This is just one of many ways of doing this. The situation dictates what you actually implement. You need to learn about objects, instances, pointers, call by value, call by reference and lots of other concepts. I suggest you get yourself a good C++ book.
Lorenz Prem
Microsoft Corporation
|
|
|
|
|
I have a small image editing application that is written without MFC, you access all the commands through menus, but I want to add a toolbar with various buttons (and link each button to a menu command), I know I can insert a toolbar in Resource Editor, but I want to know what code do I need to add (and where) so the toolbar would actually come up when I build and execute the application... Please, ANY help would be greatly appreciated. Thanks.
|
|
|
|
|
Look up CreateToolbarEx to get the SDK version up and running.
You'll have to load the Toolbar resource yourself and parse it into an array of TBBUTTONS,
but that shouldn't be too hard. Off the top of my head you use LoadResource (..., RT_TOOLBAR, ...).
Unless someone wants to correct me, its not a complex job, just a bit lengthy.
Iain.
|
|
|
|
|
Hi
In an application(Win32,VC.NET 2002) that I'm currently helping to develop the customer wants one of the toolbar buttons to be right aligned (the rest should be left aligned), only problem is that I have no idea on how to do this
The window is also resizable which may or may not increase the trickyness
I'd appreciate any ideas and help I can get.
Thanks in advance
|
|
|
|
|
Hi,
I really need to disable task-switching in a program, but am having difficulties.
First, I should explain *why* I want to disable task-switching, as I am aware that this can be undesirable behaviour. I want to use this feature in a game engine, and it is only an optional feature (not forced behaviour). For instance, if the player decides to map certain keys to Alt or Tab, they can can choose to disable task-switching. (Eg. If they map Alt to "jump" and task-switch, they might flip back to the game to find that they have jumped to their death...)
So, granted that I *do* want to do this, how do I go about achieving this in a full screen game (DirectX, though I doubt that makes any difference)? I have read and tried the article at MSDN on this:
http://support.microsoft.com/default.aspx?kbid=226359
However, this only works so long as the game is in windowed mode. As soon as the user switches to full screen, task-switching is restored for some reason. (I am testing on a Win Me system at the moment - I don't have access to my XP system for a few days, so I can't test out both methods.)
Does anybody know how I can go about doing this? Any suggestions or links much appreciated.
Many thanks,
KB
|
|
|
|
|
|
I wrote these codes in FormView0.h:
<br />
CViewPropertySheet m_PropSheet;<br />
<br />
CMYPropertyPage m_Page1; <br />
CMYPropertyPage2 m_Page2;<br />
Then wrote these in FormView0.cpp
<br />
BOOL CFormView0::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext) <br />
{<br />
<br />
m_PropSheet.AddPage(&m_Page1);<br />
m_PropSheet.AddPage(&m_Page2);<br />
<br />
<br />
if (!m_PropSheet.Create(this)) {<br />
DestroyWindow();<br />
return FALSE;<br />
}<br />
<br />
return TRUE;<br />
}<br />
after i built, it passed。however, Debug Assertion Failed:
Winfrm.cpp Line(1177)
WinCore.cpp Line(2198)
it's my reference below
http://www.codeguru.com/propertysheet/inside_formview.shtml
but it's MDI.
what should i do. please help me~!
|
|
|
|
|
Override the virtual function OnInitialUpdate() and put your propertysheet code after CFormView::OnInitialUpdate(). I believe you cannot put anything on the form until it has been initialized.
void CForemanView0::OnInitialUpdate() <br />
{<br />
CFormView::OnInitialUpdate();<br />
<br />
<br />
}
|
|
|
|
|
I made a multithreaded tcp server which loops on a listening socket which accepts the connections on their own socket and spins them off in their own thread. In the thread, it just loops on the recv() call. But the recv() call doesnt return unless something is read. Now i need to be able to send data to any of the sockets or all sockets at any given time, i'm not very experienced with threads so i really didn't know if you could call send() while a recv() is waiting (which would be the case if one socket would receive something and i would call send() on all the sockets to broadcast it back) but i read somewhere that u couldn't read if it was writing and couldnt write if it was reading or something. So how do i handle this?? I've already tried to come up with a number of (be it somewhat rediculous) solutions like a main buffer in which all the receives are put and a counter for each socket keeps track of how many lines each socket needs to get out of the buffer to send, but then u get another problem because then the sockets will only send when they have received something.. Of course if it is safe to call recv() without knowing if somewhere else send() is being called then pls let me know, because i thought i read somewhere in the winsock API that it isnt but i looked again and couldnt find it anymore.
Thanks
Kuniva
--------------------------------------------
|
|
|
|
|
You can safely do a send and recv on the same socket at the same time, so no need to start inventing all manner of problems for yourself!
|
|
|
|
|
there is some very good information on your subject here on codeproject:
http://www.codeproject.com/internet/
also, take a look at the "reusable, high performance, socket server class"...
nb
|
|
|
|
|
wow thanks! being able to call it at the same time makes it easier hehe. I already looked on CP though and also at that reusable class but that uses IOCP and i am targetting a win98 machine so that wouldnt work..
Kuniva
--------------------------------------------
|
|
|
|
|
You can use select() and specify maxtime your recv() will be waiting.
When time expires recv() will return even if no data arrived.
So, you can create arriving loop and inside of it you will be able to send().
Regards
"...Ability to type is not enough to become a Programmer. Unless you type in VB. But then again you have to type really fast..."
Me
|
|
|
|
|
Oh thanks, i was just wondering about something like that since i wanted to put in something to check for keystrokes. Thanks
Kuniva
--------------------------------------------
|
|
|
|
|
as on directX to do that some scene was always over the whole on screen?
|
|
|
|
|
If you want to switch to full screen mode, in d3d use the Windowed parameter in PresentParameters. In directdraw have a look at the SetCooperativeLevel() function.
Lorenz Prem
Microsoft Corporation
|
|
|
|
|
I'm looking for an example in VC++ 6 to hook (or subclassing) the RAS function (in rasapi32.dll). I'd like that my routine prevent every connection to the internet (with the browser or other applications): my routine must do a control about the number used. HOW CAN I DO THIS ?
Can anyone help me ?
|
|
|
|
|
Use RasEnumConnections() to get a list of connections.
RasGetConnectStatus will tell you if that connections is active.
RasHangUp will kill the connections.
I used CWnd::SetTimer() to monitor for connections.
This will not prevent a DSL/Modem or network connection from accessing the internet.
|
|
|
|
|
Really thanks for your help.
I'll try your solution.
Thanks again.
|
|
|
|
|
Hello,
how can I add a sizing gripper to a MFC dialog? (The dialog doesn't have any scrollbars or statusbars).
The dialog supports resizing, it's just the missing resizing gripper.
-Dominik
_outp(0x64, 0xAD);
and
__asm mov al, 0xAD __asm out 0x64, al
do the same... but what do they do??
|
|
|
|