|
Stefan,
thanks for reply. I find your objection to using #define peculiar.
For example – the basic MFC wouldn’t fly without it. The first C program I wrote over 30 years ago I used #define MAX 256 to have a single place in the program where the value of MAX can be changed. And how about #define DEBUG?
I think stating that #include just adds the file text is rather simplistic. I was actually looking to discuss experiences / preferences in putting include in various places of application. In VC6.0 you can put “include “ in Project Settings, in Tools Option in an addition to files. I am sure newer IDE's have similar options.
I just went thru couple of sleepless nights trying to find linker error – cannot find file “g:.lib”.
Simple search just did not work this time.
Well I had a #pragma comment referring to a wrong directory. So my experience with VC6.0 #pragma - it works but is not that user friendly.
Cheers Vaclav
|
|
|
|
|
I did say "if you can help it", and the implied advice was that you should avoid #define, if there is a better method. There are better methods for every single example you gave:
1. #define DEBUG
This is used for conditional compilation, to add more code that helps your debugging. Normally such a define should not be right in your code, as it specifies which path to use for compilation and which to ignore. Instead you sheould set that in your compiler options, or directly pass it as a command line argument to your compiler (something like "-D DEBUG")
Maybe what you meant was code enclosed in #ifdef DEBUG ... #endif - but I have no qualms with that.
2.#define MAX 256
Since Ansi C, you should use this syntax instead:
const int MAX=256;
3.#define max(a,b) (a < b ? b : a)
With C++ templates, you should better use this instead:
template <class T>
T max(const T& value1, const T& value3) {
return (value1 < value2) ? value2 : value1;
}
On a sidenote, since you mention MFC, the windows header files contain a min and max macro just like that listed above. And you don't even have to write some clever code to make it crash: just include valarray (a STL class header) in your windows application, instantiate a valarray variable and try to compile that!
You mention how you wrote code 30 years ago, and how MFC uses #define a lot. Please think about the implications: Yes, MFC used #define a lot 30 years ago, just like you did. But that doesn't mean that this is still recommended üpractice today!
Vaclav_Sal wrote: I think stating that #include just adds the file text is rather simplistic.
To the contrary, it is very concise. You are mixing up include options that you can enter in the project and compiler settings with the include statements in your code. These options will only tell the compiler which directories to search or skip when looking for an include file.
|
|
|
|
|
Hello friends
I am using Owner Draw menuItem Icons in MFC application. Now, when I Run it in release build,menus are displaying fine But in Debug Build,MenuItem are large in size that covering full screen.
Any IDeas ?
Regards
Y
|
|
|
|
|
yogeshs wrote: Any IDeas ? You have a bug in your program. Unless you provide some proper detail information it is impossible to guess; we have no idea what your code is doing.
Use the best guess
|
|
|
|
|
hello Sir
I know that I didn't Post any Code and asking for Ideas. am Sorry for that.
But I found tht in Fn Onmeasureitem ,we are using drawText to get height of Text which is returning wrong [>1] in debug build and 1 in rlease build.
CWindowDC dc(NULL); CRect rcText(0,0,0,0);
CFont* pOldFont = dc.SelectObject(GetMenuFont());
dc.DrawText(pmd->text, rcText, DT_MYSTANDARD|DT_CALCRECT);
CSize size = dc.GetTextExtent(pmd->text);
dc.SelectObject(pOldFont);
lpms->itemHeight= max(GetSystemMetrics(SM_CYMENU), rcText.Height()+1);
int cx = rcText.Width(); cx += CXTEXTMARGIN<<1; cx += CXGAP; cx += m_szButton.cx<<1;
cx -= GetSystemMetrics(SM_CXMENUCHECK)-1;
lpms->itemWidth = cx;
Now, Any Ideas. m compiling it on VS 2010.
Regards
Y
|
|
|
|
|
yogeshs wrote: Now, Any Ideas. Sorry, no. I can only suggest you use your debugger to check all the parameters and their values as you step through the code to see if any one or more value(s) may be incorrect.
Use the best guess
|
|
|
|
|
Hi, i was able to detect finger tips and valleys using cvConvexityDefects() and Convexhull functions...now i want to identify what finger tip is belongs to what finger...for an example i want to detect finger tip of the thumb and do something..Need some tips...Thanks in advance 
|
|
|
|
|
I would venture that you need to identify the entire hand contour and get the individual fingers.
I think you need to find the skeleton – I think is is called erosion.
Take a look at OpenCV for contour function.
Vaclav
|
|
|
|
|
hi,thnx for the rply..i used cvFindCountours() function to get the contours of the hand..i will try the skeleton one as ypu suggested..but i want to know how to use depth value of convexitydefects to identify fingers...Thank you
|
|
|
|
|
hi,thnx for the rply..i used cvFindCountours() function to get the contours of the hand..i will try the skeleton one as you suggested..but i want to know how to use depth value of convexitydefects to identify fingers...Thank you
|
|
|
|
|
These days ,i read the source code of cocos2d-x . When i read the CCApplication class of win32 platform , in the function run of CCApplication ,there is a function :
static void PVRFrameEnableControlWindow(bool bEnable)
{
HKEY hKey = 0;
if(ERROR_SUCCESS != RegCreateKeyExW(HKEY_CURRENT_USER,
L"Software\\Imagination Technologies\\PVRVFRame\\STARTUP\\",
0,
0,
REG_OPTION_NON_VOLATILE,
KEY_ALL_ACCESS,
0,
&hKey,
NULL))
{
return;
}
const WCHAR* wszValue = L"hide_gui";
const WCHAR* wszNewData = (bEnable) ? L"NO" : L"YES";
WCHAR wszOldData[256] = {0};
DWORD dwSize = sizeof(wszOldData);
LSTATUS status = RegQueryValueExW(hKey, wszValue, 0, NULL, (LPBYTE)wszOldData, &dwSize);
if (ERROR_FILE_NOT_FOUND == status || (ERROR_SUCCESS == status && 0 != wcscmp(wszNewData, wszOldData))) {
dwSize = sizeof(WCHAR) * (wcslen(wszNewData) + 1);
RegSetValueEx(hKey, wszValue, 0, REG_SZ, (const BYTE *)wszNewData, dwSize);
}
RegCloseKey(hKey);
}
i do not understand the key value "hide_gui" .What can it do to effect my app ?
I am a new learner in C++ and i am not a english speaker , so if you do not understand my meaning ,i am very sorry for that .
|
|
|
|
|
You need to contact Imagination Technologies about this, it's their software. However, the code above sets its value to "NO" or "YES" , according to whether bEnable is true or not.
Use the best guess
|
|
|
|
|
Dear Friends,
I want to design function using C++. Like this
int GetValue(CString VariName );
I will pass Variable name as a String into function and function should return value of the variable.
struct StudentInfo
{
int rollnum;
int mark1;
int mark2;
} *stud;
int GetVal( _T("Stud->rollnum")); // Now function should return the value of Stud->rollnum
Friends help me...
Thanks and Regards,
S.Shanmuga Raja
|
|
|
|
|
Answer is apart. Why you want to do it Like that?
|
|
|
|
|
C/C++ has no built-in mechanism to do that.
you will have to come up with some kind of data structure which maps a string to a variable. maybe put the variable name in the structure itself, then search your collection of structs to find the one you want. or, create a std::map which uses a string (var name) as the key and a struct as the value. or... there are lots of options - none of them are great.
|
|
|
|
|
If you want to use c++ make a class instead of struct:
class CStudentInfo
{
public:
enum EVal
{
erollnumEVal,
emark1EVal,
emark2EVal
};
int GetValue( EVal eVal )
{
int iRetVal = 0;
switch( eVal )
{
case erollnumEVal:
iRetVal = rollnum;
break;
case emark1EVal:
iRetVal = mark1;
break;
case emark2EVal:
iRetVal = mark2;
break;
default:
ASSERT( FALSE );
break;
}
return iRetVal;
}
private:
int rollnum;
int mark1;
int mark2;
}
But why do you need something like this?
couldn't it be just simple:
class CStudentInfo
{
public:
int Getrollnum()
{
return rollnum;
}
int Getmark1()
{
return mark1;
}
int Getmark2()
{
return mark2;
}
private:
int rollnum;
int mark1;
int mark2;
}
|
|
|
|
|
Use a hash map. The name of the variable in the name of the entry. The value of the variable is the value of the entry.
|
|
|
|
|
Please do not cross-post! It just makes it harder for everyone to gather the sparse information that is already there[^], and makes people waste time repeating the same queastions and suggestions in two different places!
Instead, please answer the questions, especially what you need this for. The answers to these questions are really necessary for us to make a meaningful response that actually helps you with your problem. As long as you're silent about your real intent, we can only guess! And, judging by the little information you gave us, you don't know what you're doing. Much less do we.
Also, please respond to the suggestions already made, whether or not they fulfill your purpose. If you ask a question, you expect a response. Likewise, the people responding expect that you indicate when that wasn't helpful, and why.
P.S.: Just to make a point and explain why I think you do not know what you'r doing or asking:
The name of a variable in a program only really makes sense to the programmer who wrote it. The same object stored under that variable name may be stored under a different name in another part of the program. Likewise, a different part of the program may store a different object under the same name.
As a result, the user of the program can never tell with certainty what the name of a specific object in the source code of the program at any given time is. the only way to tell this, is if you are looking at the source code that is currently executed, i. e. if you are debugging the code. Is that your purpose? If so, the task you're on is likely a whole lot more complex than you can imagine. If not, you're probably asking the wrong question, and you need something different than what you're asking for.
|
|
|
|
|
I have an MDI application ... somewhere, I had open an CDialog derived dialog, where I have only two buttons ... but in this dialog I can not catch any OnKeyDown event ... why ?
I had tried in follow way:
void CMyDialog::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
MessageBox("A");
CDialog::OnKeyDown(nChar, nRepCnt, nFlags);
}
void CMyDialog::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
MessageBox("B");
CDialog::OnChar(nChar, nRepCnt, nFlags);
}
on any key pressed, I see no MessageBox ... why ?
I even had overridden ON_WM_GETDLGCODE:
UINT CMyDialog::OnGetDlgCode()
{
return DLGC_WANTALLKEYS;
}
nothing worked ... what should I do to know when the user press a key, when CMyDialog has the focus ?
Thank you.
modified 30-Apr-13 5:59am.
|
|
|
|
|
|
Great, now does function ! Thanks !
|
|
|
|
|
Hi
I have a child process a win32 program
The parent is a console program
In the child process I would like
To read the console buffer only in certain
Situations
Can I have a ReadFile with the handle
Of the parents stdout and signal
The read from the parent process
By signaling the hEvent of the overlapped
Structure
Thanks
|
|
|
|
|
|
Hi
Thanks but I want the child windows
Program to read the parents (console program)
Stdout
|
|
|
|
|
This is no joke, so please no “update” suggestions, OK.
I have regretfully downloaded both VS 2010 and VS2008 to do some testing with Cmake.
Now my VC 6.0 is building DSW and SLN and some other crap files – but no DSP!
The most visible result is – no more access to “workspace”, my VC IDE is toast!
I am about to delete all the new crap I downloaded and start over.
I recall that when MS came up with VB4 the developers had similar problems working with older VB.
Any other suggestions to fix this? I really need to finish the project in VC 6.0 than MAYBE switch to VS2008, but this is nuts.
Only serious replies will be appreciated, not in the mood.
Cheers Vaclav
|
|
|
|
|