|
Hello,
I want to execute a progrom i develop in visual c++ and i have the following message.
Can you help me please !
---------------------------
Microsoft Visual C++ Debug Library
---------------------------
Debug Assertion Failed!
Program: D:\Dossier_plus\MaterielVisio\Debug\MaterielVisio.exe
File: afxwin2.inl
Line: 96
For information on how your program can cause an assertion
failure, see the Visual C++ documentation on asserts.
(Press Retry to debug the application)
---------------------------
Abandonner Recommencer Ignorer
---------------------------
Hervy
|
|
|
|
|
have you seen call stack? because this is very general message.
|
|
|
|
|
Hello,
You probably did not initialize some of the MFC windows correctly. Try do step into the code and see the context of the error. From there you should be able to solve the problem, if not, please post more specific information!
Behind every great black man...
... is the police. - Conspiracy brother
Blog[^]
|
|
|
|
|
I suppose that you have some window object (derived from CWnd) which is instantiated (created with new() operator or on stack), but not yet created (in Windows sense). for example, this can happen if you have some CEdit object in a dialog and you try to set its text limits inside the dialog constructor. CEdit object already exists, but edit window does not. therefore, the call will fail because it tries to send a message to the edit box, but it is not created yet. Right place for that would be inside OnInitialUpdate() override.
|
|
|
|
|
hervy wrote:
File: afxwin2.inl
Line: 96
So have you looked at line 96 of afxwin2.inl to see what expression is evaluating to false?
"One must learn from the bite of the fire to leave it alone." - Native American Proverb
|
|
|
|
|
hi, buddy
i use Crystal Report in my Vc++6.0 project, now i have a problem.
when creating a instance of IApplicationPtr using
try<br />
{<br />
m_pApplication.CreateInstance( __uuidof(Application) );<br />
}<br />
catch( _com_error& e )<br />
{<br />
HandleError( e );<br />
}
there is no exception, but m_pApplication is still NULL, what's wrong?
|
|
|
|
|
just a check, have you used CoInitialize()
|
|
|
|
|
Dear fellow software engineers,
Im trying to link some example code from the MDSN website into my visual C++ project
and i get the following error. can you help?
Linking...
OLMECDlg.obj : error LNK2001: unresolved external symbol "int __cdecl
CheckTokenMembership(void *,void *,int *)"
(?CheckTokenMembership@@YAHPAX0PAH@Z)
Debug/OLMEC.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.
the example code i was using was as follows:
#include
#include
extern BOOL CheckTokenMembership(HANDLE TokenHandle,PSID SidToCheck,PBOOL
IsMember);
/*++
Routine Description: This routine returns TRUE if the caller's process
is a member of the Administrators local group. Caller is NOT expected
to be impersonating anyone and is expected to be able to open its own
process and process token.
Arguments: None.
Return Value:
TRUE - Caller has Administrators local group.
FALSE - Caller does not have Administrators local group. --
*/
BOOL COLMECDlg::IsUserAdmin(VOID)
{
BOOL b;
SID_IDENTIFIER_AUTHORITY NtAuthority = SECURITY_NT_AUTHORITY;
PSID AdministratorsGroup;
b = AllocateAndInitializeSid(
&NtAuthority,
2,
SECURITY_BUILTIN_DOMAIN_RID,
DOMAIN_ALIAS_RID_ADMINS,
0, 0, 0, 0, 0, 0,
&AdministratorsGroup);
if(b)
{
if (!CheckTokenMembership( NULL, AdministratorsGroup, &b))
{
b = FALSE;
}
FreeSid(AdministratorsGroup);
}
return(b);
}
Please note that I have also setup my linker to include advapi32.lib but
this still fails. What am i doing wrong or is there a mistake on the MSDN
webpage?
(http://msdn.microsoft.com/library/default.asp?url=/library/en-us/secauthz/s
ecurity/checktokenmembership.asp)
Has anyone used this function before,Can anyone help?
thanks,
Rainos
|
|
|
|
|
|
Or... The function is not a C++ decorated function, of which MOST of the Win32 API is not...
So, try this instead:
extern "C" {
extern BOOL CheckTokenMembership(HANDLE TokenHandle,PSID SidToCheck,PBOOL
IsMember);
}
Recompile and relink, see if that works for you
|
|
|
|
|
I have configuration dialogbox where the user uses the combo box to select and set the configuration.
Now how and where can i save the configuration data. and how to retrive last saved configuration
Thanks,
KarmU
|
|
|
|
|
Use the Registry (preferred) or a configuration file. You can find lots of articles at CodeProject. Search for the word registry.
|
|
|
|
|
You can use the windows registry for storing your data. The platform SDK provides a set of functions to access the registry. Search MSDN.
Another way is to store the data in a text file. This is very easy using the MFC class CStdioFile.
MS
|
|
|
|
|
i used the following code but it gives assertion failure why?
CStdioFile f;
char buf[] = "test string";
f.WriteString( buf );
|
|
|
|
|
You need to open the file before writing to it. Do it this way:
CStdioFile file;
CString lineOfText;
file.Open("C:\\exaplepath\\examplefile.xyz", CFile::modeCreate|CFile::modeReadWrite);
lineOfText="This is the first line";
lineOfText+="\r\n";
file.Writestring(lineOfText);
lineOfText="This is the second line";
lineOfText+="\r\n";
file.Writestring(lineOfText);
file.Close();
MS
|
|
|
|
|
|
http://www.codeproject.com/cpp/cinifile.asp[^]
this link doesn't work.
and can i get an example code how to use CRegKey class for storing and retriving data.
I have around 11 feilds and i want to save them all.
thanks.
|
|
|
|
|
karmendra_js wrote:
http://www.codeproject.com/cpp/cinifile.asp
just try http://www.codeproject.com/cpp/cinifile.asp
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
cheers,
Alok Gupta
VC Forum Q&A :- I/ IV
|
|
|
|
|
karmendra_js wrote:
http://www.codeproject.com/cpp/cinifile.asp
this link doesn't work.
Did you not notice the extra stuff in the URL? Try it again but remove the extraneous characters.
"One must learn from the bite of the fire to leave it alone." - Native American Proverb
|
|
|
|
|
You can consider using the Registry to save your configuration data. Proceed as under (with MFC):
1. Use functions such as SetRegistryKey, WriteProfileString (for a string), WriteProfileInt (for int), GetProfileString, GetProfileInt, etc., of the application class for setting and accessing values from the Registry.
2. You can consider the Constructor or InitDialog functions wherein the stored values can be retrieved from Registry and displayed in the Configuration dialogbox.
3. Use OnOK (or whatever other button-event-handlers) to save the changed configuation data to registry.
4. Use these stored values appropriately in the code to change your program response. For example, use PreCreateWindow function of the mainframe class to change the position or size of main window using stored configuration data.
Regards,
Ashok Dhamija
_____________________________
Padam Technologies
|
|
|
|
|
Hi,
honestly I don't like Bill's registry very much...
If I need to store any configuration data this is my preferred way.
Regards
Achikm Klein
We can do no great things, only small things with great love. - Mother Theresa
|
|
|
|
|
Achim Klein wrote:
honestly I don't like Bill's registry very much...
Yeap Nice, But still you using Bill's Window for storing the data ?
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
cheers,
Alok Gupta
VC Forum Q&A :- I/ IV
|
|
|
|
|
I have a problem with conversion, when i ran the code below, it gives me the error :
Error : ERROR_INVALID_PARAMETER (refer to trace code below).. Whats wrong with my code?
By the way Im using Embedded Visual 3, where the default setting of my Project is Unicode...
I have my own CSoString which is the same with CString but in plain C format ANSI and have some additional features in it. I want to convert first from unicode to ansi so that the converted ansi will be passed to CSoString like for ex.
CSoString mystring;
mystring.Copy(char* here); // where the char* is the converted Unicode to ANSI.
but before i copy it, i have to fix the problem with conversion....
Pls. see code below..
Thanks and More pOwer.
------------------------------------------- Code ----------------------------------------
CString m_wordSearchText; // this variable is a cstring of edit box.
LPSTR hold=0;
LPSTR hold2=0;
int len=WideCharToMultiByte(CP_ACP,0,(LPCWSTR)m_wordSearchText,-1,hold,0,NULL,NULL);
if (len==0)
{
DWORD lerror=GetLastError();
switch(lerror)
{
case ERROR_INSUFFICIENT_BUFFER :
{
TRACE(_T("ErrorLen : ERROR_INSUFFICIENT_BUFFER\n")); break;
}
case ERROR_INVALID_FLAGS :
{
TRACE(_T("ErrorLen : ERROR_INVALID_FLAGS\n")); break;
}
case ERROR_INVALID_PARAMETER :
{
TRACE(_T("ErrorLen : ERROR_INVALID_PARAMETER\n")); break;
}
}
}
else
{
WideCharToMultiByte(CP_ACP,0,(LPCWSTR)m_wordSearchText,len,hold,len,NULL,NULL);
DWORD lerror=GetLastError();
switch(lerror)
{
case ERROR_INSUFFICIENT_BUFFER :
{
TRACE(_T("Error : ERROR_INSUFFICIENT_BUFFER\n"));
break;
}
case ERROR_INVALID_FLAGS :
{
TRACE(_T("Error : ERROR_INVALID_FLAGS\n"));
break;
}
case ERROR_INVALID_PARAMETER :
{
TRACE(_T("Error : ERROR_INVALID_PARAMETER\n"));
break;
}
}
}
TRACE2("UniCodeWord=%s ConvertedWord=%s\n",m_wordSearchText,hold);
|
|
|
|
|
You didn't initialize the Ansi string, it points to NULL.
Just prior to the second WideChar call, insert the code:
<br />
hold = new char [len + 1];<br />
WideCharToMultiByte(CP_ACP,0,(LPCWSTR)m_wordSearchText,len,hold,len,NULL,NULL);<br />
hold[len] = '\0';<br />
<br />
...<br />
<br />
delete [] hold;<br />
<br />
I usually use a CStringA object instead of allocating with new, not sure if it's part of Embedded Visual 3.
He is smart. He will make our Windows go.
-- modified at 7:11 Thursday 15th September, 2005
|
|
|
|
|
Hi,
Thanks for the code. It works.
More power to you..
|
|
|
|