|
Sorry , I forgot a line in the illustration
struct Stru_A{
char Name[30];
int Age;
}
struct Stru_A * pA1 = new Stru_A();
struct Stru_A * pA2 = new Stru_A();
strcpy(pA2->Name, "123");//<====== omitted line
strcpy(pA1->Name, pA2->Name);
Does it make sense with the originaly omitted line added?
|
|
|
|
|
Yes that's fine with the line added. You've initialized pA2->Name before using strcpy to
copy it to pA1->Name.
Like James R Twine stated, without doing this, strcpy will continually copy chars until a
0 is found in the source string.
Mark
|
|
|
|
|
Hi,
Can anyone tell me whether it is possible to draw vertical text. using the CDC class. I want to output vertical text to show the lables of the X axis of my bargraph control.
thanks.
|
|
|
|
|
|
Sorry, I want to drae Vertical text not horizontal text .
That method doesn't work. I want to draw a string from bottom to top, letters rotated 90 degrees left?
|
|
|
|
|
You need to play around with the LOGFONT structures members. I think it was the escapement member that you need to alter. Another method would be to draw to an offscreen bitmap, and rotate the whole thing. The latter method would probably be the best solution since modifying the font will yield an ugly output.
|
|
|
|
|
oh;P I think you want to draw a vertical text I think you get your answer of WalderMort reply
|
|
|
|
|
Type something like this:
CPaintDC dc(this);
LOGFONT lf;
lf.lfHeight = -MulDiv(10, GetDeviceCaps(dc, LOGPIXELSY), 72);
lf.lfWidth = 0;
lf.lfEscapement = 900;
lf.lfOrientation = lf.lfEscapement;
lf.lfWeight = FW_DONTCARE;
lf.lfItalic = FALSE;
lf.lfUnderline = FALSE;
lf.lfStrikeOut = FALSE;
lf.lfCharSet = DEFAULT_CHARSET;
lf.lfOutPrecision = OUT_DEFAULT_PRECIS;
lf.lfClipPrecision = CLIP_DEFAULT_PRECIS;
lf.lfQuality = DEFAULT_QUALITY;
lf.lfPitchAndFamily = DEFAULT_PITCH | FF_DONTCARE;
_tcscpy(lf.lfFaceName, _T("Arial"));
CFont fnt;
fnt.CreateFontIndirect(&lf);
CFont *pOldFont = dc.SelectObject(&fnt);
dc.TextOut(50, 50, _T("Vertical text"));
dc.SelectObject(pOldFont);
Steve
|
|
|
|
|
Hi, May i know how to solve this problem?
I'm using a dialog based MFC application. I have a custom control to display a square. I need it to display the square only after i click on a button. However i notice that, after inserting a button in the dialog, and using the wizard to add the member variable "m_button" and adding the message "OnClickButton" the program dun execute. May i know the reason for this. What should i do to ensure that it is able to execute? Thanks for any help.
|
|
|
|
|
What is "dun execute"? Do you mean "done execute"? Does that happen when you click the button or do you do something else to cause that?
|
|
|
|
|
sorry, typo error. My meaning is the program don't execute when i click on the execute icon. No dialog was generated although no compilation error. Did i miss in writing any function or messages?
|
|
|
|
|
You need to debug the program. Put a breakpoint at the beginning of the InitInstance. There is probably a problem with the dialog.
Or before using the breakpoint, just execute the program using the debugger and then look at the debug messages after the program finishes. There probably is a message indicating a problem.
|
|
|
|
|
|
Nope, no error in compilation. Only problem is the dialog can't even be generated when i click on execute icon("!").
|
|
|
|
|
Can you show your code that has this problem
|
|
|
|
|
Can you show code ?
By any chance you are using rich edit control, on your dialog ?
|
|
|
|
|
Ok what is the most efficient way in c++ to set the bit of data A to the bit of data B. Ex:
a.7 = b.6;
right away i realized i have to check up to four conditions, and this is what i got:
if( b & ( 1 << 6 ) > 0 && a & ( 1 << 7 ) == 0 ) a |= ( 1 << 7 );
if( b & ( 1 << 6 ) == 0 && a & ( 1 << 7 ) > 0 ) a -= 128; // i.e. a = 1xxxxxxx - 10000000
any1 knows a better way?
|
|
|
|
|
bool bBitSet = (B & 64) != 0;
A &= ~128;
A |= bBitSet ? 128 : 0;
|
|
|
|
|
nice. I also came up another with way:
if( b > 63 ) a |= 128 else a &= ~128;
|
|
|
|
|
|
dammit, your right. I guess with my code i could do it this way:
if( b & ( 1 << 6 ) > 0 ) a |= 128 else a &= ~128;
Also, is the > 0 part necessary, or does extracting the bit result to 1 or zero?
I am at work right now, thatz why i asking.
|
|
|
|
|
Just test (b & 64) to tell if that bit is 1
|
|
|
|
|
I'm trying to write a fuction which will accept a reference to a structure. I figured I'd start by just passing a structure to a function, then move on to the refrence. However, I can't figure the syntax.
In Ladder.h- I declare a function and set up a structure
void WalkLadderUpDown(struct PriceLadder TransPL);<br />
<br />
typedef struct <br />
{<br />
double one;<br />
double two;<br />
double three; <br />
} PriceLadder;<br />
<br />
PriceLadder TransPL;
In Ladder.cpp- I define the function to receive an instance of PriceLadder
void Ladder::WalkLadderUpDown(struct PriceLadder TransPL)<br />
{<br />
TransPL.one = 1;<br />
TransPL.two = 2;<br />
TransPL.three = 3;<br />
}
The compiller sys the function is overloaded. Any ideas on how to code this?
|
|
|
|
|
You don't need "struct" in the type -
typedef struct
{
double one;
double two;
double three;
} PriceLadder;
void WalkLadderUpDown(PriceLadder TransPL);
PriceLadder TransPL;
void Ladder::WalkLadderUpDown(PriceLadder TransPL)
{
TransPL.one = 1;
TransPL.two = 2;
TransPL.three = 3;
}
|
|
|
|
|
Oliver123 wrote: In Ladder.h- I declare a function and set up a structure
void WalkLadderUpDown(struct PriceLadder TransPL);
Are you sure that is in your definition of the Ladder class?
Are you getting other errors? I suspect that if you have other errors and fix them, then this one that you are asking about will go away.
|
|
|
|