|
if (pEdit=NULL) is an assignment, always evaluating to false (after setting pEdit to NULL, of course). A nice side effect is that you get a smaller binary in an optimized build since the compiler removes all code within the scope of that if .
if (!pEdit) compares pEdit to 0, and if it doesn't point to a valid object (NULL, the same as zero in C++, is not a valid address for an object) it executes whatever is in the scope of the if .
If you intended to write if (pEdit==NULL) , then the observable difference is exaclty nil. In the first case you compare with NULL (while opening up for the kind of typing errors you did in this post), and in the second case you are effectively communicating to the reader of the code "does not point to anything valid".
I've seen some people swear by the style if (NULL==pEdit) , even that I personally think that's the most illogical way to express that condition, to not put themselves in the situation of assigning where they intended to only compare (possibly butterfingers or a lack of const ;->).
But in the end it's all up to style.
|
|
|
|
|
Mike Nordell wrote:
A nice side effect is that you get a smaller binary in an optimized build since the compiler removes all code within the scope of that if.
LMAO !
Vikram.
-----------------------------
KI klike KDE kand kuse kit, kbut KI kmust kadmit, kstarting kall knames kwith K kis ksilly. KI khope kthey kwill kgive kup kthis kwhole kscheme ksoon kand kcome kup kwith kreal knames.
pI vThink aHungarian nNotation vIs iA aWonderful nThing cAnd pEveryone avShould vUse pIt aAll dThe nTime, adNo nMatter pWhat dThe nContext, adEven adWhen vSpeaking.
|
|
|
|
|
Actually, writing if (NULL==pEdit) is the preferred way in most shops. It would have caught his if (pEdit=NULL) error.
/ravi
Let's put "civil" back in "civilization"
Home | Articles | Freeware | Music
ravib@ravib.com
|
|
|
|
|
Ravi Bhavnani wrote:
Actually, writing if (NULL==pEdit) is the preferred way in most shops.
Wallmart or ToysRus? Sorry, but I couldn't resist it. If I ever cought anyone writing such code I'd warn him. If I noticed it again he'd be fired - dark gray on lt. gray paper.
I've been whoring for more companies than I care to count, and in the end the only thing that matters is that you write maintainable code and make your point clearly. I've in all my years met exactly one person that actually used NULL==foo, and he hasn't had much neither published nor much success with that style in cooperative code. God forbid, since it's more illogical than mixing RPN with VB!
If you have any real figures to back your statement "most shops" up, maybe it can get some credibility. If not, it's just an opinion, even more worthless than my opinions in this matter (since I at least have had technical arguments to back my experiences up with).
|
|
|
|
|
Hello,
How can i set rtl setting in Rich Edit 2.0 or Greater.
Thanks
Asad Rasheed
|
|
|
|
|
Hi,
Did any one know how to get a message in Visual C++ when a smart card was inserted or removed ?
Thanks Very much
|
|
|
|
|
2 questions:
Q1:
I'm currently working on an MDI program with controlbars and the Stingray Toolkit. I want to save the program's last size and position in the registry when the program is closed. Currently i'm able to store the controlbars locations into the registry using the SaveBarState function. I basically need to create my own registry key or find some similar function that will store the program's size and position like the SaveBarState function. I'm not really sure how to go about doing this. I can get the information about the program, but i dont know how to store it to the registry properly.
Q2:
The reason I'm doing this is because i want to save the appearance of the program so when it runs again it looks just as it was when it was closed. I also want to be able to size the program according to the screen real-estate on the desktop (the first time it runs or if the resolution changes). The reason for this is i have a few systems im running this program on that use multiple monitors and i dont want the window stretched across them. I also want to have control over the window size and position when it runs. I have some rough code, but i dont know if i should do things this way.
some crappy code im playing with:
(This lets me control the size but im not sure how safe this method is)
//(inside MyApp())
CRect rClientSpace;
CRect rc2;
CWnd * pWndMain;
pWndMain=(CWnd *)pMainFrame;
pWndMain->GetWindowRect(rc2);
SystemParametersInfo(SPI_GETWORKAREA,0,&rClientSpace,0);
//checks horiz. and vert. to make sure it can make this window.
if ( ((rc2.left+1000) < rClientSpace.right)&&((rc2.top+750) < rClientSpace.bottom) )
{
pWndMain->SetWindowPos(NULL, rc2.left, rc2.top, 1000, 750,SWP_NOZORDER);//I want 1000x750 when feasible
}
pWndMain->GetWindowRect(rc2);//to see the results in debugger
Any ideas or code would be great.
Thanks !
Jeff Rothenberg
Project Engineer
Vector CANtech, Inc.
|
|
|
|
|
This is how I do it:
void CMainFrame::OnDestroy()
{
WINDOWPLACEMENT wndPlace;
if ( GetWindowPlacement( &wndPlace ) )
{
AfxGetApp()->WriteProfileInt( "WndPos", "Left", wndPlace.rcNormalPosition.left );
AfxGetApp()->WriteProfileInt( "WndPos", "Top", wndPlace.rcNormalPosition.top );
AfxGetApp()->WriteProfileInt( "WndPos", "Right", wndPlace.rcNormalPosition.right );
AfxGetApp()->WriteProfileInt( "WndPos", "Bottom", wndPlace.rcNormalPosition.bottom );
AfxGetApp()->WriteProfileInt( "WndPos", "Max", wndPlace.showCmd == SW_SHOWMAXIMIZED );
}
CFrameWnd::OnDestroy();
}
void CMainFrame::ActivateFrame(int nCmdShow)
{
CRect r;
r.top = AfxGetApp()->GetProfileInt( "WndPos", "Top", 0 );
r.left = AfxGetApp()->GetProfileInt( "WndPos", "Left", 0 );
r.bottom = AfxGetApp()->GetProfileInt( "WndPos", "Bottom", 400 );
r.right = AfxGetApp()->GetProfileInt( "WndPos", "Right", 600 );
MoveWindow( r );
if ( AfxGetApp()->GetProfileInt( "WndPos", "Max", -1 ) == -1 )
{
CenterWindow();
nCmdShow = SW_MAXIMIZE;
}
if ( AfxGetApp()->GetProfileInt( "WndPos", "Max", 0 ) == 1 )
nCmdShow = SW_MAXIMIZE;
CFrameWnd::ActivateFrame(nCmdShow);
}
There are 10 kinds of people - those that get binary and those that don't.
|
|
|
|
|
Thanks, that worked well.
Jeff Rothenberg
Project Engineer
Vector CANtech, Inc.
|
|
|
|
|
Jeff, What version of StingRay are you using. OT-Pro includes SECWorkspaceManagerEx() which saves the size/pos/state of all windows/toolbars etc. I use this in ED (see sig).
Also nore that SPI_GETWORKAREA is only for the primary monitor. If you want to force users only to use that, you are ok, but most users won't like that.
Instead use code like:
#include <multimon.h>
if ( WinPlatform() & ( WIN_98 | WIN_NT5 )
&& GetSystemMetrics( SM_CMONITORS ) > 1
)
{
pRect->top = GetSystemMetrics( SM_YVIRTUALSCREEN );
pRect->left = GetSystemMetrics( SM_XVIRTUALSCREEN );
pRect->right = GetSystemMetrics( SM_CXVIRTUALSCREEN ) + pRect->left;
pRect->bottom = GetSystemMetrics( SM_CYVIRTUALSCREEN ) + pRect->top;
}
There are articles here on Multimon which provides a good API for dealing with multiple monitors.
Neville Franks, Author of ED for Windows. Free Trial at www.getsoft.com
|
|
|
|
|
I'll have to try that out. The SPI_GETWORKAREA seems to work but probably because i have nView on my Geforce laptop video card. It acts like one wide monitor.
Jeff Rothenberg
Project Engineer
Vector CANtech, Inc.
|
|
|
|
|
electronicman_x wrote:
I'll have to try that out.
Yes you must.
electronicman_x wrote:
The SPI_GETWORKAREA seems to work but probably because i have nView on my Geforce laptop video card. It acts like one wide monitor.
This must be fooling SPI_GETWORKAREA. You need to disable this sort of stuff when developing and testing multi-monitor code.
Neville Franks, Author of ED for Windows. Free Trial at www.getsoft.com
|
|
|
|
|
Hello,
I am looking for a virtual machine simulator like VMware. VMware is the perfect tool, but unfortunately it's not that cheap.
Do you know a free virtual machine simulator? I tried bochs, SimOSv2 and plex86 but none of them convinced me...
-Dominik
_outp(0x64, 0xAD);
and
__asm mov al, 0xAD __asm out 0x64, al
do the same... but what do they do??
|
|
|
|
|
Dominik Reichl wrote:
Hello,
I am looking for a virtual machine simulator like VMware. VMware is the perfect tool, but unfortunately it's not that cheap.
Do you know a free virtual machine simulator? I tried bochs, SimOSv2 and plex86 but none of them convinced me...
If you want to only run Linux on the Virtual Machine, you could try UML (User Mode Linux). I know, the acronym they chose sucks, but it's a good, free one.
If you want to run Windows, have a dual 3Ghz P4 with hyperthreading and accept the VM performance to be of a Celeron 300Mhz, and do not care about having a BSOD every 5 minutes, I would recommend you bochs and plex86.
Kant wrote:
Actually she replied back to me "You shouldn't fix the bug. You should kill it"
|
|
|
|
|
To be precise, VMWare is far from a simulator. It's not even fit to be called an emulator. Let's call it by it's accepted name, a VM (Virtual Machine) monitor.
I also feel compelled to tell you that your statement that VMWare is a "perfect tool" is not only highly subjective, it's also flat out wrong. VMWare has quite a few flaws when it comes to virtualize a PC, but I digress.
There is AFAIK no "PC" machine simulators on the market (free or otherwise). Possibly VirtualPC (or whatever it is/was called) comes close, but I don't know.
The only free (as in Free Software) ones I know of are the ones you have already counted: Bochs , which is a cross platform PC emulator, and Plex, which is an IA32 VM monitor.
Since SimOS (according to their webpage) only simulates MIPS R4000, R10000 and the DEC Alpha CPUs, I won't even count it. Also, if you ever ran a real simulator in software you know how slow they are (meaning software such as "Flight Simulators" should often, if not always, actually be named "Flight Emulators") - making them close to unusable for anything but research.
Now that we've got the technical stuff out of the way, perhaps you could tell us what you want to do (though please follow up in a more appropriate forum, since this has exacly nothing to do with Visual C++ - even that I also am in error for even commenting on your question here).
|
|
|
|
|
Mike Nordell wrote:
I also feel compelled to tell you that your statement that VMWare is a "perfect tool" is not only highly subjective
"Perfect tool" for me. I don't know any better one (even commercial), I tried the demo version of VMware 4 and liked it in general, therefor I called it a perfect tool. This was a bit exaggerated and too general, I agree.
Mike Nordell wrote:
if you ever ran a real simulator in software you know how slow they are
Yes, I know. But I am not developing a real time shooter .
Mike Nordell wrote:
Now that we've got the technical stuff out of the way, perhaps you could tell us what you want to do (though please follow up in a more appropriate forum, since this has exacly nothing to do with Visual C++ - even that I also am in error for even commenting on your question here).
No, since there seem to be no free VMs I won't continue this idea.
Thanks for your reply and sorry for posting this into the Visual C++ forum
-Dominik
_outp(0x64, 0xAD);
and
__asm mov al, 0xAD __asm out 0x64, al
do the same... but what do they do??
|
|
|
|
|
For some of my projects, not all of the classes that appear in my workspace, or even in the Class view window appear in the Class Wizard. Why is this and how can I fix Class Wizard so that it will show all used classes in the project? (I'm using VC++6)
thanks for any help.
a2k
|
|
|
|
|
Try this:
delete the *.clw file in your project´s directory (while your project is open in Visual Studio). then press Ctrl+W and click in add-all (or something like that button) this should add all the classes in Class Wizzard.
I hope it help you.
regards
Daniel Cespedes
"Santa Cruz de la Sierra Paraiso Terrenal!"
daniel.cespedes@ieee.org
|
|
|
|
|
Hello !!!
I have a ListView with a ListCtrl inside.
Now I want tht the Horizontal Scroll Bar is not dissepearing when it is not more needet.
I Want it done with:
CListView::OnSize
{
SCROLLINFO si;
si.cbSize = sizeof(si);
si.fMask = SIF_DISABLENOSCROLL ;
SetScrollInfo(SB_HORZ, &si);
return CListCtrl::OnSize();
}
Why it doesent Work??
Thanx
schoni
|
|
|
|
|
Hallo Leute !!!
Ich suche das buch
Windows- Programmierung mit MFC.
von Jeff Prosise
auf Deutsch.
ist das beste, was es gibt, aber es ist nur noch auf Englisch zu erhalten.
Also wollte ich mal fragen, ob Jemand mir das deutsches Exemplar leihen oder verkaufen könnten.
Ich würde auch eine Leih-Gebühr bezaheln und natürlich die Post!!!
Ich bin etwas verzweifelt, weil kein mensch diese Buch verkauft....
Bitte melden unter:
cadnt@web.de
|
|
|
|
|
So us English-speaking folks can help you:
Hello of people!!! I look for the book Windows programming with MFC. of Jeff Prosise on German. is the best, which gives it, but it is to be only received on English. Thus I wanted to ask times whether someone that German copy to me could borrow or sell. I became also a leih-Gebuehr bezaheln and naturally the post office!!! I despaired somewhat, because no humans sell this book.... Please announce under: cadnt@web.de
You might e-mail Mr. Prosise directly and see if it was even published in German.
|
|
|
|
|
|
Hi guys
I'm trying to implement like a scoreboard app and I'm using CSstatics with a bitmap inside.
The problem is that I cannot align correctly in the VC++ Editor.
The 2 first are correctly aligned but the third one is, or one pixel too far or one pixel too near. Is this a common problem to you?
Maybe this has a silly solution but I'm loosing a lot of time, trying and not getting the controls aligned.
Best Regards
Dr.Pi
|
|
|
|
|
are you using guides 7
if it becomes too much of a real-estate problem in the resource editor, just skip it and do it all manually in the code.
Maximilien Lincourt
For success one must aquire one's self
|
|
|
|
|
Thanks, I was thinking that it is the only solution.
Best Regards
Dr.Pi
|
|
|
|
|