|
Just for the heck of it, I tried the std::string method. I had solved this using a vector<char>, but the string method looks a little cleaner. However, I couldn't get it to work with SQLConfigDataSource(). Here's the code:
CString sSybaseDriver,sSybaseConfig;
sSybaseDriver.LoadString(IDS_SYBASE_ODBC_DRIVER);
sSybaseConfig.Format(IDS_SYBASE_ODBC_ADD_DSN);
std::string sConfig(sSybaseConfig);
std::replace(sConfig.begin(),sConfig.end(),'|','\0');
BOOL bSuccess = SQLConfigDataSource(NULL,ODBC_ADD_DSN,sSybaseDriver,sConfig));
The compiler first complained that it couldn't convert a string to const char * for the last parameter in SQLConfigDataSource(). So I changed it to:
BOOL bSuccess = SQLConfigDataSource(NULL,ODBC_ADD_DSN,sSybaseDriver,sConfig.c_str()));
It compiled, but the call to SQLConfigDataSource() failed. The vector<char> is a little messy, but at least it works.
Any ideas on how to get the string version to work or should I just be happy that I found a solution?
Thanks,
Derek
|
|
|
|
|
Derek. The string sConfig must be the following format.
"DSN=Personnel Data\0UID=Smith\0PWD=Sesame\0DATABASE=Personnel\0\0"
With Double \0 in the finish. this is very important
Did you do that?
Cheers!!!!
Carlos Antollini.
|
|
|
|
|
That was it!!
Thanks for all the help!
Derek
|
|
|
|
|
when i put (at design time) a RichEdit control on a dialog i cant see the while dialog when i build and run the project.
why? and how can i solve this?
|
|
|
|
|
You must call AfxOleInit() and AfxInitRichEdit()
in InitInstance() of your CWinApp object.
Good luck
|
|
|
|
|
|
Hi,
I've implemented a system tray icon for my app and I want to have a popup menu for it. I have a message handler created to catch when the user right clicks my icon in the system tray. When this function runs, how should i determine where to place the pop up menu? I can't find a way of determining where the mouse pointer currently is?!?!
Thanks once again
Jay
|
|
|
|
|
|
This should work for you.
CPoint point;
pPopUpMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_LEFTBUTTON,
point.x, point.y, AfxGetMainWnd());
|
|
|
|
|
Hi,
I've made a class which inherits CEdit. I want to set up some styles for the class, so what i've tried is handling WM_CREATE.
However, it seems that CMyEditClass::OnCreate is not called when the implementation uses a dialog box control id and classwizard to bind them together.
But, if I do this:
CMyEditClass my_edit;
my_edit.Create(....);
in this case OnCreate is called. So, i've proved to myself that Edit controls in dialogs are not "Create"d. What message can I handle that is common to both methods of using the class, that is suitable for modifying styles and so on? I'd use Spy++ but I don't know how to make it catch messages send to the window when the window is only just being created.
Thanks for your help. I hope I've explained it right
J
|
|
|
|
|
So, i've proved to myself that Edit controls in dialogs are not "Create"d.
They are created, but creation occurs before MFC stuff is hooked to dialog. Override CWnd::PreSubclassWindow to avoid this problem. And remember that you can't change some ES_xxx styles at runtime.
Tomasz Sowinski -- http://www.shooltz.com
|
|
|
|
|
Hello
In my appp i need a combo box wich will show me available drives on the computer and a list control wich will show the files and the folders.
my quastion is: i know how to extract assosiated icon for the files, but how do i do that for the drives and for the folders?
what is the best way to this?
thanks.
|
|
|
|
|
how do i do that for the drives and for the folders?
SHGetFileInfo() can get the icon for a drive/folder. Check out A Drive Picker List Control for some sample code.
--Mike--
http://home.inreach.com/mdunn/
"Make sure that if you are using a blow torch that you don't set anything on fire."
-- Chris Maunder
|
|
|
|
|
|
Perhaps you should RTFM about SHGetFileInfo() ?
|
|
|
|
|
|
You don't want to know this
RTFM stand for: Read The F***ing Manual.
Cheers,
EiSl
|
|
|
|
|
Hi,
I've created a MDI project with the Doc/View architecture (which I don't
use, but it has advantages).
As you will know, CMainFrame initialises the standard docking toolbar. But I
wanted another one, that contains dynamically updated buttons depending on
the MDIChildWindow that is active.
So I've got two questions:
1. How does the CMDIFrameWnd get message if a new child window has been
created by CDocTemplate::OpenDocumentFile(NULL), and
2. how can I create a second, docking toolbar in the Mainframe
Thanks in advance, Karl
|
|
|
|
|
How does the CMDIFrameWnd get message if a new child window has been created by CDocTemplate::OpenDocumentFile(NULL)
Check CWnd::OnMdiActivate.
2. how can I create a second, docking toolbar in the Mainframe
Just like the first one. Add a CToolBar member to CMainFrame class and call CToolBar::Create and CToolBar::LoadToolBar. Have a look at CMainFrame::OnCreate for details.
Tomasz Sowinski -- http://www.shooltz.com
|
|
|
|
|
How do I get a popup menu in my dc that looks like a pane
Handle WM_CONTEXTMENU in your window class. Device context has nothing to do with this.
Tomasz Sowinski -- http://www.shooltz.com
|
|
|
|
|
Hi, I'm a begginer in C++ (started learning 3 months ago) and I have a problem when using strings.
I don't know why but sometimes, I declare two strings (stringA and stringB of type _bstr_t) then I use them assigning stringA to a value and when later, I assign to stringB any value it changes also stringA's value.
It doesn't happen always and I'd really like if somebody could help me with that.
|
|
|
|
|
It depends on how you are assigning. Check that the two aren't using the same memory address.
Gerry.
|
|
|
|
|
But there is something I still don't understand about C++: How can both strings use the same memory address if I'm not using any pointer on them?
The exact situation is that I've a class with a public member variable of type string (_bstr_t) and a method for that class where I receive a _bstr_t parameter (not a pointer).
If I call this method without the parameter everything goes right, but if I call it with the parameter, the public member variable gets its value changed with the parameter's one.
Thanks for answering,
|
|
|
|
|
It doesn't happen always and I'd really like if somebody could help me with that.
Post your code. How can you expect anybody to answer your question without source?
Tomasz Sowinski -- http://www.shooltz.com
|
|
|
|
|
O.K here's the code
First I've a class with a public member variable:
BSTR stringA;
then from a function I write:
MyClass *ptrMyClass;
MyClass->stringA = _bstr_t("SomethingA");
_bstr_t stringB;
stringB = "SomethingB";
After that, MyClass->stringA contains "SomethingB" although I've noticed that it only happens if SomethingB.length>128
Please, tell me what I'm doing wrong (and most important why)
Thanks for everything,
|
|
|
|