|
Is Visual C++.net compliant with Standard C++? or any of them ?
RanBlade
aka Eric Ranaldi
"Passion is what drive you to stay until 4am ficing that minor bug that hardly anyone would notice...Passion is where great games come from. If you don'l live and breath games, you shouldn't be in the gaming industry" - Dave Pottinger, Ensemble Studios
|
|
|
|
|
There are no 100%-compliant compilers, it's just a question of degree. VC7 is supposed to be significantly better than VC6 (which is not hard to do ).
If you Google around, there are comparative reviews. The C++ Users Journal usually has good ones.
"Sucks less" isn't progress - Kent Beck [^]
Awasu 1.1.2 [^]: A free RSS reader with support for Code Project.
|
|
|
|
|
Visual C++ 7.1 is one of the most C++ standard compliant compilers available. It still lacks some of the more esoteric features, but the odds of you finding that to be a problem is extremely slim (moreover, most compilers aren't compliant with these features.)
Incidentally, VC++ 6.0 was fairly compliant. It did have problems with some template specifications like partial specialization, but it was still more compliant than many alternatives, all claims to the contrary.
In the meantime, it will take a while of learning C++ before you start stumbling with those parts of VC++ 6.0 that aren't compliant with the standard. Then you can move to VC++ 7.1. And if you want a compiler that is 100% compliant, forget it, one doesn't exist.
Joe Woodbury
When all else fails, there's always delusion.
- Conan O'Brien
|
|
|
|
|
Hello everyone
I'll try to explain what I want my program to do.
I'll use another program to make it easier to understand, let's say Microsoft Word.
So I minimize Microsoft Word and then run my program. Microsoft Word is running, but not active.
What I'd want my program to do, is to keep sending message strings to microsoft word.... let's say
hello [10 second pause]
world [10 second pause]
hello [10 second pause]
world [10 second pause]
and so on, while Microsoft Word is still minimized. And the program would stop sending strings to Microsoft Word until it's either stopped or paused.
Can anyone tell me how I could do this?
Thanks a lot,
~Michael
|
|
|
|
|
Lets see, how do I explain this. I need to read in a char and a double for each struct and print out its binary representation within that struct. For some reason when I read in the char and double for each struct all at once (like it is coded below) the binary representation gets messed up. If I only read in for one struct it seems to print out the binary rep. just fine, whether or not packed or unpacked.
There seems to be a memory problem when reading from all the structs at once.
Maybe one of you more experienced programmers can make some sense of this code and what might be the problem with printing out the binaries like they should be.
Thank you all for you help.
#include <stdio.h>
typedef unsigned int DWORD32;
#pragma pack(push,4)
typedef struct
{
char i;
double x;
}unPacked;
#pragma pack(pop)
typedef struct {
char i;
double x;
}packed_structure_t;
typedef struct
{
DWORD32
i :8,
x :23;
}bitField32;
void PrintBits(int size, unsigned char *bytes)
{
int j=0;
int on = 1;
int off = 0;
int t;
char *b = ((char *) &bytes);
int i;
for (i=0; i<size; ++i)
{
printf("\nByte%d ",j++);
for(t=7; t>=0; --t)
if(bytes[i] & (1 << t))
printf("%d",on);
else
printf("%d",off);
}
printf("\n\n");
}
int main(int argc, char *argv[])
{
bitField32 s;
unPacked n;
packed_structure_t p;
for(;;) {
int i;
double x;
printf("\n");
printf("Type in an int and a double: ");
scanf(" %d %lf", &i, &x);
printf("\n");
p.i=i;
p.x=x;
printf("Packed binary representation of a structure:\n");
PrintBits(sizeof(p),(unsigned char*)&p);
n.i=i;
n.x=x;
printf("Unpacked binary representation of a structure:\n");
PrintBits(sizeof(n),(unsigned char*)&n);
s.i=i;
s.x=x;
printf("Bit Field representation of a structure:\n");
PrintBits(sizeof(s),(unsigned char*)&s);
}
}
|
|
|
|
|
A double is 64 bits. A float is 32 bits.
Larry J. Siddens
Cornerstone Communications
TAME THE DOCUMENT MONSTER
www.unifier.biz
|
|
|
|
|
Yes, a double is 64 and a float is 32. And...?
|
|
|
|
|
Your bitfield is too small.
Larry J. Siddens
Cornerstone Communications
TAME THE DOCUMENT MONSTER
www.unifier.biz
|
|
|
|
|
Hi !
I have a small MFC SDI application, with "App -> Frame Window -> Form View" structure. Now, Form View has a member - a modeless dialog object. When the form view is created, it creates the modeless dialog, use it's controls, get stuff from there and so on.. Everything works fine..
But then, the PROBLEM
How can I access this very same modeless dialog from the Frame Window's level ? The modeless dialog is a child window of the Frame Window, but I have no clue about it's ID, which would be needed for CWnd::GetDescendant. I used the CDialog::Create with a resource ID to construct the dialog in the first place. So couldn't specify an ID there either.. Any clues on finding it ?
Greets,
Antti Keskinen
----------------------------------------------
The definition of impossible is strictly dependant
on what we think is possible.
|
|
|
|
|
Note to self: "Experiment more before asking"
FindWindow was the answer. Although it's a bit "odd" way of doing it, it works. Accompanied with a test to 'IsChild', and sure match is made.
-Antti
----------------------------------------------
The definition of impossible is strictly dependant
on what we think is possible.
|
|
|
|
|
I have the following code to draw something:
void pteTable::Draw(CPaintDC* dc)<br />
{<br />
CBrush Brush;<br />
CBrush* OldBrush;<br />
<br />
Brush.CreateSolidBrush(RGB(0, 0, 0)); <br />
<br />
OldBrush = (CBrush*)dc->SelectObject(Brush);
<br />
dc->Rectangle(1, 1, 100, 100);<br />
<br />
dc.SelectObject(OldBrush);
Brush.DeleteObject();<br />
}
I have simply commented out the line where it crashes and stressed it by calling this function hundreds of times and my resource indicator doesn't show me losing any available resources.
Is it safe to simply not select the old brush back into the CPaintDC?
If not, does anyone know why this code is crashing?
The debugger showed that OldBrush was not NULL.
|
|
|
|
|
How does it crash? Have you traced into the MFC code to see where exactly it's happening?
BTW, I recommend you use dc->FillRect (or even FillSolidRect if you just need a black box) instead of Rectangle. If I remember correctly, FillRect is much faster and it doesn't need you to call SelectObject.
Regards,
Alvaro
Can I ask you a question?
|
|
|
|
|
It crashes in afxwin1.inl :
_AFXWIN_INLINE HGDIOBJ CGdiObject::GetSafeHandle() const<br />
{ return this == NULL ? NULL : m_hObject; }
I need to use Rectangle because need the border around the rectangle. All of my CGDIObjects are crashing when I try to restore the old objects (CFont). I just showed you the smallest piece of code that still produces the unhandled exception.
I am passing the function a CPaintDC* from within the OnPaint handler.
Does the fact that it is a CPaintDC mean I don't need to restore the old CGDIObjects?
I indicated in a comment on my first post the exact line where it is crashing. It is crashing when I try to restore the old CBrush.
Is it because the old CBrush was declared as CBrush* but never initialized with CreateSolidBrush?
I didn't think I needed to do that since it's value would be assigned by the return value of dc->SelectObject(NewBrush).
Everything is working fine, but I have a nagging feeling that something isn't right.
|
|
|
|
|
|
That did it. I made the assumption that because the SelectObject took my CBrush without complaining that all was OK. WHen I was looking at it (the actual brushes are in an array) I was somehow thinking that they were being treated as pointers because they were array elements. I know - dumb. But I have been up 38+hours and everytime I looked at it I saw a CBrush* because I was thinking of the array and not its array elements:
CBrush GroupBrushes[NUM_GROUPS];<br />
CBrush* OldBrush;<br />
<br />
for(int x = 0; x < NUM_GROUPS; x++)<br />
GroupBrushes[x].CreateSolidBrush(GetGroupBGColor(x)); <br />
<br />
for(x = 0; x < NUM_ELEMENTS; x++)<br />
{<br />
OldBrush = (CBrush*)dc->SelectObject(GroupBrushes[Elements[x].GetGroupNumber()]);<br />
<br />
dc->Rectangle(<br />
((Elements[x].GetColumn() - 1) * CellWidth) + TableBorderWidth, <br />
((Elements[x].GetRow() - 1) * CellWidth) + TableBorderWidth, <br />
((Elements[x].GetColumn() - 1) * CellWidth) + CellWidth + TableBorderWidth, <br />
((Elements[x].GetRow() - 1) * CellWidth) + CellWidth + TableBorderWidth);<br />
<br />
dc->SelectObject(OldBrush);<br />
}
I just added the & where appropriate and all is good in the world now.
|
|
|
|
|
how can i get a double from DB_NUMERIC?? any help will be appreciate.
"Now I guess I'll sit back and watch people misinterpret what I just said......"
Christian Graus At The Soapbox
[^]
|
|
|
|
|
IDataConvert. You need something like this;
DB_NUMERIC dbnumeric ;
double dbl;
IDataConvert* pCon = NULL;
CoCreateInstance(CLSID_OLEDB_CONVERSIONLIBRARY,
NULL,
CLSCTX_INPROC,
IID_IDataConvert,
reinterpret_cast<void**>(&pCon));
if (SUCCEEDED(pCon->CanConvert(DBTYPE_NUMERIC,DBTYPE_R8)))
{
pCon->DataConvert(DBTYPE_NUMERIC, DBTYPE_R8,
sizeof(struct tagDB_NUMERIC),
&dbnumeric,
reinterpret_cast<void*>(&dbl),
sizeof(double)),
DBSTATUS_S_OK, 0, dbnumeric.precision,dbnumeric.scale,
DBDATACONVERT_DEFAULT);
}
pCon->Release();
I've omitted error checking on the CoCreateInstance and the conversion itself, but this should help.
<b>S</b><i>teve </i><b>S</b>
|
|
|
|
|
Hi Guys,
This problem is not related to VC++ or, MFC
but it really is bothering me, thought someone can help me.
In my notebook the speaker volume has become too low, I hardly can hear anything. I have maximized all the volume options in the pc including the one at the system tray, but still no result. I had installed AC3 filter a few days ago, I thought it might be because of that, so I uninstalled it, but the volume is still inaudible, using an amplifier speaker I can hear a little bit. Can anybody help? BTW, I have xp home on my pc.
|
|
|
|
|
Has it always been low? Is it all audio formats, or just certain ones?
Five birds are sitting on a fence.
Three of them decide to fly off.
How many are left?
|
|
|
|
|
earlier it was pretty loud and for all audio formats , even system sounds are low now
|
|
|
|
|
Has the master volume been altered?
Five birds are sitting on a fence.
Three of them decide to fly off.
How many are left?
|
|
|
|
|
i didn't alter anything AC3 filter might have. how to check what is the master volume? I checked from control panel -> sound that the voulem is set to be maximum
|
|
|
|
|
Double-click the speaker in the icon tray. You'll have a volume for the different audio types (e.g., wav, midi, cd), and then a master volume.
Five birds are sitting on a fence.
Three of them decide to fly off.
How many are left?
|
|
|
|
|
|
Are any of the other volumes set to minimum? What is the possibility that the speaker is busted?
Five birds are sitting on a fence.
Three of them decide to fly off.
How many are left?
|
|
|
|