|
hi
I get a linker error (WinMain@16 or something like that) when I try to build my app with unicode.
I've defined the _UNICODE macro in the config-settings. Are there any other steps necessary to successfully build a unicode app ?
different question:
I have, for example, 2 string tables (1x german, 1x english) or dialog templates... (german is default)
Now the question -> What steps are necessary to make a build with the english
resources ?
thanks
widi
vc6 sp5, mfc, winxp
|
|
|
|
|
MSDN->Contents->books->Developing International Software for Windows 95 and Windows NT. The new edition was released by microsoft press earlier this year.
There is also an article on internationalization at codeproject (and some otehr articles).
:(Sorry, I can not remember what other steps are required after defining _UNICODE.
Trust in the code Luke. Yea right!
|
|
|
|
|
Hi,
i have some IO and memory initialize code within an object
constructor. i wish to have an null object if there is io operation
fail in the constructor. ie:
CXXXManager *cm = new CXXXManager();
if(cm == NULL){// something had failed}
how the constructor with the above ability can be implemented?
thank you.
regards
yccheok
|
|
|
|
|
yccheok wrote:
i wish to have an null object if there is io operation fail in the constructor.
Constructors will never return NULL.
If you want to represent an error in a constructor you have a number of choices.
1/ Set an internal flag in your class to show that the IO Operation failed, and check that flag before you continue. The standard iostream library does this.
2/ Throw an exception
try
{
CXXXManager *cm = new CXXXManager();
}
catch(IOEx& ex)
{
}
Solution 2 is the preferred solution, at least in my mind, because errors always have to be dealt with.
Note: that this is different to a failure with the allocation of memory, in which some non-standard compilers (eg/ MSVC6) will return NULL. The accepted behavior for memory allocation failure is now to throw std::bad_alloc
|
|
|
|
|
it might be better to call a separate method rather than doing the code in the constructor - it's a bit easier, although exceptions are a good idea, as pointed out above...
Ryan
Being little and getting pushed around by big guys all my life I guess I compensate by pushing electrons and holes around. What a bully I am, but I do enjoy making subatomic particles hop at my bidding - Roger Wright (2nd April 2003, The Lounge)
Punctuality is only a virtue for those who aren't smart enough to think of good excuses for being late - John Nichol "Point Of Impact"
|
|
|
|
|
Hi All,
I got a problem in debugging the server of an existing client-server application in my project.I tried to Run the client in debug mode than run the server.and then go to vc++ build ->Start Debug ->Attach to process.But i didn't see any processes listed their so that i can attach it to the client source code.I don't know what is wrong?I am not getting any clue for last 2-3 work-days.
Please help.
|
|
|
|
|
Does anybody know the format of the Visual C++ Intellisense database file, i.e. the ncb file?
|
|
|
|
|
my activex Ctrl creates a frame and view under the object base on COleControl.when i test it by asp, i find that it can only run at IE6.But test by other tools like Delphi,it has no problerm.
my ctrl has a public function named LoadMap().
i followed the error message and found that the frame is not created while the function LoadMap() has been called.
i can provide the source code,please mail to ffjn@yeah.net
fjn
|
|
|
|
|
Hi everybody,
Can you tell me how to get the index of the current hot item(under the mouse) of the CListCtrl. I used the member function "GetHotItem", but it always return -1, why
Thanks!
HuChJ
|
|
|
|
|
|
Hi guys,
Last friday I posted a question about a strange exception that was thrown (when I called a messageBox in the OnNewDocument)! With the help of some guys here (thanks to RaGe, Neville Franks, FranzKlein and basementman ), I finally solved the problem !
In fact, when I call MessageBox in the OnNewDocument function, the Framework make a call to the GetMessageString(UINT nID, CString& rMessage) function (from CMainFrame). In my case, this function was overloaded to support multiple languages for help text for the toolbar buttons (text in the status bar). I was then calling a funtion from a class that hasn't been instancied (the class for language texts).
void CMainFrame::GetMessageString(UINT nID, CString& rMessage) const
{
if (ID_SAVE <= nID <= ID_SELECTTV)
{
rMessage.Format(localtext->nr(nID));
}
else
CFrameWnd::GetMessageString(nID,rMessage);
}
The function was called with an nID equal to 57345 wich isn(t corresponding to any of my buttons (range from 20 to 33). So the error was in the line:
if (ID_SAVE <= nID <= ID_SELECTTV)
wich has to be replaced by:
if ( (ID_SAVE <= nID) && (nID <= ID_SELECTTV) )
otherwise, I call localtext->nr(nID); and this class hasn't been instancied for now !!
So again, a big big thanks to all the guys who help me to solve this problem that was wrecking my mind !
|
|
|
|
|
Glad to hear you have finally found out ... very tricky, this one bug
~RaGE();
|
|
|
|
|
Great to hear you found it. Thanks for letting us know. Now you can take it easy for the rest of the week.
Neville Franks, Author of ED for Windows. Free Trial at www.getsoft.com
|
|
|
|
|
Dear All,
I am developing an application (using VC++ Version 6 for Windows 2000/XP/NT) in which I want to retrieve the list of all the "File type extenstons" present in my system.
I suppose that there must be some API for retrieving this list.
To see the list go to:--
Start=>Settings=>Control Panel=>Folder Options.
Then select File Type to get list all file type extenstions
Thanks in advance.
Rohit Dhamija
|
|
|
|
|
This is stored in the registry under HKEY_CLASSES_ROOT.
So Open this key using registry functions (RegOpenKey ) and then you can enumerate the subkeys with RegEnumKey . In these, look for the ones starting with a point '.' and there you have your file extensions. In the key are stored the associated application, usually in shell\command\open.
For example, under HKEY_CLASSES_ROOT\.txt is stored Text Files .
And under HKEY_CLASSES_ROOT\.txt\Text Files [edit] Sorry, it is HKEY_CLASSES_ROOT\Text Files [/edit] is stored Shell\Command\Open\"Notepad %1"
~RaGE();
|
|
|
|
|
Hi Rage,
Thanks a lot. That was very useful.
Rohit
|
|
|
|
|
Hi,
Have anyone ever played D&D games? I want to write a
program(in console mode) that will give you a random
number, so I write the Die class. But I have tons of
errors even I have debugged it so many times.(still
tons of) I hope some of you would help me out here.
There are 18 errors, 1 warning
This is how I did that:
I use VS.Net, Visual C++ => Win32 Project => console
application => empty project.
I divided it into three files, the driver, the implementation
and the header. Here is the code:
<br />
<br />
#include "Die.h"<br />
#include < iostream ><br />
using namespace std;<br />
<br />
void main()<br />
{<br />
Die d1, d2;<br />
Die d3(10), d4(100);<br />
<br />
cout << "d1\td2\td3\td4" << endl;<br />
<br />
for (int i=0; i<10; ++i)<br />
{<br />
d1.roll();<br />
d2.roll();<br />
d3.roll();<br />
d4.roll();<br />
<br />
cout << d1.getValue() << '\t';<br />
cout << d2.getValue() << '\t';<br />
cout << d3.getValue() << '\t';<br />
cout << d4.getValue() << '\t';<br />
}<br />
}<br />
<br />
<br />
#include <cstdlib><br />
#include <ctime><br />
#include "Die.h"<br />
<br />
Die::Die()
{<br />
nSides = DEFSIDES;<br />
value = 1;<br />
}<br />
<br />
Die::Die(int sides)<br />
{<br />
nSides = sides;<br />
value =1;<br />
srand (unsigned (time null)));<br />
<br />
}<br />
<br />
void Die::roll()
{<br />
value = (srand()%nSides)+1);<br />
}<br />
<br />
<br />
#ifndef DIE_h<br />
#define DIE_h<br />
<br />
const int DEFSIDES = 6;<br />
<br />
class Die<br />
{<br />
public:<br />
Die();<br />
Die(int);<br />
<br />
void roll();<br />
<br />
int getValue() const ( return value; )<br />
<br />
Private:<br />
int nSides;<br />
int value;<br />
<br />
};<br />
<br />
#endif<br />
<br />
|
|
|
|
|
|
I've changed a few things in youre code. Does this work???
// DieTest.cpp
// the driver
#include "Die.h"
#include <iostream.h>
void main()
{
Die d1, d2;
Die d3(10), d4(100);
cout << "d1\td2\td3\td4" << endl;
for (int i=0; i<10; ++i)
{
d1.roll(); // roll() is modifier
d2.roll();
d3.roll();
d4.roll();
cout << d1.getValue() << '\t'; // getValue() is asscessor
cout << d2.getValue() << '\t';
cout << d3.getValue() << '\t';
cout << d4.getValue() << '\t';
}
cin.get();
}
// Die.cpp
// the implementation
#include <stdlib.h>
#include <time.h>
#include "Die.h"
Die::Die() // Die() is a constructor
{
nSides = DEFSIDES;
value = 1;
}
Die::Die(int sides)
{
nSides = sides;
value = 1;
srand( (unsigned)time( NULL ) );
}
void Die::roll() // roll() is a modifier
{
value = (rand()%nSides)+1;
}
int Die::getValue()
{
return value;
}
//Die.h
// the header
#ifndef DIE_h
#define DIE_h
const int DEFSIDES = 6;
class Die
{
public:
// constructor
Die();
Die(int);
void roll(); // modifier
int getValue(); // asscessor
private:
int nSides;
int value;
};
#endif
|
|
|
|
|
It reduces the error number from 18 to 10. I think there
are newer errors in those 10 errors.
One think I don't understand is why did you add
cin.get();
at the end of the driver?
But thanks for your reply. If you have more time,
can you please check it once more. If you can
actually copy the code and work in you VS.net would
be greatly appreciated. I just started learning
C++ and I'm exhausted now. (But I will be working
till the problems are solved) Hope you would help me.
Thanks.
|
|
|
|
|
Code posted above works fine for me, so I do not know why you still have 10 errors.
cin.get() is just waiting for a key to be pressed, so that the app does not exit right away. This is done by default in VC6++, so it is not useful.
I put it here once again (I did not change anything in the .h):
#include "stdio.h"
#include "stdlib.h"
#include <iostream.h>
#include "time.h"
void main()
{
Die d1, d2;
Die d3(10), d4(100);
cout << "d1\td2\td3\td4" << endl;
for (int i=0; i<10; ++i)
{
d1.roll();
d2.roll();
d3.roll();
d4.roll();
cout << d1.getValue() << '\t';
cout << d2.getValue() << '\t';
cout << d3.getValue() << '\t';
cout << d4.getValue() << '\t'<<endl;
}
}
~RaGE();
|
|
|
|
|
I got it, I see what's wrong.
I used <iostream> instead of <iostream.h> as posted.
So I have to include using namespace std;
After that, all those 10 errors are gone. Thanks.
|
|
|
|
|
VW_Red_Jetta wrote:
I used instead of as posted.
You probably mean <iostram> instead of <iostream.h>
Use the formatting < and > from the formatting bar under the text window, when replying / posting code, otherwise they will be interpreted as html tags. Or simply write < > directly.
~RaGE();
|
|
|
|
|
|
whenever i use goback() and goforward();i get empty dialogbox when i complete navigation.
|
|
|
|