Dialog data exchange (DDX) is an easy way to initialize the
controls in your dialog box and to gather data input by the
user. Dialog data validation (DDV) is an easy way to
validate data entry in a dialog box.
CRITICAL_SECTION :- CRITICAL_SECTION (CS) objects are initialized and deleted but do not have handles and are not shared by other processes. A variable should be declared to be of type CRITICAL_SECTION. Threads enter and leave a CS, and only one thread at a time can be in a specific CS. EnterCriticalSection blocks a thread if another thread is in the section. The waiting thread unblocks when another thread executes LeaveCriticalSection. If a thread already owns the CS, it can enter again without blocking; that is, CRITICAL_SECTIONs are recursive. CRITICAL_SECTIONs have the advantage of not being kernel objects and are maintained in user space. This usually, but not always, provides performance improvements.
Mutex: - mutexes can be named and have handles, they can also be used for interprocess synchronization between threads in separate processes. Mutex objects are similar to CSs, but, in addition to being process-sharable, mutexes allow time-out values and become signaled when abandoned by a terminating process.A thread gains mutex ownership (or locks the mutex) by waiting on the mutex handle (WaitForSingleObject or WaitForMultipleObjects), and it releases ownership with ReleaseMutex.
Semaphore :- Semaphores maintain a count, and the semaphore object is signaled when the count is greater than 0. The semaphore object is unsignaled when the count is 0.
Event :- Events are used to signal other threads that some event, such as a message being available, has occurred.
CwinApp -> CDocument -> CFrameWnd -> CView
Modal dialog is one which will not allow u to access any thing until this dialog is active.
And reverse of this ur modeless dialog.
When we access Menu items such as Save as, Open, attach file, in any application, we can not able to access any part of the application execpt the active dialog.
When we open add remove program for uninstalling any application, u will get a Uninstallation dialog which will be modeles. bcz still u were able to access add remove programs. (this is probably in Vista. And in XP its modal dialog which they have used)
CWinApp is an application object provides member functions
for initializing your application (and each instance of it)
and for running the application.
Each application that uses the Microsoft Foundation classes
can only contain one object derived from CWinApp. This
object is constructed when other C++ global objects are
constructed and is already available when Windows calls the
WinMain function, which is supplied by the Microsoft
Foundation Class Library. Declare your derived CWinApp
object at the global level.
When you derive an application class from CWinApp, override
the InitInstance member function to create your
application's main window object.
In addition to the CWinApp member functions, the Microsoft
Foundation Class Library provides the following global
functions to access your CWinApp object and other global
► AfxGetApp Obtains a pointer to the CWinApp object.
► AfxGetInstanceHandle Obtains a handle to the current
► AfxGetResourceHandle Obtains a handle to the
► AfxGetAppName Obtains a pointer to a string containing
the application's name. Alternately, if you have a pointer
to the CWinApp object, use m_pszExeName to get the
First, need to find the handle of the Control by using some API like EnumWindows and enumerrating all windows and checking for the text of the window by GetWindowTExt.
Once, handle of the target control has been identified, SendMessage can be used to send appropriate message to the control. like WM_SETTEXT can be sent to change text of window, etc...
Instead of SendMessage API i will use the SendMessageTimeout
API to solve the system hang or You can use PostMessage API instead.
There many ways to find memory leaks, One of the ways is by
using MFC class. And another way is using Purify tools...
CMemorState is a MFC class by which we can find the memory
leaks. Below is a sample code to find the same.
CMemoryState oldState, newState, diffState;
int* a = new int;