|
Hi there,
I am interested in catching all exceptions that could happen in my piece of MFC VC++ code. Up until now i have used been using Catch(CException *pException), but i noticed it doesn't catch divide by zero. To work around this someone recommended that I use Catch(...), is this best way for catching all exceptions. BTW what role does '...' play within C++? Never come across it before.
Thanks In Advance
Rich
|
|
|
|
|
|
Hi,
I am trying to store a message dialog resource in a DLL so that I can use it in all my applications.
I have had a bit of success thanks to Johan Rosengren, so now I can store the dialog resource in the DLL and use it in my application.
The problem I am still having is when I try and call functions that are part of the MFC framework. Like GetAfxAppName() or any of the Registry Profile functions.
Is there any way I can get this methods to work inside the DLL? or is it just a lost cause
Thanks
Mark
|
|
|
|
|
...
MHillary wrote:
thanks to Johan Rosengren
...and here I am again
Did you check AFX_MANAGE_STATE ? You should do a search on MSDN (www.msdn.microsoft.com[^]) and read up on the subject, it's a bit long to quote verbatim.
|
|
|
|
|
Hi,
I did, basicly what I've done is create a header file called Dialogs with simple C methods in it with names like ShowMessageDialog(...) ShowProgressDialog(...) etc In each one I've got AFX_MANAGE_STATE(GetStaticModuleState( )); Before I make any calles into MFC.
The problem that I found though is that switches everything over to the DLL, so when I call AfxGetApp() an assert is generated.
In the case of the Application Name I've called GetAfxAppName() before AFX_MANAGE_STATE and then passed that string to the dialogs constructor. But for things like the registy functions it just doesn't work.
Cheers
Mark
|
|
|
|
|
Hm, I tested this:
__declspec( dllexport ) void Test()
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
CWinApp* p = AfxGetApp();
}
and I got the correct pointer to the app. You might also perhaps try passing in a pointer to the app (although it should be unecessary), try using a wrapper class for the registry - there is a ton of articles with registry-classes here
|
|
|
|
|
Hi,
I tried doing that test as well. I created two projects. One was a MFC application and one was MFC dll.
I placed the test function in the dll and called it from the app. I got NULL returned by AfxGetApp(). So if I call something like AfxGetAppName() I get a runtime error.
What type of dll do you create?
Cheers Mark
|
|
|
|
|
A Regular DLL with MFC dynamically linked
|
|
|
|
|
How can I trap when my dialog or window has become inactive like when the user has clicked on another window?
I have tried WM_KILLFOCUS but that does not work.
Also how can I test if a click is on the title bar of my window?
|
|
|
|
|
Anonymous wrote:
How can I trap when my dialog or window has become inactive
Handle WM_ACTIVATE .
Anonymous wrote:
how can I test if a click is on the title bar of my window
Handle WM_NCLBUTTONDOWN and send the (x,y) coordinates in a SendMessage (WM_NCHITTEST, ...) call and compare the return value with HTCAPTION .
/ravi
My new year's resolution: 2048 x 1536
Home | Articles | Freeware | Music
ravib@ravib.com
|
|
|
|
|
Hi,
Have got few doubts about dll loading and unloading.
I have an application with some 8 to 10 dlls (some using statically linked MFC and some ATL dlls). When I launch the application, I see that the dlls are loaded more than once. I think the OS is loading and unloading these dlls atleast 2 or 3 times and then it gets loaded finally.
* How can I stop this behaviour and load my dlls only once when the application is launched and it is unloaded only when I quit the application?
* Should I release all the memory I allocate in a dll when the dll is unloaded?
TIA
satya
|
|
|
|
|
Hi,
How can I iconize my application through program?
TIA
satya
|
|
|
|
|
AfxGetMainWnd()->PostMessage (WM_SYSCOMMAND, SC_MINIMIZE);
/ravi
My new year's resolution: 2048 x 1536
Home | Articles | Freeware | Music
ravib@ravib.com
|
|
|
|
|
I wonder how i can enable the frontpage extension for a website on IIS by coding. (i don't care what kind of language the code is written in)
I can't find any help from google about this.
I appreciate if you can help.
Thanks.
|
|
|
|
|
I want to ask something about WinSock. I use it to make connection-Oriented program, I make "PREPARING" for the client and server socket: socket(); setsockopt(SO_RCVTIMEO); set IP address and port for the socket; and finally bind();
For the client, connect(); send(); and there is no SOCKET_ERROR.
Then, for the server, I make listen(); and then the following code:
while(TRUE)
{
iRet=0;
iRet = select(2,&serverReadFD,NULL,NULL,&selectTimeout);
if(iRet == SOCKET_ERROR)
{
AfxMessageBox("ERROR SOCKET SELECT");
closesocket(serverSocket);
return 0;
}
else if(iRet >0)
{
if(FD_ISSET(serverSocket,&serverReadFD))
{
int addrLength=sizeof(sockaddr);
clientConnection = accept(serverSocket,
(struct sockaddr*)&connectionInfo,&addrLength);
if(clientConnection == INVALID_SOCKET)
{
AfxMessageBox("ERROR SOCKET ACCEPT");
closesocket(clientConnection);
closesocket(serverSocket);
return 0;
}
FD_SET(clientConnection,&mainReadFD);
}
else
{
//
iRet = recv(clientConnection,msgData,sizeof(msgData),0);
if(iRet == SOCKET_ERROR)
{
AfxMessageBox("ERROR SOCKET RECEIVE");
closesocket(clientConnection);
closesocket(serverSocket);
return 0;
}
else if(iRet >0)
{
//AfxMessageBox("IN SOCKET RECEIVE");
CString tmp;
tmp.Format("%d",_T(msgData));
::PostMessage(data->mainHandler,WM_DATA_MSG,
(WPARAM)AllocBuffer(tmp),0);
tmp.Insert(0,"REPLAY: ");
iRet = send(clientConnection,(const char*)tmp.GetString(),
tmp.GetLength(),0);
if(iRet == SOCKET_ERROR)
{
AfxMessageBox("ERROR SOCKET SEND");
closesocket(clientConnection);
closesocket(serverSocket);
return 0;
}
memset(msgData,'\0',sizeof(msgData));
}//END RECV CONNECTION
}
}// END SELECT SUCCESS
FD_ZERO(&serverReadFD);
serverReadFD=mainReadFD;
}//while(TRUE)
There is no SOCKET_ERROR either, but the server infinitly receive the Client message "There is no problem in the accept() function".
By debug, I saw that select() return every time the socket that make the connection with the client is ready to receive data.
about the send() functin code in the client thread, here is the code:
while(TRUE)
{
::PeekMessage(&threadMsg,NULL, WM_USER, WM_APP, PM_REMOVE);
if(threadMsg.message == WM_SEND_MSG)
{
iRet = send(clientSocket, (const char*)threadMsg.wParam,
sizeof(threadMsg.wParam), 0);
if( iRet == SOCKET_ERROR )
{
AfxMessageBox("ERROR SOCKET SEND FROM CLIENT");
errorMsgHandler(data->mainHandler, WSAGetLastError());
closesocket(clientSocket);
return 0;
}
}
}//END WHILE (TRUE)
HELP ME PLEASE . . . .
ABO OSAMA
|
|
|
|
|
I downloaded the original Quake II game source code from:
ftp://ftp.idsoftware.com/idstuff/source/quake2.zip
which was released open-source by id software under the GNU public
license:
http://www.fsf.org/copyleft/gpl.html
The game was rewritten in C language. I'm trying to re-compile
it in VS.Net 2003 from ground-up.
When I open the VS.Net 2003, I chose "new project", then in Visual C++
project, I chose "Win 32 project", then selected "window application"
and "empty project".
However, I don't know what's next. I have tried to open the soluation
file in the original quake 2 source, and see what's inside. I was there
are six projects under the soluation. ctf, game, quake2, ref_gl, ref_soft.
The reason I want to try to re-compile it again from "ground-up" is because I
want to know how a big project is managed in VS.Net. Please, would anyone
please help me?
Thanks.
|
|
|
|
|
|
Thanks for your reply. I have both original version and
.Net version. When I say I want to re-compile it again
from ground, I mean not opening the soluation file, but
to build a new project, then copy the files to my newly-
created project.
Anyone?
|
|
|
|
|
Is there anyone that have source code to make interface like norton commander/total commander ?
Norton commander has two panels,drag & drop for both panels, and syncronization between them.
|
|
|
|
|
tom182 wrote:
Norton commander has two panels,drag & drop for both panels, and syncronization between them.
This sounds like a job for...a splitter window with two frames. See the many MSDN examples and here at CP.
"When I was born I was so surprised that I didn't talk for a year and a half." - Gracie Allen
|
|
|
|
|
Is there any way to display the actual characters in the debugger windows when using wchar_t characters and strings? Right now, I can only get it to display the unsigned short values.
Man Learns from History that he never learns from History
|
|
|
|
|
Select Tools | Options from the menu, and pick the Debug tab. Make sure 'Display unicode strings' is checked.
|
|
|
|
|
Thanks!!
Man Learns from History that he never learns from History
|
|
|
|
|
Hey all,
I asked this question two days ago but did not get an answer. Maybe the previous question was too vague or it just got buried too fast. So I will attempt to reword it more clearly with more infomation and hopefully I can get an answer.
I have an app that is designed to automatically fire off emails at a user specified time or time interval. What it does is start a seperate worker thread for each message. The thread will gather the information it needs, build the message, then attempt to send it.
I have a thread manager class that keeps track of all the message threads running. The first thread to get to the point where an internet connection is needed will enter a critical section, and all subsequent threads will have to wait. In the critical section I call InternetGetConnectedState() to see if the computer is already connected to the internet. If it is connected the thread will let the manager class know, and it will clear the critical section and let all the other threads continue. If it is not connected, I call InternetAttemptConnect() to invoke the dialup dialog. At this point all subsequent message threads are stuck waiting for the critical section. If the user presses the cancel button on the dialup dialog, the thread will inform the manager class that there is no connection and the thread will terminate. But the next thread will again repeat the process of attempting to make a connection. So if there are many threads waiting to send, and the user wants to cancel them all, they will have to hit the cancel button once for each thread.
What I want to do is have my main GUI thread popup a modeless dialog with a status panel and a cancel button on it. When the user presses that cancel button, I want to stop all the message threads, and remove the dialup dialog if it is present.
So my question is:
How can I programatically remove or cancel the dialup dialog that is created using the InternetAttemptConnect() function.
Any pointers or suggestions (even telling me if it possible or not) would be appreciated. I am sure I could call TerminateThread() on the message thread that is hung waiting for the dialup dialog, but I do not want to do that as it will make my app unstable.
Sonork 100.11743 Chicken Little
"You're obviously a superstar." - Christian Graus about me - 12 Feb '03
Within you lies the power for good - Use it!
|
|
|
|
|
Don't know how to do that. can't even get the dialog to open on my systems. I expect because i have a lan or wireless connection on all my systems. I could guess wildly that you might be able to use FindWindow() and then send it a message like maybe WM_CLOSE ??
"No matter where you go, there your are." - Buckaroo Banzai
-pete
|
|
|
|