|
Hi,
I am using visual studio 6.0. If it is not defined in current mfc installation then which version should i use.
Thanks
Dhiraj
|
|
|
|
|
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
|
|
|
|