|
Just installed VS.NET . All is fine and I think it is a great package. only problem is this.
When I try to make a database connection using the IDE, it always gives me an error along the lines
"[MS odbc driver]SQLSetConAttr failed"
when I try to access the table data
I am writing the error message from memory so it might not be accurate.
What I ask of you is either a solution or if you would be so kind an alternate method
I want to connect to a MS Access database. Has one table and no security like password and stuff.
Thank you.
|
|
|
|
|
Hi,
I've got a CEdit control, and a CString --> the CString will contain CEdit's text after de DDX_TEXT call, but after this I need the CEdit to be empty. I've tried by emptying the string, and then calling UpdateData(), but that just fills the string with the content of the CEdit, instead of the other way around.
How can I do this?
|
|
|
|
|
Try calling UpdateData(FALSE). The parameter is used to control the direction of data transfer.
TRUE -> data from window to CString
FALSE -> data from CString to window.
Chris Meech
"what makes CP different is the people and sense of community, things people will only discover if they join up and join in." Christian Graus Nov 14, 2002.
Oh and for those that ask programming questions in the lounge. Seek the truth here[^].
|
|
|
|
|
Thank you, it really helped
|
|
|
|
|
Since UpdateData() is an all-or-nothing operation, it shouldn't be used on individual updates.
m_edit.SetWindowText("");
|
|
|
|
|
Hi again student
MSDN
BOOL UpdateData( BOOL bSaveAndValidate = TRUE );
Return Value
Nonzero if the operation is successful; otherwise 0. If bSaveAndValidate is TRUE, then a return value of nonzero means that the data is successfully validated.
In other words: TRUE -> from screen, FALSE -> to screen
Other way:
set up text directly in the Edit similar:
m_myEdit.SetWindowText(youStringHere);
Hope this help.
Vitali
|
|
|
|
|
Dear All,
I am developing an application using MFC VC++ Version 6.0 for Windows 2000 which shows the list of drives present in system. I am showing this list of drives with checkbox corresponding to it in a listbox.
I am using CCheckListBox class for this. When ever a user checks or unchecks a drive, an event should be generated showing which drive is selected. (eg. a messagebox should appear: C:\ is selected or C:\ is unselected )
Can any body tell me which event to capture. I tried using LBN_SELCHANGE but it didnot worked properly.
Rohit
|
|
|
|
|
Use the CLBN_CHKCHANGE notification.
|
|
|
|
|
Hi again,
I captured LBN_SELCHANGE event and put following code in my application
///////////////////////////////////////////////////////
void CDataSpaceDlg::OnSelchangeLstdrv()
{
if(m_listdrive.GetCheck(0))
AfxMessageBox("hi I am checked");
if(m_listdrive.GetCheck(0)==0)
AfxMessageBox("hi I am not checked");
}
//////
where m_listdrive is a variable of type CCheckListBox.
m_listdrive.GetCheck(0) gets the check type of the 0 index (c:\ corresponding to it)
It works fine when we click on this checklistbox but i have another checklistbox in that dialog .When i click on that checklistbox, then it throws a Debug Assertion failure Winctrl1.cpp line: 105
//////////////////////
Can anybody suggest a way out
rohit
|
|
|
|
|
Have you looked at line 105 of Winctrl1.cpp? Notice the hard-coded assertion? It's telling you that your derived class has to implement DrawItem() , as well as the other two.
|
|
|
|
|
Hi
I have a deutsch word 'äuBerst'.
I can't type that 'B' correctly in here neither.
How can i assign that word to a CString.
CString strMyWord = "äuBerst";
The 'B' needs to be changed to the deutsch version.
Anyone have any idea how to insert this extended character to the text?
Greetings
Jens
|
|
|
|
|
Hi all, I have searched the web all over, and codeproject.com for an answer to this problem, and am empty handed. I have an app that loads a dll. I have a file management class (for loading files and managing their HANDLES etc.) In the app I use the notation io::Open(blah) to open the files using a static function which physically loads the file and keeps track of it in a list. However, when I try to load a file from the dll, the static io class is mapped to another area of memory and its list is NULL. How can I make it so that the io class is a system wide static class so that any instance within the current process can access the same static data? Any links or advice is very welcome
|
|
|
|
|
You could make Open(blah) a function of your application class.
Then your DLL would get a pointer to that application object and you could call Open(blah) via that pointer. The list would then sit in the application and the dll would not need to know about foreign memory.
Who is 'General Failure'? And why is he reading my harddisk?!?
|
|
|
|
|
Dangleberry wrote:
How can I make it so that the io class is a system wide static class so that any instance within the current process can access the same static data?
You can only do that by making its members non-static, and creating an instance of it in your application, then passing that instance to your DLL so that you application and DLL use the same instance of the class.
The fact that the members are static is only important at compile time. The DLL and application are compiled separately, and so they both get copies of the static data.
Hope this helps,
Ryan "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"
|
|
|
|
|
Yeah this is the way I was going to do it, but if I have multiple dll's for say different aspects of the app I'm going to have to distribute the pointer everywhere. I have managed to find an article on data_seg which allows static variables to share a common place in memory, but I have not yet managed to get it to work. I'd like it so that if I call io::Open() in my app or in any dll the same instance of io (and its static data members) are used in the function (can I actually pass an instance of a static class through and assign it to the dll instance?). I know I could pass a pointer through and use io->Open but I prefer the static function approach. Thanks for all responses, much appreciated.
|
|
|
|
|
Dangleberry wrote:
if I have multiple dll's for say different aspects of the app I'm going to have to distribute the pointer everywhere.
Unfortunately, thats the price to pay for wanting a centralised way of working with things.
Dangleberry wrote:
I have managed to find an article on data_seg which allows static variables to share a common place in memory, but I have not yet managed to get it to work.
Creating a shared data segment? I think that only works for multiple instances of the same DLL.
Basically, I think you'll find that the only way you can do it is by passing a pointer to an instance of the class to all your DLLs.
Ryan "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,
If you use MFC compatible dll don't forget to call:
AFX_MANAGE_STATE(AfxGetStaticModuleState());
Vitali
|
|
|
|
|
Hi,
I've (finally) succeeded in generating a dialog box for selecting directories, but I'm getting an error:
First-chance exception at 0x70bf6827 in F2F.exe: 0xC0000005: Access violation writing location 0x0063b058.
Unhandled exception at 0x70bf6827 in F2F.exe: 0xC0000005: Access violation writing location 0x0063b058.
The thread 'Win32 Thread' (0x54c) has exited with code 128 (0x80).
The thread 'Win32 Thread' (0x57c) has exited with code 128 (0x80).
The program '[784] F2F.exe: Native' has exited with code 128 (0x80).
This is my code, can you tell me what's wrong:
void IO_scherm_multiinput::OnBnClickedButton1()<br />
{<br />
<br />
<br />
BROWSEINFO* b=new BROWSEINFO();<br />
LPTSTR buf="Undef BE";<br />
<br />
int image=-1;<br />
b->hwndOwner=this->m_hWnd;<br />
b->iImage=image;<br />
<br />
b->lpszTitle="Please select a driectory for IO";<br />
b->pidlRoot=NULL;<br />
b->pszDisplayName=buf;<br />
<br />
b->ulFlags=BIF_BROWSEINCLUDEFILES;<br />
LPITEMIDLIST x=SHBrowseForFolder(b);<br />
<br />
}
|
|
|
|
|
Your display name buffer is probably being overrun. The SHBrowseForFolder() function assumes that pszDisplayName is MAX_PATH characters long, whereas in your code it is only 9 characters long. Do it like this:
void IO_scherm_multiinput::OnBnClickedButton1()
{
BROWSEINFO* b=new BROWSEINFO();
LPTSTR buf=new TCHAR[MAX_PATH];
_tcscpy(buf, "Undef BE");
int image=-1;
b->hwndOwner=this->m_hWnd;
b->iImage=image;
b->lpszTitle="Please select a driectory for IO";
b->pidlRoot=NULL;
b->pszDisplayName=buf;
b->ulFlags=BIF_BROWSEINCLUDEFILES;
LPITEMIDLIST x=SHBrowseForFolder(b);
delete [] buf;
} Hope this helps,
Ryan "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"
|
|
|
|
|
Thanks a lot, this works ;P
Can you tell me too how to retrieve the selected directory from the x variable ? (the x as described in your code; I copied it)
|
|
|
|
|
SHGetPathFromIDList() should help
Ryan "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"
|
|
|
|
|
To make things easier, cou could allocate your BROSEINFO on the stack and hand the address over to SHBrowseForFolder(). Also, zeroing the structure is a good practice to make clear which pointers have been set and which not.
I did include Ryan's fixes for your buffer memory issues in this version.
void IO_scherm_multiinput::OnBnClickedButton1()
{
BROWSEINFO b = {0};
LPTSTR buf=new TCHAR[MAX_PATH];
_tcscpy(buf, "Undef BE");
int image=-1;
b.hwndOwner=this->m_hWnd;
[...]. b.pszDisplayName=buf;
b.ulFlags=BIF_BROWSEINCLUDEFILES;
LPITEMIDLIST x=SHBrowseForFolder( &b );
delete [] buf;
}
Who is 'General Failure'? And why is he reading my harddisk?!?
|
|
|
|
|
For NT4 I programmed a service which do some Hardware access and tranfer these data to an MFC Applikation. The transfer is done via Filemapping and eventhandling. This works very fine on several NT4 systems. Now we changed the system to XP. Installing and starting the service was no problem. When the applikation where started, it takes up to 30 seconds until one communikation with the service is done. After 2..3minutes the communication seens to be ok.
We use a very powerful PC and the systemload is below 20%
Has anyone an idea ?
regards Andreas
Andreas Zaum
|
|
|
|
|
Hello,
Check hardware access speed under XP...
Dificult say more without more details.
Vitali
|
|
|
|
|
I did know the answer once upon a time but can't for the life of me remember.
How can I ensure that implicitly linked (at compile time) are loaded in a particular order. I have to have time to read the registry in the App's InitInstance before one of the DLLs is loaded.
Happy programming!!
|
|
|
|