|
Yes, but your code is much more maintainable: you have no dependcy at all between the different classes and the 'factory'. The factory only knows the base class. You can even do better by using a template factory so that you have a completely generic factory.
And also, whenever you add a new class to your architecture, the only thing you have to change is the file in which you have your class (which must be created).
|
|
|
|
|
Cedric Moonen wrote: Yes, but your code is much more maintainable
Yeah Just teasing! You could actually implement macros similar to MFC's
DECLARE_DYNCREATE/IMPLEMENT_DYNCREATE to make maintenance really simple.
|
|
|
|
|
Hi everyone,
I need to convert a unicode LPWSTR to multi-byte LPSTR .wcstombs _s doesn't do good,because it replaces non-english characters to their english likes (like ş->s and ı>i).
WideCharToMultiByte function seems to do this right,but the double-byte characters in the converted LPSTR are interpreted as if they are two single-byte characters.
to be more specific,I use MAPI dll to send an e-mail.MAPI dll expects all strings to be LPSTR which maps to int .but i want to use non-english characters in e-mail's body/subject/attached files' names,and couldn't find a solution yet.it's all good when strings are in english,because all unicode characters map to a signed char then.but when i get a non-english character,"problem".LPSTR seems to interpret all characters to be single-byte.
any suggestions?
|
|
|
|
|
ajitatif angajetor wrote: MAPI dll expects all strings to be LPSTR which maps to int.but i want to use non-english characters in e-mail's body/subject/attached files' names,and couldn't find a solution yet
What you need is encoding.
There are several types of encoding around, some standards, some more habits grown out of prolonged use.
Read about MIME.
"We trained hard, but it seemed that every time we were beginning to form up into teams we would be reorganised. I was to learn later in life that we tend to meet any new situation by reorganising: and a wonderful method it can be for creating the illusion of progress, while producing confusion, inefficiency and demoralisation."
-- Caius Petronius, Roman Consul, 66 A.D.
|
|
|
|
|
I have to support French for an application.
All the resources of my application are stored in a DLL for French. when select default language, main resource is loaded and if select french, french dll of resource is loaded. Everything is fine as long as no custom controls are used.
I get a problem with custom control when load resource dll:
In old version, there is a control which managed by ActiveX Control, when i load resource dll (french) -> DONE:
CONTROL "",IDC_PREF_DIALOG_HIST,
"{E41EAFC4-F536-11CF-93A1-0000C0A61E5A}",WS_TABSTOP,7,7,
397,114
But in new version, this control is edit to Custom Control and manage by a new class (CHistogramCtl). when I use default language (English) => OK. But when I use french language (resource DLL), I could not load dialog which contain this control.
CONTROL "Custom2",IDC_PREF_DIALOG_HIST,"Histogram_Ctrl_Class",
WS_TABSTOP,7,7,397,118,WS_EX_CLIENTEDGE
Any suggestion will be helpful.
Thanks in advance,
Papais
|
|
|
|
|
Hi,
Does anybody know how to determine the unavailable characters(replaced by a square) from a font?
Thank You
|
|
|
|
|
how about GetTextExtentExPoint()?
nave
|
|
|
|
|
how could I use it? since the font replaces the "unavailable" characters with a square? it's size is about the same with the the others
|
|
|
|
|
|
Does isprint()/iswprint() help?
|
|
|
|
|
or maybe GetGlyphIndices()
|
|
|
|
|
Dear All,
I had a problem above this issue since last month. I can get the updated data of frequency value using NI-DAQmx card in Win32 Debug accurately. However, I already checked with Dependency Walker for necessary *.dll and traced line by line, I can't see any bug and error from my program.
I hope someone will give me some idea for that.
Thanks and best regards
|
|
|
|
|
Dear All,
I have some problem in converting Hex string to ASCII value. For example, I have Hex string of "50" and I would like to display the ASCII equivalent "P".
If i know the value to convert i can just use
CString str;
str = "\x50";
to convert to ASCII value. But the Hex value is entered by the user. So I dont know how to do that.
Can Anyone please help me in this?
Thanks in Advance.
Regards,
Ram
|
|
|
|
|
Would ::strtol() help you in this situation? Info here.[^]
"It's supposed to be hard, otherwise anybody could do it!" - selfquote
|
|
|
|
|
Can you please give me an example?
Regards,
Ram
|
|
|
|
|
Ram Murali wrote: Can you please give me an example?
I provided a link in my previous post to MSDN.
Follow it and you will find another link in the MSDN article to an example.
"It's supposed to be hard, otherwise anybody could do it!" - selfquote
|
|
|
|
|
But this function is to convert str to long. how can i get a character?
Regards,
Ram
|
|
|
|
|
char cAsciivalue = nlong;// the long value u got
nave
|
|
|
|
|
Ram Murali wrote: But this function is to convert str to long.
Of course; and that return value is the ASCII code for the character.
E.g. if your user has input "50" the long return value of ::strtol() will be 0x50, which is 80 in decimal format, and this is the ASCII character code for 'P'.
"It's supposed to be hard, otherwise anybody could do it!" - selfquote
|
|
|
|
|
Thanks for your effort to solve my problem. Its working well. Thanks again.
Regards,
Ram
|
|
|
|
|
Ram Murali wrote: For example, I have Hex string of "50" and I would like to display the ASCII equivalent "P".
CString strHex = "0x50";
char *pEnd;
printf("%c\n", strtol(strHex, &pEnd, 16));
"Approved Workmen Are Not Ashamed" - 2 Timothy 2:15
"Judge not by the eye but by the heart." - Native American Proverb
|
|
|
|
|
Thanks a lot. Its working well.
Regards,
Ram
|
|
|
|
|
Hi,
How we can draw a slanding rectangle or ellipse using VC++?
I tried GDI+ but its quit time consuming can any body suggest an alternative method
Tony
|
|
|
|
|
|
Try code like this:
CPaintDC dc(this);
static const double pi = 4.0*atan(1.0);
static const double degToRad = pi/180.0;
static const double angle = 45.0*degToRad;
static const int cx = 200;
static const int cy = 200;
static const float cosAngle = static_cast<float>(cos(angle));
static const float sinAngle = static_cast<float>(sin(angle));
static const XFORM xf =
{
cosAngle, sinAngle,
-sinAngle, cosAngle,
-cx*cosAngle+cy*sinAngle+cx, -cx*sinAngle-cy*cosAngle+cy
};
int oldMode = ::SetGraphicsMode(dc.GetSafeHdc(), GM_ADVANCED);
::SetWorldTransform(dc.GetSafeHdc(), &xf);
dc.Ellipse(cx-100, cy-50, cx+100, cy+50);
::SetGraphicsMode(dc.GetSafeHdc(), oldMode);
Steve
|
|
|
|