You can put any code into a DLL. It is even simpler and better when the DLL code did not use MFC or ATL (it can then be used by any application).
I'm not sure if I understand your second question. Do you mean to create a DLL with functions used by multiple applications where each application uses only a subset of exported functions?
If so, the answer is yes.
To list the symbols exported by a DLL you can use the DUMPBIN[^] command line tool (located in the VC\bin directory) with the /EXPORTS option.
I am doing Interprocess communication between a C console app and C++ Windows app
The C console app is the parent process
I have the Window handle (main window MainFrame) of the C++ child app I use SendNotifymessage
to tell the child app that console app has data for it in shared storage
The First time I do this all is well
The Second time around I have created a modless dialog box with a Crichedit control
it is at this time where I get a asseration from the SendNotifyMessage in the console C app
The assetration is dlgcore.cpp
at the parent GetSafeHWnd
But the Window Handle is a Main or Mainframe Window
I did a FindWindow api call
To get the handle As the parent is a C console app and it did work once before I created the modless dialog box in the child process
No, you just need to find its handle by one of the enumerate functions, or get the child to pass it back in some way. A handle is just a pointer used to identify a Window so you can send messages to it. To be honest, I am not exactly clear about what you are trying to do beyond the basic SendMessage function.
I want to call an external application (created by me) using ShellExecute or CreateProcess. It is just an update application for the main app. The problem is, what ever I tried I failed to get window focus back to my main app when the process (update app) is terminated. I created a simple MFC/SDI app that calls window's notepad under "C:\windows\notepad.exe" which suffers from the same problem, just to show you what I mean. I need the parent window -which is the main app- to be disabled (like a modal dialog box behaviour) until the new app -update application- will finish its job.
PS:If I do not disable the main window with EnableWindow(FALSE) I have paint corruption with windows XP and back when I move the update application.