|
I have a COM object. It is represented by a CAsyncSocket class which is responsible for listening , and this class holds a list of other CAsyncSocket objets ,
which may often be deleted or created. When I initially add sockets to this list
they are created succesfully , but if I delete one of the sockets, and then *Create* a new one - I get "Debug
assertion failed" File:afxwin1.inl Line:19. On that line is AfxInstanceHadle check up , in my case it's null. How can I handle it? Can't get it. One Create call is successfull , and another ones aren't. I read somewhere that there may be a kinda dead socket hadle hanging , but I am not sure ...
|
|
|
|
|
Hai,
I want to write a dial up program in vc++ for ASDL modem
what all we need to take care for writing the dial up program and i need to check all the errors in dial up program
kindly help me
Regards
krithi
|
|
|
|
|
Krithi,
Our company, Dundas Software, offers a free and pretty comprehensive C++ RAS Class that makes handling dial-up functions quite a bit easier. I encourage you to check it out and see if it will help you.
David Cunningham
Dundas Software
|
|
|
|
|
I am developing an install program that have to be capable to restart the computer. Cases that requre such threatment are when you hit file collision, i.e. the file that you are trying to copy, exists and is occupied by another program.
So you need to put a line in WINSTART.BAT to delete the old file and replace it with the newer one.
Following are two different functions: Reboot and ColdBoot.
As their name points to they are quite different. The first one Reboots the machine (but didn't work) and the second one turn the computer off (crude and unprofessional).
Why doesn't Reboot function work ?
/*
Function: Reboot
Purpose: Turn off the computer.
Parameters: bForce (if TRUE it doesn't close any window)
Return: TRUE if successful ?
Remarks: This function is somehow spooky.
*/
BOOL Reboot(BOOL bForce)
{
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
char szBuf[100];
int x = MessageBox(GetFocus(), "This application closes all running "
"applications and logs you off of the system.\n"
"Do you wish to continue?", "Exit Windows", MB_YESNO);
if (x == IDNO) return FALSE;
/*
Get a token for this process.
*/
if (!(GetVersion() & WIN32S))
{
#ifdef _DEBUG
OutputDebugString("Setting token.\n");
#endif
/*
Running on NT so need to change privileges.
*/
if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
{
wsprintf(szBuf, "OpenProcessToken Error #%d", GetLastError ());
MessageBox(GetFocus(), szBuf, NULL, MB_OK);
}
/*
Get the LUID for shutdown privilege.
*/
LookupPrivilegeValue(NULL, _T("SeShutdownPrivilege"), &tkp.Privileges[0].Luid);
tkp.PrivilegeCount = 1; // One privilege to set.
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
/*
Get shutdown privilege for this process.
*/
if (!AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, (PTOKEN_PRIVILEGES)NULL, 0))
{
wsprintf(szBuf, "AdjustTokenPrivileges Error #%d", GetLastError ());
MessageBox(GetFocus(), szBuf, NULL, MB_OK);
}
}
if (bForce)
{
if (!ExitWindowsEx(EWX_REBOOT, 0))
{
wsprintf(szBuf, "Error ExitWindows Error #%d", GetLastError ());
MessageBox(GetFocus(), szBuf, NULL, MB_OK);
}
}
else
{
if (!ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE, 0))
{
wsprintf(szBuf, "Error ExitWindows Error #%d", GetLastError ());
MessageBox(GetFocus(), szBuf, NULL, MB_OK);
}
}
return TRUE;
}
/*
Function: ColdBoot
Purpose: Turn off the computer.
Remarks: This function just turn off the computer,
it doesn't reboot it like I want to
*/
void ColdBoot()
{
char szWinIni[255];
GetWindowsDirectory(szWinIni, sizeof(szWinIni));
strcat(szWinIni, "\\rundll.exe user.exe,exitwindows");
WinExec(szWinIni, SW_SHOWNORMAL);
}
Adalsteinn B. Bjarnason
adal@itn.is
|
|
|
|
|
This is my code and it worked (cold reboot). Needs some more work (checking of return values and so on)
// In order to reboot we have to change the privileges
HANDLE hProcess = GetCurrentProcess(); // Is pseudohandle, no close needed
HANDLE hToken = NULL;
OpenProcessToken(hProcess,TOKEN_ADJUST_PRIVILEGES,&hToken);
if ( hToken )
{
TOKEN_PRIVILEGES priv_struct;
LUID_AND_ATTRIBUTES priv;
LUID priv_luid;
BOOL bRet;
bRet = LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &priv_luid);
priv.Attributes = SE_PRIVILEGE_ENABLED;
priv.Luid = priv_luid;
priv_struct.PrivilegeCount = 1;
priv_struct.Privileges->Attributes = SE_PRIVILEGE_ENABLED;
priv_struct.Privileges->Luid = priv_luid;
bRet = AdjustTokenPrivileges(hToken, FALSE, &priv_struct,NULL,NULL, NULL);
CloseHandle( hToken );
}
// Restart and give message to restart if failed
if ( !ExitWindowsEx (EWX_REBOOT,EWX_FORCE) )
{
// do errorcatching stuff here
}
// We are rebooting here so we can safely exit the program
exit(1);
|
|
|
|
|
Hi,
When I compile an MFC project, the icon in the explorer remains the default MFC one ! how can I change it ???
Thank you !
|
|
|
|
|
method 1:
---------
In your project, go to your resource view, check for icon, usually it's named IDR_MAINFRAME. You can repaint that.
Or
method 2:
---------
right-click on icon in the icon view, you will then be able to select import from the contextmenu. You can then import an icon and change its name (after you deleted the default one) to that of the default one. (you will especially need to do this if the code you use, uses LoadFrame to load a lot of default stuff)
|
|
|
|
|
Hi ! I am using VC++ 6.0. SP 4.0. , my COM application uses CAsyncSocket
, and when I try to close the socket (method Close()), I get
"Debug assertion failed"
File:sockcode.cpp
Line:483 // this is "CAsyncSocket::KillSocket(m_hSocket, this);"
There was a solution to a similar problem in MSDN article (Article ID:
Q139693 ) but I tried this and in my case it doesn't work.
I am at a loss. What can I do about it ?
Thanx in advance.
|
|
|
|
|
Try something like this
closesocket(m_hSocket)
where m_hSocket is data member from CAsyncSocket.
|
|
|
|
|
Hi ! I am using VC++ 6.0. SP 4.0. , my COM application uses CAsyncSocket
, and when I try to close the socket (method Close()), I get
"Debug assertion failed"
File:sockcode.cpp
Line:483 // this is "CAsyncSocket::KillSocket(m_hSocket, this);"
There was a solution to a similar problem in MSDN article (Article ID:
Q139693 ) but I tried this and in my case it doesn't work.
I am at a loss. What can I do about it ?
Thanx in advance.
|
|
|
|
|
Hello Everybody,
Can any one tell me a way to register my program into the startup so that it
can be executed automatically as soon as the system is booted ?
I want to do this for dispalying a icon on the system tray to control my
program ( just like the Volume Icon in the system tray for adjusting Volume
).
Thanks in advance.
|
|
|
|
|
In registry at
[HKEY_LOCAL_MACHINE]\Software\Microsoft\Windows\CurrentVersio\Run\
Add a string value ... Look at the entry that are already exists.
Doesn't matter windows version
/REMUS
|
|
|
|
|
Hello!
I am new to programming in VC++ and I have a problem with
the MSHFlexGrid 6.0.
I have three edit-fields and a FlexGrid with three columns.
When I push a button the entries from the edit-fields shall
be put in the columns of the grid and a new row must be
added. I thought I can do this with the AddItem-method, but
I couldn´t get it working.
The syntax is:
Object.AddItem(LPCSTR item; const Variant &);
What must I enter for the second term? Or do you have any
other ideas how I can solve my problem?
Thanks for reading,
Stefan
|
|
|
|
|
The method should describe the variant type
For example if you need a BSTR as variant type you need for second parameter
CString strString = "Your Text";
VARIANT va;
VariantInit(&va);
va.vt = VT_BSTR;
va.bstrVal = strString.AllocSysString();
Object.AddItem("Whatever",&va);
For other type of variant initialze proper memeber of VARIANT . vt memeber will descibe what member will be used
and you will initialize that one (could be more)
Best regards,
/REMUS
|
|
|
|
|
Hi, i've just begun to learn visual C++ and i am having problems with loading a list of objects, (which are stored in a text file), and displaying them in a List Box. I've looked through two books to try and get an efficent and understandable (to me) way of doing this and have come up with either trying to do this with serialization or using the standard windows i/o of CreateFile() to open the file and ReadFile() to (obviously) read from the file but it is explained poorly in both my books and so i haven't been able to get very far. If anyone has any form of tutorial to point me at or has some time they could spend to explain a method/methods of File I/O in windows I would be most gratefull.
|
|
|
|
|
I also have struggled with C++ I/O .... but this should
do the trick :
1) at the top of your cpp file, add the following lines :
#include "fstream.h"
#define MAX_CHARS_PER_LINE 80 // maximum number of characters
2) create a CONTROL variable for your list box (m_list1 in this example)
3) to read the input file and add to the list box :
char line[MAX_CHARS_PER_LINE];
ifstream infile;
infile.open("list.txt");
while (!infile.eof())
{
infile.getline(line,MAX_CHARS_PER_LINE);
m_list1.AddString(line);
}
infile.close();
|
|
|
|
|
Thanks, i figured out how to accomplish the same thing using serialization. It looks similar to this:
// This is the saving Routine
CFile f;
f.Open("PrefsFile", CFile::modeCreate | CFile::modeWrite);
CArchive ar( &f, CArchive::store );
ar << m_CurrentCount; // Number of objects being saved
for(int i = 0; i<m_currentcount ;="" i++)
="" ar="" <<="" prefs[i];="" this="" saves="" each="" object
="" ar.close();
="" f.close();
="" is="" the="" loading="" routine
="" cfile="" f;
="" f.open("prefsfile",="" cfile::moderead);
="" carchive="" ar(="" &f,="" carchive::load="" );
="">> m_CurrentCount; // Number of objects to load
for(int i = 0; i < m_CurrentCount ; i++)
ar >> Prefs[i];
ar.Close();
f.Close();
|
|
|
|
|
I'm working on a paint program, and want my File|Open dialog to allow loading of jpg, bmp, ( NOT gif, if UNISYS is watching ;o) ) so I have created multiple document templates. The problem now is that when I click File|New I get asked what sort of document I want to create. Can anyone suggest a way to get around this problem ? I've tried overriding OnFileOpen in the Document class, but that works only AFTER the first file has been loaded or created.
Thanks
Christian
|
|
|
|
|
You should override CWinApp::OnFileNew(). MFC technical note 22 has a little bit about this.
|
|
|
|
|
Hello, codeguru around the world.
Visual C++ 4 HOW-TO by Scott Stanfield with Ralph Arvesen
has something to resolve this answer.
I just write the sentense as it is.
4) Add a string resource.
Using App Studio, make a copy of the existing string resource IDR_LINESTYPE and change the ID to IDR_DEBUGTYPE.
The caption for the IDR_DEBUGTYPE is not identical to IDR_LINESTYPE. Modify it and remove the second, "Lines" to prevent the framework from thinking we have more than one document type. Otherwise, you would end up with the dialog box - the unwanted file new dialog box.
Good luck for your project.
-Masaaki Onishi-
|
|
|
|
|
hi guys,
i am trying to parse a c++ header file to get the information abt all the classes and their respective functions declared in them.
i am not able to get the position of starting and clsoing braces for a class definition. i know this can be done using stack/recursion, but i couldn't write it.
any help in this reagrd will be highly appreciated.
thanx in advance
mukesh.gupta@promap.co.uk
|
|
|
|
|
This is actually simpler than it would at first seem. You can use the stack based approach but I would go for a more stuctured implementation if I were you.
I have just finished a little project of implementing an interpreter for VB code. It doesn't cover the whole syntax but it does some cool stuff anyway.
I wrote the parsing code using BISON and FLEX. You may have heard of these before. FLEX is a lexical analyser generator and BISON is a parser generator. Both of these program generate valid C code which is ready to be incorporated into your program.
All you do is define the set of tokens used in the language to be parsed and then define a set of ways in which these tokens can be put together in the language. The ways in which the tokens can be used in the language are called the productions. E.g. for C++, the tokens would contain
" , ( ) void int long struct class { } =
And a production for the use of a built in type would be
BuiltInType : INT
| LONG
| DOUBLE
| FLOAT
| VOID
| etc etc etc;
This states that a Built in type is one of the tokens in the list. The "|" means OR. So a built in type is an int OR a aloat OR a void etc.
You can then define, in a BISON script, what C code is to get run when one complete production is found in the input buffer.
Because the script is written by you, you can have the output C code contain anything you want. In your case, when the "IveFoundAMethod" production is run you will want to save the relivant information about that method for use elsewhere in your program.
BISON and FLEX produce code that can be used in VC++. There are some very small changes to make to the generated code but they are only small and fairly self explanitory.
I know that you can find them for download if you search on Yahoo for "BISON FLEX".
Hope this helps
|
|
|
|
|
how can I prevent the user the adjust/resize the window with mouse?
thamks in advanced
guy
|
|
|
|
|
Try to read help for function
SetWindowPos
you have a flag named
SWP_NOSIZE
/REMUS
|
|
|
|
|
thanks remus for your help
i've tried it before and it didn't work,so
i will try again
thanks anyway
|
|
|
|
|