|
You can use the MS string conversion macros.
If you are using Visual Studio 2002/2003 then you can do this:
string strA = "ascii";
CA2W pszUnicode(strA.c_str());
wstring strW = pszUnicode.m_psz;
...
wstring strW = L"unicode";
CW2A pszASCII(strW.c_str());
string strA = pszASCII.m_psz;
If you are using Visual Studio 6, then you can do this:
USES_CONVERSION;
...
string strA = "ascii";
const wchar_t* pszUnicode = A2CW(strA.c_str());
wstring strW = pszUnicode;
...
wstring strW = L"unicode";
const char* pszASCII = W2CA(strW.c_str());
string strA = pszASCII;
HTH.
|
|
|
|
|
Yeh, I have a whole <tstring> header file containing useful typedefs and inline functions. However, as I _always_ compile for Unicode only nowadays, I am back in the loving arms of wstring...
|
|
|
|
|
I'm also _UNICODE, but I always keep my options open, just in case.
Good music: In my rosary[^]
|
|
|
|
|
Shouldn't be an issue - gotta love the MSLU - works a treat for Win9x.
|
|
|
|
|
Something like make settings after the AMBIENT_CONTROL event, but IE just can't fire that for me.
To edit the registry maybe one approach, but the response is bad
Thanks in advance!
|
|
|
|
|
I know this class is the most derived class in ATL class hierarchy and (in case on non aggregatable object) is derived from user class. I want to know why is it derived from user class?
regards
Rahul
|
|
|
|
|
It's because of the IUnknown 's AddRef , Release and QueryInterface implementation.
You have to achieve, that the IUnknown implementation is one for the whole object, regardless of how many interfaces it consists of (there's usually only one reference counter for the whole object). This means that you need the implementation to be placed in the last object in the hierarchy. Therefore the CComObject is a neat trick, how to save user the need to write the AddRef/Release code into every user class.
|
|
|
|
|
How to connect database Access into Visual basic using ODBC?
Can you hepl me?
|
|
|
|
|
looking to use a date time object like COleDateTime in a win32 dll.
What can i use?
Intellisense seems to work fine when i use COleDateTime and i have access to all the methods but when i compile, i get an error:
(33): error C2065: 'COleDateTime' : undeclared identifier
Any guidnce is appreciated...
Thanks
|
|
|
|
|
#include <atlcomtime.h>
Although, you will depend on ATL for this. But I'm assuming that's not a problem, as you are posting in the ATL/WTL/STL forum.
Good music: In my rosary[^]
|
|
|
|
|
Can you create a clock by ActiveX control using ATL
|
|
|
|
|
|
Hi J.Sigvardsson
Thank you very much
|
|
|
|
|
Hi,
I have some troubles to add an enumeration to an existing idl-file. (VC++ 6.0, ATL-EXE-Project)
I am declaring the enumeration like this:
import "ocidl.idl";
[
object,
uuid( C15A95C3-1437-4ec4-B290-1B73573F4007),
// AT 11.08.2005 dual,
helpstring("ISEPSJobManager Interface"),
pointer_default(unique),
// AT 11.08.2005 oleautomation // AT 11.07.2004
]
interface IJobManager : IUnknown
{
typedef enum tag_SEPSSensorStatus{
eSeps_Sensor_OK,
eSeps_Sensor_ALARM
} eSEPSSensorStatusID;
--> I could declare 3 types of enumetations some years ago, but now when I am adding a new enumeration I can't use it from my client.
I have checked the following issues:
- Adding a new method to the interface works fine.
- Adding a new enumeration adds the enumeration to the header-file of my ATl-Project, but does not add the enumeration to the *.tlh-file of the client, neither I can observe a change in the OleView.
Does anybody know what causes this behaviour or how to implement a workaraound?
Is it possible, that the previous definitions
' dual' or 'oleautomation' causes the problems.
Thanks in advance
andi
|
|
|
|
|
As per ur code it seesm u declared the enum in interface defenition. Thats wrong u have to declare it outside the interface defenition. Other than that there is nothing wrong in your code. Also its a gud practice to have a uuid associated with ur enum. see the code below.
typedef [uuid(85916817-EE0E-4f0d-B7DB-FE6F15890CB5)]<br />
enum _eSEPSSensorStatusID{<br />
eSeps_Sensor_OK,<br />
eSeps_Sensor_ALARM<br />
} eSEPSSensorStatusID;
rgds ...mil10
|
|
|
|
|
thank you for this proposal.
I tried to add this to my idl-file, but it didn't solve my problem. -> now I am following the advice of Vita (to reference the enumeration in the library).
Thank you for answering my question
tagi
|
|
|
|
|
You should never ever add new/modify/remove methods to/in/from an interface, nor should you ever change enumerations after they've been published. COM isn't robust enough for that.
What you can do is to add a new interface which can handle the "new" way of doing things. With it, you should also declare the new enumeration.
Good music: In my rosary[^]
|
|
|
|
|
thank you,
of course you are right. you should never change an existing interface. But since I havn't released my project yet and I am fully aware of all the clients using the server I didn't want to create a new Interface.
thank you for answering
tagi
|
|
|
|
|
tagi1 wrote:
- Adding a new enumeration adds the enumeration to the header-file of my ATl-Project, but does not add the enumeration to the *.tlh-file of the client, neither I can observe a change in the OleView.
Does anybody know what causes this behaviour or how to implement a workaraound?
The TLB contains only those types which are defined or mentioned (directly or indirectly) inside [library] block in IDL file.
So inside [library] block there should be something which refers to SensorStatus enumeration.
With best wishes,
Vita
|
|
|
|
|
Thank you for this advice. I didn't know that I have to use an enumeration which I have declared in the idl-file.
Now its working.
best regards
tagi
|
|
|
|
|
Hi,
I'm sure this is probably the easiest question in the world but I can seem to find anything anywhere about how to do it. Basically I have created a dialog in an MFC program, but it is a fixed size, I want the user to be able to resize it, how do I do this?
Cheers
|
|
|
|
|
In the resource editor, open the properties for your dialog and select the Border style to be "Resizing". You will then need to handle the WM_SIZE message in your dialog's code (use ClassWizard) so that you can handle the resizing/repositioning of any child controls when the dialog is resized. This is a pretty common problem when using dialogs under MFC and there are a boatload of solutions, many of them on here. I recommend searching for Paolo Messina's dialog resizing solution which works nicely.
Hope that helps...
|
|
|
|
|
Thanks alot for that, knew it had to be something faily simple, that sorted it staight away. Cheers for help, much appreciated!
|
|
|
|
|
This might prove useful:
http://www.codeproject.com/dialog/dlgresizearticle.asp
It'll save you the trouble of manually repositioning controls in response to WM_SIZE messages.
HTH
|
|
|
|
|
Hi.
I'd like to change dialog's class name from "#32770" to "MY DIALGO".
I used following code in WTL. But it doesn't work
WNDCLASSEX wndClass;
::GetClassInfoEx((HINSTANCE)_Module.GetModuleInstance(), "#32770", &wndClass);
wndClass.lpszClassName = _T("MY DIALOG");
::RegisterClassEx(&wndClass);
would somebody gave me a solution?
Thanks. Have a good day....
|
|
|
|