|
which is better between the following two ?
(1) int i;
for(i=0; i<8; i++){ }
and
(2) for(int i=0; i<8; i++){ }
|
|
|
|
|
Well, to qoute an etseemed former colleauge, 'it depends'.
for(int i = 0; i < 19; i++) {
++i;
}
++i;
It's a question of scope basically, muddied by the fact that in the C++ standard the scope of i here should end with the '}' - but not all compilers support this yet. Stylistically, I like this form, and it follows the practise of declaring vars when you need them. Of course, form one allows you to reuse i in another loop on a conforming compiler.
|
|
|
|
|
what is diff between the following two c++ statements? Where to use which?
(1) for(int i=0; i<8; i++) and
(2) for(int i=0; i<8; ++i)
|
|
|
|
|
The second might be considered academically more efficient, since there's no need to create a copy of i.
In practise, however, compilers tend to be smart enough to generate the more efficient code in a context like this. I forget author of the CUJ article I read on this - one of the regular QA guys - Becker?.
Had me preferring the second version for a couple of days, but old habits die hard
|
|
|
|
|
We should blame the guy who gave the name C++ to this language but not ++C
Suha
|
|
|
|
|
In the case of the for loops, effectively nothing,
but in the case of :-
char array1[10], array2[10];
char c = 'a';
int i = 0;
int i2 = 0;
while(i < 10)
{
array1[i++] = c;
array2[++i2] = c;
c++;
}
The two arrays are not the same!
Indeed array2[0] is uninitialised, and array2[10] doesn't exist! (well you've overwritten the end of the array
So if you are going to use ++i careful how you use it in
your (especially compound) statements.
Stephen Kellett
|
|
|
|
|
Does anyone has come across procedures in recording and playing back voices on a microphone using MS VC++ 6.0 API ?
|
|
|
|
|
I just posted this with you in mind,
But I'm unsure if its what you are looking for
Any how
Good luck
Regardz
Colin Davies
Sex at Noon Taxes
|
|
|
|
|
Does anyone has come across procedures in recording and playing back voices on a microphone using MS VC++ 6.0 API ?
|
|
|
|
|
C:\msdn cd1\Samples\Msdn\Techart\asfasasfas\print.cpp(578) : error C2440: '=' : cannot convert from 'void *' to 'struct HINSTANCE__ *'
Conversion from 'void*' to pointer to non-'void' requires an explicit cast
C:\msdn cd1\Samples\Msdn\Techart\asfasasfas\print.cpp(590) : error C2440: 'initializing' : cannot convert from 'void *' to 'struct tagDEVNAMES *'
Conversion from 'void*' to pointer to non-'void' requires an explicit cast
Can anyone tell me what error is this and how to rectify it?
Thanks a lot
|
|
|
|
|
This is sometimes a symptom of porting C code to C++, since C's parameter type-checking is less strict than C++.
I think you'll get some more info on this if you search this forum for 'cast' or 'explicit'. Always a fun topic!
|
|
|
|
|
My code is below and the error occurs at "hOldBitmap = SelectObject(hMemDC, hBitmap);" show below. I tried adding static_cast< ...> in front of the input hMemDC & hBitmap but got syntax error. So what should be done to the code?
HBITMAP CopyScreenToBitmap(LPRECT lpRect)
{
HDC hScrDC, hMemDC; // screen DC and memory DC
HBITMAP hBitmap, hOldBitmap; //
....
hScrDC = CreateDC("DISPLAY", NULL, NULL, NULL);
hBitmap = CreateCompatibleBitmap(hScrDC, nWidth, nHeight);
hMemDC = CreateCompatibleDC( hScrDC);
.....
hOldBitmap = SelectObject(hMemDC, hBitmap);
}
|
|
|
|
|
try:
hOldBitmap = (HBITMAP)SelectObject(hMemDC, hBitmap);
This is actually a 'C style' cast. You'll see this kind of casting done a lot in typical Windows code.
Also, one often resorts to it in dealing with MFC functions that return a CWnd, when what we really want is a CWnd derivative:
CButton *pButton = (CButton*)GetDlgItem(IDC_MY_DIALOGS_BELLY_BTN);
HTH
|
|
|
|
|
I thank you for your earlier suggestion which helped solve most of my errors but it could not solve one error.
extern HANDLE ghDLLInst; // Handle to the DLL's instance. Set in DllMain.
.....
...
int APIENTRY InstallHook (HWND hWnd, BOOL bCode )
{
....
...if (bCode == bHookInstalled)
return 0;
if (bCode)
{
hHook = (HHOOK)SetWindowsHookEx(WH_KEYBOARD, (HOOKPROC)KeyboardHook, (HANDLE)ghDLLInst
, 0);
......
}
....
}
The error lies in the line"hHook = (HHOOK)SetWindowsHookEx(WH_KEYBOARD, (HOOKPROC)KeyboardHook, (HANDLE)ghDLLInst
, 0);" the complier says that cannot convert parameter "ghDLLInst" from 'void *' to 'struct HINSTANCE__ *' Conversion from 'void*' to pointer to non-'void' requires an explicit cast.
So how to solve this ? Anyway thanks alot for your earlier help.
|
|
|
|
|
Well...
hHook = (HHOOK)SetWindowsHookEx(WH_KEYBOARD, (HOOKPROC)KeyboardHook, (HINSTANCE)ghDLLInst, 0);
might work.
But gee - this is a lot of casting... I guess in windows API (which is written in C btw) you could get away with using a HANDLE for an HINSTANCE.
This is probably what you'll need to do, but try to minimize the casts where you can. It's generally not a good thing to use casts because you are disabling the compilers type checking mechanism.
|
|
|
|
|
Does anyone has know about saving an output say , DIB into a newly created file in VC++ 6.0 for win98 ? This newly created file is also done by the program. Thanks for helping.
|
|
|
|
|
Hi , i want to enquire if anyone knows how to import icon & bmp into .rc file but the problem is if the .rc file has got error it can only be opened as .txt file and so how am i going to carry out doing it ?
|
|
|
|
|
The error means you have a conflict you will need to reslove with the .rc file. Let it show you where the error is, and probably delete the lines in question.
BACK YOUR FILE UP FIRST !!!
Christian
The content of this post is not necessarily the opinion of my yadda yadda yadda.
To understand recursion, we must first understand recursion.
|
|
|
|
|
Hello
I would like to include a toolbar on my parent CDialog class.
On many books it is written how to had a toolbar to a CFrameWnd class but not on a simple dialog window. I tried to adapt it to a CDialog class with no success.
Does anyone have an idea ?
Thanks
|
|
|
|
|
The only way to do it is simulate it with your own window full of buttons - CDialog does not support toolbars.
Christian
The content of this post is not necessarily the opinion of my yadda yadda yadda.
To understand recursion, we must first understand recursion.
|
|
|
|
|
I wanted to know if VC++ was structured only like Visual Basic. That is to say that you have no choice but to just click+drag controls to your window and code for each separate one. Or can you do hard code and make your own buttons, checkboxes, windows, graphics, etc etc. If it can be used in the latter method, can MFC also be used? Or must you use the Windows SDK? I don't have the VC++ program yet, which is why I'm asking. And I'm rather new to windows. I've been using a Mac before so this is quite different. Also, I've heard both the name Visual C++ and Visual Studio. Are these synonymous or are they two separate programs with different uses? Thanks for your help.
|
|
|
|
|
You can certainly make totally customized controls. Most controls have an "owner draw" style, which means you're responsible for writing the code to paint the control. You can use MFC or the SDK, they both work.
There are tons of articles here about owner-drawn controls. Check out the Buttons section - there are several articles there.
Visual Studio includes VC, VB, Fox Pro, Visual InterDev, Visual Source Safe, and Visual J++. VC is also sold stand-alone.
--Mike--
http://home.inreach.com/mdunn/
"That probably would've sounded more commanding if I wasn't wearing my yummy sushi pajamas."
-- Buffy
|
|
|
|
|
Here is my error:
Compiling resources...
C:\msdn cd1\Samples\Msdn\Techart\asfasasfas\k.rc(14) : fatal error RC1015: cannot open include file 'dialogs.h'.
Error executing rc.exe.
Why is it i cannot open this .h file i have already added to my project?
|
|
|
|
|
You may need to set a path for the resource compiler - assuming you have the file somewhere, try opening the Project|Settings (Resources tab) and setting an Additional resource include path to the location of dialogs.h.
|
|
|
|
|
In a Visual C++ project you will find under the resource files a String file. If you dubble click a window will open and the string table will appear with in the first column a STRINGID and in the second column a text.
You can use this strings in your application with a simple statement liks this:
CString strMyString;
strMyString.LoadString(STRINGID);
|
|
|
|