We help IT Professionals succeed at work.

Check out this week's podcast, "Dairy Farms to Databases: Community's Hand in Technology"Listen Now

x

CFromview-disabling the close window

mallow
mallow asked
on
284 Views
Last Modified: 2013-11-20
hello,
   i have a CFormView that my application automatically draw on it's client screen at the start of the application, this is because i specified in appwizard that i want a database view w/file support, so a form is automatically created for me, i want to disable the close window of this form, i want to disable the 'X' box at the upper right hand of the form, so that it cannot be clicked by the user at run time, and also, i want the form to be maximized when that application draws it at the start of the application, how can i do these?  please help, thanks, mallow
Comment
Watch Question

Commented:
This one is on us!
(Get your first solution completely free - no credit card required)
UNLOCK SOLUTION

Author

Commented:
hello, i tried the code above, i was successful in maximizing the window and graying the 'X' of the window, but it did not disable the 'close window' the 'X' can still be clicked and the it closed the window, do you know what is wrong?  please help

Commented:
Wow! I checked it out and if the window is not maximixed, clicking the 'X' does nothing (as it should), but when maximized, it works as usual. By running Spy on the application, I discovered that when a child window is maximized the minimize, maximize and close buttons are considered bitmaps on the mainframe's window, and therefore not related to the child system menu. The roundabout that worked for me was to add a handler for OnSysCommand and having it ignore the SC_CLOSE command. The code is as follows:

void CChildFrame::OnSysCommand(UINT nID, LPARAM lParam)
{
// TODO: Add your message handler code here and/or call default
// THE FOLLOWING LINE IS WHAT I ADDED
      if (nID != SC_CLOSE )
//
            CMDIChildWnd::OnSysCommand(nID, lParam);
}

Adding this handler is a trifle tricky so I'll give you the full instructions.
* Open ClassWizard in the CChildFrame class.
* Pick the "Class Info" tab and in the "Message filter" drop-down list - choose "Window".
* Go back to the "Message maps" and in the "Messages" list box choose WM_SYSCOMMAND.

Good luck

Author

Commented:
it worked already, thanks!
Unlock the solution to this question.
Join our community and discover your potential

Experts Exchange is the only place where you can interact directly with leading experts in the technology field. Become a member today and access the collective knowledge of thousands of technology experts.

*This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

OR

Please enter a first name

Please enter a last name

8+ characters (letters, numbers, and a symbol)

By clicking, you agree to the Terms of Use and Privacy Policy.