|
If you add UNICODE and _UNICODE in your preprocessor settings you should get Unicode-ness automatically.
As for the prefixing L I'm afraid there's no simpler solution. By the way, if you want to write code working both for Unicode and ANSI settings, you might want to have a look at a macro called TEXT , along with its merry friends TCHAR , LPTSTR , etc.
Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo
|
|
|
|
|
|
Nish, just one more thing to add , instead of TEXT macro , use _T macro instead, it's same thing, but is shorter , I known i'm lazy
Use something like this , xpto is a TCHAR* allocated with some space:
the _tcscpy expands either to strcpy or wstrcpy.
_tcscpy(xpto,_T("sample"));
Cheers,
Joao Vaz
|
|
|
|
|
|
Nish [BusterBoy] wrote:
I thought GetPrivateProfileString would automatically get converted to GetPrivateProfileStringW on Win2K.
No, using the Unicode APIs is a compile-time decision. If you used the ATL AppWizard, change the active config to one of the Unicode versions to link to the Unicode APIs.
As for the string literals, enclose them in the _T() macro. Using L"" means the code will only work in Unicode builds, whereas using _T() makes it work for ANSI as well.
--Mike--
Fetchez la vache!
My really out-of-date homepage
Sonork - 100.10414 AcidHelm
Big fan of Alyson Hannigan and Jamie Salé.
|
|
|
|
|
Michael Dunn wrote:
No, using the Unicode APIs is a compile-time decision
Thanks. I thought it was kinda OS dependent.
Michael Dunn wrote:
As for the string literals, enclose them in the _T() macro. Using L"" means the code will only work in Unicode builds, whereas using _T() makes it work for ANSI as well.
I wish there was a compiler switch to automatically prefix _T to all string literals.
Nish
My most recent CP article :-
A newbie's elementary guide to spawning processes
www.busterboy.org
|
|
|
|
|
And when you start to use _T() and TCHAR for all text, you should use the _tcs* functions, they work both with and without UNICODE and _UNICODE defined.
When not unicode the preprocessor converts _tcscpy() to strcpy(), and with unicode defined it converted to wcscpy().
And remenber, if you malloc a TCHAR do it like this:
TCHAR *s = (TCHAR*)malloc(wantedsize * sizeof(TCHAR));
Then it works both with and without unicode defined
- Anders
Money talks, but all mine ever says is "Goodbye!"
|
|
|
|
|
|
I need to remotely debug an ISAPI filter. I have proven that I can remotely debug an EXE (between the two machines in question). I can also attach to a local process using Visual Studio and debug my local ISAPI filter. However, I can't seem to get Studio set up properly to attach to the inetinfo.exe on the remote machine.
Any thoughts?
Thanks in advance.
--G
|
|
|
|
|
Never mind. According to Microsoft, this can't be done.
|
|
|
|
|
Hi !
My App has an Explorer-like interface, with a leftview and a rightview. The leftview is a Tree control and the right view is a List control. I would like to enable the drag'n drop, to allow the user to drag items from the list (right view) and drop them into the tree (left view).
What I cannot figure out is how the tree (left view) will be notified of an item dropped on a tree-item ? I implemented the 'BeginDrag' in the right view, with the WM_MOUSEMOVE, and WM_LBUTTONUP, but when I drop an item on the left view, no messages is sent to the left view. I tried to use SetCapture() with my MainFrame window, but it's not working !
Any help of hint will be greatly appreciated !
Thanks !
Jerome
|
|
|
|
|
It has been a while since I have had to implement drag and drop for a control, but I believe that you need to register your tree control that will accept the dragged object as a drop target. This will let OLE know that it will look at the data a possibly accept it.
Then you will handle the function calls in the interface IDropTarget, there are functions like DragEnter, DragLeave and Drop.
|
|
|
|
|
When using MFC, you can create a member variable of type COleDropTarget and call Register() passing in your CWnd*. Then the virtual methods OnDragEnter() , OnDrop() , etc. will be called (if they are implemented).
farewell goodnight last one out turn out the lights Smashing Pumpkins, Tales of a Scorched Earth
|
|
|
|
|
You have to send the message yourself, from the right view.
When you call setcapture from the right view, it's that view that get the drop message, then you can send a message to the windows undr the mouse, that you are dropping things in it...
- Anders
Money talks, but all mine ever says is "Goodbye!"
|
|
|
|
|
Hi, I'd like to ask if anyone knows any good method to access a view's member functions or methods, from an outside class, in MFC Doc/View architecture, without using friend operators or methods, or with the scope resolution operator because that things does not work well on my project... (I'm trying to access from a TreeCtrl or TreeView potected code, some public functions and members from an other view and i got a compiler message "illegal call of non-static member functions").
What i ask is if there is a general way to override such member function calls or sth else to make this work. (The project i'm developing is an Image Viewer app which i will post in future, like ACD See or PolyView).
Sorry if these may sound funny for some experts, but although i program c/c++ 4 years i tried MFC the last months...Thanks.
|
|
|
|
|
"illegal call of non-static member functions"
The message seems to imply that the problem has not to do with public /private access, but rather with calling a non static member function as if it were static. Does this ring a bell for you, or am I totally off track?
Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo
|
|
|
|
|
Thanks for replying... actually i tried to use these functions as static and as non-static but none of them seems to work properly (same compiler message), because there is a fact that no need is a static call on this view. I found an article by another reply to my message which might work. (accessing a view from anywhere).If it doesn't work i think a must override some accessor member function of the view but i wanted sth simple to solve such a thing.
|
|
|
|
|
check this
Mazy
"So,so you think you can tell,
Heaven from Hell,
Blue skies from pain,...
How I wish,how I wish you were here." Wish You Were Here-Pink Floyd-1975
|
|
|
|
|
Thanks for your suggestion, and for the very nice Pink Floyd song...but in contrast i will say the TIME song from them... "...ten years have left behind you..." (to check all the codeproj articles i may need ten years and without solution maybe...) But OK,this article seems to be working.
|
|
|
|
|
kostasdel wrote:
"...ten years have left behind you..." (to check all the codeproj articles
You have to become old in CP to know all the places of it(thats persian expression,I don't know if you got it in English)
Mazy
"So,so you think you can tell,
Heaven from Hell,
Blue skies from pain,...
How I wish,how I wish you were here." Wish You Were Here-Pink Floyd-1975
|
|
|
|
|
Hi,
I want to pass a metafile to an ATL server, so I encapsulated it on a PictureBox object, and then saved it on one IStream, then I try to recover it in the ATL object, and it gives me on error, the code that I use is:
MFC client:
if(IPict) {
IStorage *pIStg;
Res = ::StgCreateDocfile(NULL, STGM_READWRITE | STGM_SHARE_EXCLUSIVE | STGM_CREATE, 0, &pIStg);
if(pIStg) {
IStream *TempStream = NULL;
Res = pIStg->CreateStream(OLESTR("MyPicture"), STGM_READWRITE | STGM_SHARE_EXCLUSIVE | STGM_CREATE, 0,0, &TempStream);
IPict->SaveAsFile(TempStream, TRUE, NULL);
m_GDIGr.SetMetafile(TempStream);
}
}
ATL Server:
STDMETHODIMP CGDIGraphics::SetMetafile(IStream *pStream)
{
IPicture *Pict = NULL;
HRESULT Res = ::OleLoadPicture(pStream, 0, FALSE, IID_IPicture,(void **) &Pict);
if(Pict) {
::MessageBox(NULL, "PICT", "PICT", MB_OK);
}
return S_OK;
}
What I had made wrong ?, Thanks in advance, Bye !
Braulio
|
|
|
|
|
Hi Braulio
Braulio Díez wrote:
it gives me on error
You didn't mention what is that error
Anyway,Did Dr.Grimes reply you?If the answer is yes would you please tell the answer too?
Thanks
Mazy
"So,so you think you can tell,
Heaven from Hell,
Blue skies from pain,...
How I wish,how I wish you were here." Wish You Were Here-Pink Floyd-1975
|
|
|
|
|
Hi,
Well the error message is quite dissapointing...
0x8000ffff E_UNEXPECTED
Dr. Grimes didn´t answer me, but well, I keep on researching, and it seems that you have to encapsulate the metafile in a PictureBox control ( IPicture), and the destination is not in the same DLL so I need to save the object in one stream ( I use for that IStream), and then in the ATL server I take that string and try to load the pic...
But... I when I´m going to read from the stream it doesn´t...
I know this is a quite common issue, just to pass a metafile from one process to another using COM, it´s one of the basic thing from COM, the sad thing is that anybody that knows the answer wants to give a hint....
Thanks for you interest mazdak, Bye !
Braulio
|
|
|
|
|
Hi:
Sorry,my ATL knowledge is not enough to help you.
It's very dissapointing that although there are lots of expert in CP but it seems
non of them (or few of them) have good ATL knowledge.
There are about 30000 members in this site...
Good luck and Bye
Mazy
"So,so you think you can tell,
Heaven from Hell,
Blue skies from pain,...
How I wish,how I wish you were here." Wish You Were Here-Pink Floyd-1975
|
|
|
|
|
Hi Mazdak !
Finally I got the solution, Joao Vaz give me one URL to a nice article, and now it is working nice !!! ( there were some magic with the streams XDDD ).
I have to tidy up all the code and make a submission to codeproject. Bye !
Braulio
|
|
|
|
|