|
Anywhere in a *.cpp file (source file) of your project write:
unsigned int g_uiMyGlobalUnsignedIntVar;
And to use the global variable everywhere in your project add the following in the stdafx.h file:
extern unsigned int g_uiMyGlobalUnsignedIntVar;
Daniel
---------------------------
Never change a running system!
|
|
|
|
|
thanx 4 ur reply, but i have a doubt
there r three cpp files,
one is stdafx.cpp, App.cpp, Dlg.cpp
can i define the variable in any of these files.
SHOULD I DECLARE IT outside the classes?
thanx
|
|
|
|
|
Declare it as extern in your stdafx.h and define it in your source file (.cpp).
rishabhs wrote:
can i define the variable in any of these files.
No, just in one file!
ps. try what happens if you do!
rishabhs wrote:
SHOULD I DECLARE IT outside the classes?
YES!
If you declare it inside a class it's not a global varible!
Rickard Andersson@Suza Computing
C# and C++ programmer from SWEDEN!
UIN: 50302279
E-Mail: nikado@pc.nu
Speciality: I love C#, ASP.NET and C++!
|
|
|
|
|
i understand the difference between declaration and definiation of functions.
but how these are different in case of variables.
|
|
|
|
|
rishabhs wrote:
can i define the variable in any of these files.
No. Just in one file (otherwise the linker shows an error, because you use more than one variables with the same name).
rishabhs wrote:
SHOULD I DECLARE IT outside the classes?
Yes. If you declare it inside the class it's not a global variable, it's in the namespace of the class!
Daniel
---------------------------
Never change a running system!
|
|
|
|
|
You can also declare a variable inside the Main App class (CMyApp i.e.) and then use member functions on that class in order to access that var.
In order to be able to access that class you will only have to be sure that:
1. You have the header file of the CMyClass included in the .cpp or .h file in which you want to access the application.
2. declare the class as "extern CMyApp MyApp;"
after all of this you'll be able to:
MyApp.WhateverYouHaveDefinedAsPublicInYourClass...
WhateverYouHaveDefinedAsPublicInYourClass can be a function or a variable depending on your needs, in case you want to access a var, I know that it is a little bit of overhead, but it can be interesting to use SET/Get functions in order to access it, because in this way the behaviour will be controlled by a function and if sometime you need to change it you'll have to do it only in the function in your main class.
Hope this helps...
|
|
|
|
|
this response is what you don't want to hear (I know)...
Do not use globals! They are a sign for a bad design or a quick hack. Instead put data into classes and access it from there. In some cases make a member variable static... so you share one variable between all instances of a class.
See here[^] for a brief C++ tutorial.
For example declare static variable in class:
class CMyClass {
static int s_nVariable;
int GetValue() const { return s_nVariable; }
void SetValue(int nNewValue) { s_nVariable = nNewValue; }
};
and define it in CMyClass source code (in one file only!):
int CMyClass::s_nVariable = 0;
Hope I was not offtopic, Moak
|
|
|
|
|
cute :
in stdafx.h write : extern var_type var_name;
in stdafx.cpp write : var_type var_name=0;
that`s all !
I am the mighty keeper of the book on knowledge . Contact me to get your copy .
|
|
|
|
|
dear all,
how can i detect a system restart using WM_QUERRYSESSION.
i'm able to differentiate between a Logoff and shutdown using the message, but no clue whatsoever of differentiating between a system shutdown and system restart.
plz. respond
regards
|
|
|
|
|
plz. don't make me feel that there is no solution to this problem
|
|
|
|
|
I'm curious as to why this matters to your application. The system is going down all the way. Why does it matter if it comes back up in a few minutes or a few days?
Regards,
Alvaro
Quitters never win. Winners never quit. But those who never win and never quit are idiots. -- despair.com
|
|
|
|
|
void OnShutDown(BOOL logOff)
{
}
BOOL OnAllowShutDown(UINT nSource, BOOL logOff)
{
return 1;
}
case WM_QUERYENDSESSION:
return OnAllowShutDown((UINT)wParam,lParam==ENDSESSION_LOGOFF);
case WM_ENDSESSION:
if((BOOL)wParam)
{
OnShutDown(lParam==ENDSESSION_LOGOFF);
}
break;
//be cool
I am the mighty keeper of the book on knowledge . Contact me to get your copy .
|
|
|
|
|
In my .h file I am declaring a CArray like so:
CArray<int,int> m_Array;
I get the following complaints from C++.NET many times over:
error C2143: syntax error : missing ';' before '<'
error C2238: unexpected token(s) preceding ';'
error C2501: 'CDerivedDialogBarView::CArray' : missing storage-class or type specifiers
I have checked around this site and others and can't seem to put this together. Surely this is a beginners mistake or something. Suggestions? TIA.
Matt (Padawan Learner)
|
|
|
|
|
i can't if you are using CArray incorrectly or if you're using the CP boards incorrectly don't take that as an insult - i'll explain:
CArray is a template class. you can't just declare a CArray, you have to declare a CArray of some object type:
#include < afxtempl.h>
CArray < myType, myType& > m_Array;
the CP comment was because CP's boards will eat < tags if you're not careful, so i couldn't tell if you had template params or if the board ate them
oh yeah, and std::vector is a better array in nearly all respects.
-c
Image tools: ThumbNailer, Bobber, TIFFAssembler
|
|
|
|
|
My bad. I was missing the #include < afxtempl.h>
Thanks. It's been a long day(or night).
|
|
|
|
|
Okey guys this is dumb!
I accidentlydeleted my MENU resources associated with my DOC/VIEW SDI application.
Now when I compile I get a pop up window saying "Failed to create empty document!"
Any idea how I can get this code to work again ????
Thanks
|
|
|
|
|
NEVER MIND GUYS ! I GOT BACK !
|
|
|
|
|
Hello,
I have an assignment to write a C function to add two IEEE754 double numbers based on an algorithm in my text book. The function adds two positive doubles via two unsigned long parameters and returns the result also in unsigned long format.
My professor gave us the main program and an empty subroutine and I need to code the subroutine.
All I am trying to do for now is print the values that are entered by the user, not do any calculations, just print them in the main and then once they get into the subroutine and I can't even get that. It's been a year and a half since I have done any c programming, but I did not expect to be stumped this quickly ...
Here is the code. I commented the lines that I added, not much. I understand the values I get when I print the HEX, but I get all zeroes when I try to print the decimal values.
Thanks for any help.
#include <stdio.h>
unsigned long adddouble(unsigned long x, unsigned long y)
{
//I added all
unsigned long result;
result = x;
//print values of x and y
printf("In subroutine, x = %f and y = %f\n", x ,y);
printf("In subroutine, return = %f\n", result);
return result;
}
int main(int argc, char* argv[])
{
double d1, d2;
double *dp;
unsigned long s;
unsigned long *longp1, *longp2;
//get two input real numbers
scanf("%lf %lf", &d1, &d2);
longp1 = (unsigned long*)&d1;
longp2 = (unsigned long*)&d2;
//I added - hex value of what longp1 and longp2 point to
printf("In main longp1 = %08x, %08x \n", *longp1, *(longp1+1));
printf("In main longp2 = %08x, %08x \n", *longp2, *(longp2+1));
//I added - decimal value of what longp1 and longp2 point to
printf("In main longp1 = %f \n", *longp1);
printf("In main longp2 = %f \n", *longp2);
s = adddouble(*longp1, *longp2);
dp = (double*)&s;
printf("%f + %f = %f\n", d1, d2, *dp);
return 0;
}
PC
|
|
|
|
|
Hi,
Can somebody advice me a charting software to work with MFC, it can be activex or library...
|
|
|
|
|
|
I looked at www.softwarefx.com for ChartFX is this compatible with MFC?
|
|
|
|
|
|
Check out site for programming issues
http://discuss.fogcreek.com/techInterview/default.asp
Feel free to spread word fro thsi site
|
|
|
|
|
WHAT A POS
|
|
|
|
|
Ok, I need to purchase a compiler to develop software that will need to run on Windows 98, 2000, and XP. Problem is is that the computer that I need to compile my code on is Windows 98, and Visual C++.net requires XP, 2000 or NT. This computer has had XP installed on it before and had so many problems that I had to install windows 98 back onto it. Would I be better off purchasing Visual C++ 6.0(there are still a few vendors that sell it) or getting a machine that will actually run XP?
Also, why is Visual C++ 6.0 so much more expensive than Visual C++.net?
Kevin Shaffer
Student of Computer Science
University of Kansas
kshaff03@msn.com
|
|
|
|