|
Dhiraj kumar Saini wrote: I am using visual studio 6.0. If it is not defined in current mfc installation then which version should i use.
I find simpler using the += operator, as suggested.
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[Image resize DLL]
|
|
|
|
|
I'm using VS2005 and it's defined there.
Actually CString is now a typedef of the template CStringT , which inherits from CSimpleStringT . The AppendChar() function is a member of the CSimpleStringT template.
More info here[^].
"It's supposed to be hard, otherwise anybody could do it!" - selfquote "High speed never compensates for wrong direction!" - unknown
|
|
|
|
|
Couldn't find a function named - CString::AppendChar() in MSDN Documentation[^]. You can use operator += to append char to CString. For instance,
CString String = "Hell";
String += 'o';
Regards,
Jijo.
_____________________________________________________
http://weseetips.com[ ^] Visual C++ tips and tricks. Updated daily.
|
|
|
|
|
Hi all,
I am a newbie to NDIS driver programming. I have written a very basic and simple NDIS protocol driver which just prints a message for all incoming packets. (I've taken help from DDK's Passthru and Protocol driver examples).
The part where I am stuck is that my Protocol driver is registered with NDIS as BindAdapter, UnbindAdapter and PnPEvent Handlers are all getting invoked/called and working as per requirement. However neither ProtocolReceive() nor ProtocolReceivePacket() is getting invoked, even in case of heavy network traffic ( which I confirmed with use of Wireshark).
Please Help.
Thanks in Advance,
Numero Uno.
|
|
|
|
|
Hi all,
I have made a application in vc2005 in which i am selecting some files from folder and then displaying names of each file.I am opening dialog box using CFileDialog Class, i have set OFN_ALLOWMULTISELECT for the dialog box.....
Now my problem is for some folders when i select all the files and click on open it returns IDCANCEL or 2 as a return value and for some folders it return IDOK or 1 as return value.....
How can i remove this???
thanks in advance
|
|
|
|
|
VCProgrammer wrote: i have set OFN_ALLOWMULTISELECT for the dialog box.....
Now my problem is for some folders when i select all the files and click on open it returns IDCANCEL or 2 as a return value and for some folders it return IDOK or 1 as return value.....
Probably there is a buffer overflow hence file dialog returns IDCANCEL . Note that for this style you've got to provide a large enough buffer to retrieve all file names.
Probably an FNERR_BUFFERTOOSMALL error occurs. Call CommDlgExtendedError to check.
Nibu babu thomas
Microsoft MVP for VC++
Code must be written to be read, not by the compiler, but by another human being.
Programming Blog: http://nibuthomas.wordpress.com
|
|
|
|
|
In case of failure in Common Dialogbox Routines , MSDN recommends to call CommDlgExtendedError()[^] to know about the detailed error info. So please call the api and check, why its failing.
Regards,
Jijo.
_____________________________________________________
http://weseetips.com[ ^] Visual C++ tips and tricks. Updated daily.
|
|
|
|
|
Hello, this is a very simple program to test asynchronous device io.
But when this program runs on Vista, io is always asynchronous; when it is XP, io is always synchronous.
I don't know why? Does Vista's io more efficient than XP?
Thank you!
int _tmain(int argc, _TCHAR* argv[])
{
HANDLE g_hIOCP = ::CreateIoCompletionPort(INVALID_HANDLE_VALUE, NULL, 0, 0);
if (g_hIOCP == NULL)
{
cout<<"can not create io completion port"<<endl;
return 1;
}
HANDLE hFile = CreateFile(L"d:\\test.abc", GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL);
if (hFile == NULL)
{
cout<<"can not open file"<<endl;
}
HANDLE hTest = ::CreateIoCompletionPort(hFile, g_hIOCP, (ULONG_PTR)hFile, 0);
if (hTest != g_hIOCP)
{
cout<<"failed to associate file to completion port"<<GetLastError()<<endl;
return 0;
}
for(int i = 0; i < 5; ++i)
{
OVERLAPPED ov = {0};
char szBuf[128];
DWORD lpNumberOfBytesRead = 0;
BOOL b = ::ReadFile(hFile, szBuf, 128, &lpNumberOfBytesRead, &ov);
if (b == FALSE)
{
cout<<"ReadFile failed,last error code is:"<<::GetLastError()<<endl;
if (::GetLastError() == ERROR_IO_PENDING)
{
cout<<"read file asynchronously"<<endl;
}
}
else
{
cout<<"read file synchronously"<<lpNumberOfBytesRead<<"bytes"<<endl;
}
}
return 0;
}
A Chinese VC++ programmer
|
|
|
|
|
I don't know why it is different in XP and Vista, but specifying the FILE_FLAG_OVERLAPPED flag in CreateFile() means that it is an asynchronous call; however, this article may be of use.
[Edit]
Apologies I didn't see your FLAG_FILE_OVERLAPPED remark in your code sample - the article may still be useful to you though
Regards,
--Perspx
"The Blue Screen of Death, also known as The Blue Screen of Doom, the "Blue Screen of Fun", "Phatul Exception: The WRECKening" and "Windows Vista", is a multi award-winning game first developed in 1995 by Microsoft" - Uncyclopedia
Introduction to Object-Oriented JavaScript
|
|
|
|
|
Thank you!
I'll read this article
A Chinese VC++ programmer
|
|
|
|
|
There is a MSKB on Asynchronous IO with details on Synchronous I/O occuring even when the file is opened using FILE_FLAG_OVERLAPPED attribute. See if this helps -
Asynchronous I/O Still Appears to be Synchronous[^]
Sohail
modified 21-Apr-21 21:01pm.
|
|
|
|
|
I blindly believe that if FILE_FLAG_OVERLAPPED flag was set, then all the i/o operation will be processed asynchronously, but it seems that not quite right.
Thank you!
A Chinese VC++ programmer
|
|
|
|
|
Glad I could help
Sohail
Please mark helpful answers
modified 21-Apr-21 21:01pm.
|
|
|
|
|
Hi,
I am migrating my code to VS2005 from VS2003. We have certain components which are .dll files but they are named as .ddl files .When i migrate to VS2005 and i open my client exe in dependency walker than the dependant .ddl file is shown as unavailable(with a question mark) in the walker.
this mainly happens coz it has been renamed from .dll to .ddl(as per requirement).
My question is , why does this happen in vs2005 only and how do i solve this?. Will it create problem at runtime?.
NOTE: in VS2003 the file was seen available in the dependency walker.
Replies are welcome
Regards,
Shailesh H
|
|
|
|
|
why do you need them to be called ddl files?
There is sufficient light for those who desire to see, and there is sufficient darkness for those of a contrary disposition.
Blaise Pascal
|
|
|
|
|
Well the reason for naming DDL is non technical. Its only to recognize the dll file thats the project requirement which we cannot change.
thanks
|
|
|
|
|
Check whether it isnt a writing mistake of some non-IT typ of manager.
After all it is bad style
Greetings from Germany
|
|
|
|
|
Its a bad style.. but it works in VS2003 and problems in VS2005.
|
|
|
|
|
Did the DLL project's linker option for output file get set to
$(OutDir)\$(ProjectName).dll
instead of what you want it to be?
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
Hi
I am geting error this
[code]
error C2228: left of '.ErrorMessage' must have class/struct/union
error C3861: '_com_error': identifier not found
[/code]
Plz help me
|
|
|
|
|
so what's your code dude ?
you must have the object at left of method ErrorMessage() of type class, struct or union....
show us the line of code incriminated.
|
|
|
|
|
ok here is code
[code]
NotificationFilter.dbcc_size = sizeof(DEV_BROADCAST_DEVICEINTERFACE);
NotificationFilter.dbcc_devicetype = DBT_DEVTYP_DEVICEINTERFACE;
for(int i=0; i<sizeof(GUID_DEVINTERFACE_LIST)/sizeof(GUID); i++) {
NotificationFilter.dbcc_classguid = GUID_DEVINTERFACE_LIST[i];
hDevNotify = RegisterDeviceNotification(this->GetSafeHwnd(), &NotificationFilter, DEVICE_NOTIFY_WINDOW_HANDLE);
if( !hDevNotify ) {
AfxMessageBox(CString("Can't register device notification: ")
+ _com_error(GetLastError()).ErrorMessage(), MB_ICONEXCLAMATION);
return FALSE;
}
[/code]
|
|
|
|
|
Probably you need to include comdef.h header (and link with the corrensponding library, see the Requirements section of this page [^]) in your application).
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[Image resize DLL]
|
|
|
|
|
i had comdef.h header but i havn't found comsuppw.lib or comsuppwd.lib .So how can i download it..
Plz help me
|
|
|
|
|
Probably you have a different version of Visual Studio (the link in my post was about VS 2008 ). Check out the documentation appropriate for your system, for instance the library needed, when using VS 2003 , is comsupp.lib , see [^]).
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[Image resize DLL]
|
|
|
|