|
Hi guys, I'm trying to avoid cyclic dependencies in my code. How would I go about creating a global class, ie a class that can be queried and altered from all other classes in my code?
Thanks.
ASP.NET can never fail as working with it is like fitting bras to supermodels - it's one pleasure after the next - David Wulff
|
|
|
|
|
I'm a novice, and I don't know if this is the best solution or not (since I'm a novice I suppose not ).
I create an instance of one class in the application class and then I create a public function in the application class that returns a pointer to the class that I want to share, then I place an extern reference to the main class (app) and I can get the pointer...
steps:
0. Include the header file of the class that you want to share.
1. In your app. class create a pointer to the class that you want to share.
2. Create a member function in your app. class that return the pointer to the shared class.
3. where you want to use the shared class declare the app object as extern (see below)
4. use it...
<br />
extern CMyApp MyApp;<br />
<br />
<br />
<br />
<br />
<br />
MyApp.GetThePointerToTheClassThatIWantToShareFunction()->A;<br />
<br />
Hope this helps...
If not sorry, I'm a novice...
|
|
|
|
|
Hmm, thanks...I'll take a look. I'm not writing an MFC app by the way. (Noticed your class naming convention)
ASP.NET can never fail as working with it is like fitting bras to supermodels - it's one pleasure after the next - David Wulff
|
|
|
|
|
use a singleton pattern.
class MyClass
{
...
public:
static MyClass* Instance();
private:
static std::auto_ptr<MyClass> m_pInstance;
...
}
#include "myClass.h"
std::auto_ptr<MyClass> MyClass::m_pInstance;
MyClass* MyClass::Instance()
{
if(m_pInstance.get() == 0)
{
std::auto_ptr<MyClass> tmp(new MyClass);
m_pInstance = tmp;
}
return m_pInstance.get();
}
...
and somewhere else :
#include "myClass.h"
void somewhereElse::doSomething()
{
MyClass* pMyClass = MyClass::Instance();
...
}
Max.
|
|
|
|
|
Thanks!!
ASP.NET can never fail as working with it is like fitting bras to supermodels - it's one pleasure after the next - David Wulff
|
|
|
|
|
Hi people
I want to open files from the "Temporary Internet Folder"(read access). The problem is, the CFile open-Function does not open the file.
Are the files in this Folder special protected??
thanx
|
|
|
|
|
Just try to open the file with the CreateFile API function, with the GENERIC_READ and the FILE_SHARE_READ flag.
It is possible, that the file is opened by the system (Internet Explorer, etc.) without any FILE_SHARE_??? flag, so that you are not allowed to open the file!
Daniel
---------------------------
Never change a running system!
|
|
|
|
|
No, but the Temporary Internet Folder is a special in that the actual files are stored differently. There are subdirectories underneath it that the files are stored in. Take a look using a command prompt and you'll see what I mean.
Joel Lucsy (jjlucsy@concentric.net)
|
|
|
|
|
There are APIs for getting the filename of files in the IE cache. One is RetrieveUrlCacheEntryFile() - pass it the URL and the function will return the name of the cached copy, if there is one.
--Mike--
Just released - 1ClickPicGrabber - Grab & organize pictures from your favorite web pages, with 1 click!
My really out-of-date homepage
Sonork-100.19012 Acid_Helm
|
|
|
|
|
Still can't work, because of datatype casting.
suppose, I want to send two parameters, one is BYTE* m_pByte, the other, int m_nLen. Then, I use PostThreadMessage Like this,
<br />
::PostThreadMessage(m_threadID,WM_DATA_ARRIVAL,(WPARAM)m_pByte,(LPARAM)m_nLen);
Now I use GetMessage() to get the message (here is WM_DATA_ARRIVAL) as well as m_pByte and m_nLen,
<br />
...<br />
MSG msg;<br />
while(::GetMessage(&msg, NULL, 0,0))<br />
{<br />
switch(msg.message)<br />
{<br />
case WM_RXD_ARRIVAL:<br />
AfxMessageBox(msg.lParam);<br />
break;<br />
default:<br />
break;<br />
<br />
};<br />
};<br />
...
Extreme programming. Do the No.1
|
|
|
|
|
Is m_pByte a pointer to a NULL terminated string?
If so, try
AfxMessageBox((LPCTSTR) msg.wParam);
or if m_pByte is no pointer to a NULL terminated string try
...
CString str;
str.Empty();
...
BYTE* pByte = (BYTE*) msg.wParam;
...
for (int n = 0; n < msg.lParam; n++)
{
str += (char) *pByte;
pByte++;
}
...
AfxMessageBox(str);
...
Daniel
---------------------------
Never change a running system!
|
|
|
|
|
I got random code!
I accept data from comm port, it's should be bytes, but after cast into CString, it's just random code, just like Japaness Characters or Tranditional Chinese Characters.
what's wrong?
thanks alot.
Extreme programming. Do the No.1
|
|
|
|
|
I have changed the code in my reply! I hope it works!
The bytes you received from the com, are they realy printable bytes?
Just look on the pointer pByte with your debugger and you will see what you received!
Daniel
---------------------------
Never change a running system!
|
|
|
|
|
try formatting it into an array of chars or a CString before doing the message box, See CString::Format or sprintf for that
Papa
while (TRUE)
Papa.WillLove ( Bebe ) ;
|
|
|
|
|
Hi,
I've got to develop an application thats something like drawing circiuts over the screen. please suggest a method. thanks in advance
|
|
|
|
|
If you want draw your circiuts, etc. very fast use OpenGL or DirectX, also GDI+ is a very good choice!
Daniel
---------------------------
Never change a running system!
|
|
|
|
|
You need to read about device context s (DC s).
These are used to access the screen, and hand you draw commands over to the graphics card driver.
There are a lot of methods for drawing, coloring, writing text etc.
|
|
|
|
|
I have an MFC application built around a CView Class. However, now I need to create a .NET form and have no idea how to make sure it is properly parented within the application. Any ideas? Examples?
Very new to .NET and climbing that learning curve...
|
|
|
|
|
I want to send the boss an update of my work.
How does one go about compiling a mfc project so that the .exe can be run on any machine?
I'm running VC++6 Professional edition on Win2K.
thanks,
kash
|
|
|
|
|
Build Menu, Set Active Configuration.
The build your project.
Signature space for rent. Apply by email to....
|
|
|
|
|
I tried this, but when the program executes, it returns error message saying missing dll files.
|
|
|
|
|
If the DLLs are named things like MFCxxxD.DLL, then you have not built a release version, but a debug version. In the "Build/Set Active Configuration", you should probably have "proj - Win32 Debug" and "proj - Win32 Release", it's the release you should select, then do a Rebuild All.
You can also use the Depends tool to see what DLLs your exe needs.
It's possible that there is no MFC release runtime on the other machine, but unlikely.
Steve S
[This signature space available for rent]
|
|
|
|
|
u need to make an installation package for distribution
"... and so i said to him ... if it don't dance (or code) and you can't eat it either f**k it or throw it away" biz stuff about me
|
|
|
|
|
There's no mention of this in Help.
Do you have any suggestions?
Thanks
Kash
|
|
|
|
|
Go to your project settings. Select "Use MFC in a static library". Rebuild all. Your exe will be bigger, but you won't need to include the mfc dll's.
-----------------------
New and improved: kwakkelflap.com
My first CP article: Pseudoregisters[^]
"When I hear of Schrödinger's cat, I reach for my gun." - Stephen Hawking
|
|
|
|