|
What's the major difference between stricmp and _stricmp? I'm porting an application from PC to PocketPC and PPC does not like 'stricmp.' Is the '_' just an indicator for UNICODE, in this case?
Thanks in advance,
Carl
|
|
|
|
|
No. UNICODE calls are usually prefixed with a "w", so the UNICODE counterpart is wcsicmp in this case. The _ is probably and "oldnames.lib" thing. Try to use as a last resort
#ifdef POCKET_PC // or your platform
#define stricmp _stricmp
#endif POCKET_PC
or, alternatively
#ifdef POCKET_PC // or your platform
#define stricmp(x, y) _stricmp((x), (y))
#endif POCKET_PC
|
|
|
|
|
yeah, that's what I'm doing right now. I was just puzzled by the '_'.
Thanks for answering that question for me.
|
|
|
|
|
Like2Byte wrote: What's the major difference between stricmp and _stricmp?
The former comes from oldnames.lib.
Like2Byte wrote: Is the '_' just an indicator for UNICODE, in this case?
Hardly, if ever. When a function is preceded with an underscore, it usually indicates a Microsoft-specific implementation.
"Approved Workmen Are Not Ashamed" - 2 Timothy 2:15
"Judge not by the eye but by the heart." - Native American Proverb
|
|
|
|
|
DavidCrow wrote: When a function is preceded with an underscore, it usually indicates a Microsoft-specific implementation.
That I can believe. Thank you, very much!
|
|
|
|
|
Hi All,
I have one MFC application, I removed the resource(.rc file) in the "File View". I created a "Reource-Only DLL" and I added that removed resource(.rc file and resource.h file) in "Resource-Only DLL". With Linker option as /NOENTRY.
I have done one small test program and its working fine. But if I implement same in my application I'm getting Error code as 1407 (i.e., "Cannot find window class.") in my application workspace.
If i debug through I will get this error in "hWnd = ::CreateDialogIndirect(hInst, lpDialogTemplate,pParentWnd->GetSafeHwnd(), AfxDlgProc);" and file path is "..\MFC\SRC\DLGCORE.CPP".
I feel associated class and dialog is not mapping, But I'm not sure.
Please can you help me on this...
Pradeep
|
|
|
|
|
You may need to use AfxSetResourceHandle() to set the HINSTANCE of the DLL before creating
the dialog. If only some resources are in the DLL and some are in your app then you'll want to
restore the HINSTANCE of the app with AfxSetResourceHandle when you're done creating the dialog.
HINSTANCE hResourceDLLInstance = NULL;
hResourceDLLInstance = LoadLibrary("MyResource.dll");
...
...
// Create a dialog - Dialog resource is in MyResource.dll
HINSTANCE hOldResourceInstance = AfxGetResourceHandle();
AfxSetResourceHandle(hResourceDLLInstance);
...
// Create the dialog here
...
AfxSetResourceHandle(hOldResourceInstance);
|
|
|
|
|
Hi Thanks for quick response.
Infact application don't have resource, all resource is in DLL. Still I'm using "AfxSetResourceHandle( )". But still it's failing...
Pradeep
|
|
|
|
|
Does the DIALOG resource have a CLASS statement?
|
|
|
|
|
Probably he's not using MFC extension dll for resource dll, and the resource is not found in dll chain?
|
|
|
|
|
Cristian Amarie wrote: Probably he's not using MFC extension dll...
Yes. I'm thinking that the MFC initialization code which registers the built-in window classes
needs to be called in the DLL since it associates the class with the HINSTANCE.
I didn't think this was necessary because I use a resource-only DLL (without any MFC in the DLL)
and use dialog resources from the DLL in a MFC app but I just looked at the code (I haven't looked
at it in years ) and I'm loading the dialog resource into memory then creating the dialog
indirectly with MFC
|
|
|
|
|
I'm using "Win32 Dynamic Link Library". Because I have used a "Resource-Only DLL" (referred MSDN Creating a Resource-Only DLL).
Am I suppose to use MFC Extension DLL here?
|
|
|
|
|
Does this work?
HRSRC hResource = FindResource(hResourceModule, MAKEINTRESOURCE(IDD_MYDIALOG), RT_DIALOG);
HGLOBAL hTemplate = LoadResource(hResourceModule, hResource);
MyDialog.CreateIndirect(hTemplate, pParentWnd);
|
|
|
|
|
Yes, it's working fine but it will creates Modeless dialog. If I use this code dialog will come and disapears.
Infact I have Modal dialog. I'm not able not invoke using "MyDialog.DoModal();"
Thanks & Regards,
Pradeep
|
|
|
|
|
HRSRC hResource = FindResource(hResourceModule, MAKEINTRESOURCE(IDD_MYDIALOG), RT_DIALOG);
HGLOBAL hTemplate = LoadResource(hResourceModule, hResource);
MyDialog.InitModalIndirect(hTemplate, pParentWnd);
MyDialog.DoModal();
|
|
|
|
|
No, In "MyDialog.InitModalIndirect(hTemplate, pParentWnd); will get some assertions.
Is it a better idea to implement our own "DoModal( )".
I can override DoModal( ), Is it a good idea to do this?
Please suggest...
Thanks
Pradeep
|
|
|
|
|
What are the assertions and where?
I tested this and it works on a non-MFC resource-only DLL:
HMODULE hResourceModule = LoadLibrary(_T("LabDB_DBRes.dll"));
HRSRC hResource = FindResource(hResourceModule, MAKEINTRESOURCE(3101), RT_DIALOG);
HGLOBAL hTemplate = LoadResource(hResourceModule, hResource);
CDialog MyDialog;
MyDialog.InitModalIndirect(hTemplate, this);
MyDialog.DoModal();
You can override DoModal but why do you need to?
Mark
|
|
|
|
|
Also, you may be using the wrong CDialog constructor. You just need to use the empty constructor
for indirectly-created dialogs
|
|
|
|
|
In constructor I have some initialization to NULL, Other than that nothing is there.
While debugging I found that in one place(DoModal Code) passing some wrong hInstance value. So I tried to override same in my code and passed hInstance = NULL. Then its worked for me, but still its strange thing why default code is not working (Not so clear).
|
|
|
|
|
You're not still using AfxSetResourceHandle are you?
You don't want to do that with the code I posted
|
|
|
|
|
Can you show the code for your dialog class constructor? You'll want to call CDialog's empty
constructor:
CMyDialog(...) : CDialog()
{
}
|
|
|
|
|
Hello all ,
I am just new to programming! I want to store the total number(deck[i].value) of several players evth having loop(players depend on user how many want).I tried many ways for that like vector and array.I dont know why I couldnt!Another thing,if user wants more cards,I want to give cards from old deck coz i dont want duplicates. anybody help me to solve out!
cout<<"how many player u want"<<endl;
cin>>n;
for ( i = 0; i < 3*n; ) {
int urtotal=0;
cout << " player" << n<< '\n';
for ( int j = 0; i < 56 && j < 3; i++, j++ ){
cout << deck[i].suit << deck[i].face <<" ";
urtotal+=deck[i].value;
}
cout<<urtotal;
}
|
|
|
|
|
davvid wrote: /*cout<<"want more"<<endl;
cin="">>cond;
while(cond=='y'){
urtotal =urtotal+rand()%1;
}
if(urtotal>42)
urtotal=urtotal-30;
else if(urtotal>31&&urtotal<42)
urtotal=urtotal-20;
else if(urtotal>21&&urtotal<32)
urtotal=urtotal-10;
cout<<urtotal;* <="" blockquote="">
Since this code is commented out, why include it in your post? It just adds to the confusion. Now if it actually has something to do with the problem, that's different. Also, don't forget to use <pre> tags.
"Approved Workmen Are Not Ashamed" - 2 Timothy 2:15
"Judge not by the eye but by the heart." - Native American Proverb
|
|
|
|
|
Can you please illustrate more clearly what do you intend to do?
I understand you wnat to have a variable number of players and that you want to give to each player some cards (without having duplicates), no more...
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.
|
|
|
|
|
Thank for ur help! I ld to variable from urtotal...but deck[i].value is concerned with struct function. and I dont know the size of variable. If player want 3 players , 3 variables wll store in oneplace. Because I want to compare all of them ..such wh is biggest and smallest. And the reason why I put (cond) statement at my post is I ll give 3 cards first for each player.if they want more cards ll be out from old deck that already used.But I dont know how to go back to there .And my (cond) statement is endless loop now. how do i stop it? After user get one more card ,I ld to plug in with old one ..suit and face... and out the total again.
sorry for my stupid Q...
|
|
|
|