After HOURS and HOURS of trying to fix this, I think I have finally come up with a solution for c++ .NET

! The issue you will notice with my code is that it has been placed in the VisibleChanged and sizechanged functions, instead of the Load function. this is because when visibility is changed on the form, for some reason the buttons were reset. I solved this obviously by activating the remove button function, whenever the form is becoming visible, or sized.
The code is as follows:
1. At the beginning of the file, include this header file:
#include "windows.h"
2. Add an event handler for when the visiblility and size is changed.
3. Add a function with the following code:
if(this->Visible)
{
HMENU test = GetSystemMenu((HWND)this->Handle.ToInt32(), false);
EnableMenuItem(test, SC_CLOSE, MF_GRAYED | MF_BYCOMMAND);
//the values you pass into RemoveMenu are from the file WinUser.h
}
4. Add to event handlers a call to the function above!
5. Thats It!
If anyone can see any improvement to the code, then please go ahead and post it! I added the call to the function, so that the close button would remain disabled, even when the MDI child is maximized.