|
Please look here[^] for more details.
Regards,
Paresh.
|
|
|
|
|
Thanks Paresh!
Good article.
regards,
George
|
|
|
|
|
an XML file with the name "myapplication.exe.manifest" placed in the same directory as "myapplication.exe"
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
version="1.0.0.0"
processorArchetectiture="x86"
name="Microsoft.Windows.plugin"
type="win32"
/>
<description>insert your application description here</description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="x86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
</assembly>
as to what that all means I leave that to you as an exercise
PS: thanks for the linkage Paresh
|
|
|
|
|
Thanks Roger,
Your sample is very helpful. Great! I am just curious, why do you need to be dependent on a specific version of Windows Control component? You want to have some special Visual effect? Or you hard code something in your code which needs the specific version component?
How about if the runtime (customer environment) does not have the specific version of component?
regards,
George
|
|
|
|
|
If you need adminstrator privileges to run your program you can (and have to) specify it in the manifest.
Greetings from Germany
|
|
|
|
|
Thanks KarstenK,
It should be a good usage scenario. Do you have more detailed steps about how to write a manifest file to only let administrator run it?
regards,
George
|
|
|
|
|
Hello.....all's
I am making an application in vc++ amd i used MySQL as database. I make a login section for user and admin also, but i am unable to make it case sensitive ( Mense "TEST" and "test" both are same thing for it. )
Can any one told me how can do it case sensitive. So that user can chosse his user name and password according to his choice.
Regard's
Kaushik
|
|
|
|
|
Y_Kaushik wrote: am making an application in vc++ amd i used MySQL as database. I make a login section for user and admin also, but i am unable to make it case sensitive ( Mense "TEST" and "test" both are same thing for it. )
Do you mean by case insensitive ?
If you are using CString then use
CString::CompareNoCase(LPCTSTR lpsz);
Regards,
Paresh.
|
|
|
|
|
Thanks for help
Regard's
Kaushik
|
|
|
|
|
I have a big structure(NAME_INFO) of strings that needs to be filled up by using the ResourceID.
typedef struct _NAME_INFO<br />
{<br />
char* strTagName;<br />
BOOL bAlwaysCreate;<br />
} NAME_INFO;
Initialization:
NAME_INFO NamesTable[] =<br />
{<br />
{ConvertResIdToChar(IDS_PRIYA),true},<br />
{ConvertResIdToChar(IDS_NISHA),true},<br />
{ConvertResIdToChar(IDS_RAM),true},<br />
{ConvertResIdToChar(IDS_RAJ),true},<br />
{ConvertResIdToChar(IDS_RAHUL),true},<br />
};
At present the function i have is:
char* CNewDialog::ConvertResIdToChar(UINT uResString)<br />
{<br />
CString strTemp;<br />
strTemp.LoadString(uResString); <br />
char* str = strTemp.GetBuffer(strTemp.GetLength());<br />
<br />
return (str);<br />
}<br />
I am not able to fill the 'NamesTable' with the required strings...
Please help!!
Priya Sundar
|
|
|
|
|
You're returning a pointer to the buffer of a CString on the stack that will go out of scope when the fucntion returns.
|
|
|
|
|
Then how could i modify the function??
Any suggestions??
Priya Sundar
|
|
|
|
|
Change the function return type and the string member of the struct to CString
|
|
|
|
|
I am getting error:
error C2440: 'initializing' : cannot convert from 'class CString' to 'struct _NAMES_INFO'
No constructor could take the source type, or constructor overload resolution was ambiguous
Priya Sundar
|
|
|
|
|
Priya_Sundar wrote: I am getting error:
error C2440: 'initializing' : cannot convert from 'class CString' to 'struct _NAMES_INFO'
No constructor could take the source type, or constructor overload resolution was ambiguous
Posting a compiler error message with the code that produced it is going to get you nowhere fast. What is the error telling you?
|
|
|
|
|
Priya_Sundar wrote: char* CNewDialog::ConvertResIdToChar(UINT uResString)
{
CString strTemp;
strTemp.LoadString(uResString);
char* str = strTemp.GetBuffer(strTemp.GetLength());
//str = strcpy(chTemp, (const char *) strTemp); - NOT WORKING TO FILL UP TABLE
return (str);
}
You haven't allocated the memory for char* str .
char* CNewDialog::ConvertResIdToChar(UINT uResString)
{
CString strTemp;
strTemp.LoadString(uResString);
char* str = new char[strTemp.GetLength()];
strcpy(str, (LPCTSTR) strTemp);
return (str);
}
Regards,
Paresh.
|
|
|
|
|
s have tried this.. but got problem in deallocating the memory leading to memory leaks..
Priya Sundar
|
|
|
|
|
I dont see any issue in this.
Could you please post your code snippet ?
Regards,
Paresh.
|
|
|
|
|
i tried this code
CString strLoad;<br />
strLoad.LoadString(IDS_PROJECT);<br />
LPTSTR lpsz = new TCHAR[strLoad.GetLength()+1];<br />
CHECK_FOR_NULL(lpsz)<br />
_tcscpy(lpsz,strLoad);
In Debug mode, while the function exits i get the memory leak for the new operator
Priya Sundar
|
|
|
|
|
Priya_Sundar wrote: CString strLoad;
strLoad.LoadString(IDS_PROJECT);
LPTSTR lpsz = new TCHAR[strLoad.GetLength()+1];
CHECK_FOR_NULL(lpsz)
_tcscpy(lpsz,strLoad);
I could found three ways to avoid mem leak
#1 callee itself provide the memory, and you function just to the copying task!
#2 you manually delete the memory when use of variable ends.
#3 Create the datastructure of vector or list , which contain pointer to all allocated memory and when program exit, delete all the memory pointed in vector!
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow Never mind - my own stupidity is the source of every "problem" - Mixture
cheers,
Alok Gupta
VC Forum Q&A :- I/ IV
Support CRY- Child Relief and You
|
|
|
|
|
char* CNewDialog::ConvertResIdToChar(UINT uResString)
{
CString strTemp ;
char str[MAX_SIZE] ;
strTemp.LoadString(uResString) ;
strcpy( str , strTemp.GetBuffer(strTemp.GetLength()) ) ;
return &str[0] ;
}
|
|
|
|
|
Using this function also i am not able to fill up the table correctly.
All the methods convert fine. i.e if i give a AfxMessageBox(str);, i am able to get the correct string displayed.
I think the problem is in the method of passing or in the method of initialization of the structure.
Priya Sundar
|
|
|
|
|
This is just plainly wrong. You are returning a pointer to something that is local to the function and that will be destroyed when the function goes out of scope.
The problem is that it is a very insidous bug because it will probably work but once you change something somewhere in your code, bang, you'll get a crash.
|
|
|
|
|
Okay People.....
THANKS FOR ALL YOUR COMMENTS AND SUGGESTIONS...
Finally i landed up in something like this..
hLPSTR pMyLpstr;<br />
<br />
pMyLpstr = NULL;<br />
<br />
char* CNewDialog::ConvertResIdToChar(UINT uResString)<br />
{<br />
CString strLoad; <br />
strLoad.LoadString(nResString); <br />
pMyLpstr = new TCHAR[strLoad.GetLength()+1]; <br />
CHECK_FOR_NULL(pMyLpstr)<br />
_tcscpy(pMyLpstr,strLoad); <br />
return pMyLpstr;<br />
}<br />
<br />
delete [] pMyLpstr;<br />
pMyLpstr = NULL;<br />
This is based on a idea given by Nelek in some other thread.
Priya Sundar
|
|
|
|
|
just want to be sure, is this function call only once for each ID!
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow Never mind - my own stupidity is the source of every "problem" - Mixture
cheers,
Alok Gupta
VC Forum Q&A :- I/ IV
Support CRY- Child Relief and You
|
|
|
|