how to disable minimize and maximize buttons on main window
how to disable minimize and maximize buttons on main window
Hello all,
Can you send me a sample showing how to disable minimize and maximize buttons on main window MDI
Thank you
Can you send me a sample showing how to disable minimize and maximize buttons on main window MDI
Thank you
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Code: Select all
#include "FiveWin.ch"
function Main()
local oWnd
DEFINE WINDOW oWnd STYLE nOr( WS_CAPTION, WS_VISIBLE, WS_SYSMENU ) MDI
ACTIVATE WINDOW oWnd
return nil
Re: how to disable minimize and maximize buttons on main window
Hi,
What would be the command to remove only the Maximize/Restore button from a MDI child window. ie I need the minimize and close buttons to be there on the windows.
Regards
Anser
What would be the command to remove only the Maximize/Restore button from a MDI child window. ie I need the minimize and close buttons to be there on the windows.
Regards
Anser
- RAMESHBABU
- Posts: 591
- Joined: Fri Oct 21, 2005 5:54 am
- Location: Secunderabad (T.S), India
Re: how to disable minimize and maximize buttons on main window
Hi Anser
Here it is
Regards,
- Ramesh Babu P
Here it is
Code: Select all
#include "FiveWin.ch"
#define MF_BYPOSITION 1024 // 0x0400
#define MF_DISABLED 2
function Main()
local oWnd
DEFINE WINDOW oWnd FROM 1, 1 TO 20, 70 STYLE nOR(WS_POPUP, WS_VISIBLE, WS_CAPTION, WS_SYSMENU, WS_THICKFRAME,WS_MINIMIZEBOX) MDI
ACTIVATE WINDOW oWnd ON INIT RemoveMItems(oWnd, .T.)
return nil
***********
FUNCTION RemoveMItems(oWin, lDisable)
LOCAL hMenu := 0
LOCAL nCount := 0
IF lDisable
hMenu = GetSystemMenu(oWin:hWnd, .F.)
nCount = GetMItemCount(hMenu)
IF oWin:ClassName() = "TDIALOG"
RemoveMenu(hMenu, 1, nOR( MF_BYPOSITION, MF_DISABLED) )
ELSE
RemoveMenu(hMenu, nCount - 3, nOR( MF_BYPOSITION, MF_DISABLED) )
RemoveMenu(hMenu, nCount - 7, nOR( MF_BYPOSITION, MF_DISABLED) )
ENDIF
DrawMenuBar( oWin:hWnd )
ELSE
GetSystemMenu( oWin:hWnd, .T. )
DrawMenuBar( oWin:hWnd )
ENDIF
RETURN nil
- Ramesh Babu P
Re: how to disable minimize and maximize buttons on main window
Dear Ramesh,
Thank you for the code. Your sample code is working fine on the MDI window, unfortunately when I try it on the MDI CHILD window of my real app, only the Close button is getting disabled
1. If I create the MDI child window without applying any style (Default one) only the Close button is disabled and the other controls ie Minimize & Maximaize are active
2. If I create the MDI child window with the style specified on your code ie STYLE nOR(WS_POPUP, WS_VISIBLE, WS_CAPTION, WS_SYSMENU, WS_THICKFRAME,WS_MINIMIZEBOX), then I am getting the following error.
The error seems to be from the Class SAY.
Am I missing something ?
My requirement is to either remove OR disable the Maximize/Restore control on the MDI CHILD window. My first preference is to remove the Maximize/Restore control
Thanks in advance.
Regards
Anser
Thank you for the code. Your sample code is working fine on the MDI window, unfortunately when I try it on the MDI CHILD window of my real app, only the Close button is getting disabled
1. If I create the MDI child window without applying any style (Default one) only the Close button is disabled and the other controls ie Minimize & Maximaize are active
Code: Select all
DEFINE WINDOW oWnd MDICHILD OF WndMain() FROM 0.5,2 to 27.5,47 TITLE "Quick Search" ;
ICON oAppIcon COLOR oApp:nTextClr, oApp:nBkgClr
Code: Select all
DEFINE WINDOW oWnd MDICHILD OF WndMain() FROM 0.5,2 to 27.5,47 TITLE "Quick Search" ;
ICON oAppIcon COLOR oApp:nTextClr, oApp:nBkgClr ;
STYLE nOR(WS_POPUP, WS_VISIBLE, WS_CAPTION, WS_SYSMENU, WS_THICKFRAME,WS_MINIMIZEBOX)
Code: Select all
Called from: source\rtl\tobject.prg => TMDICHILD:ERROR(172)
Called from: source\rtl\tobject.prg => TMDICHILD:MSGNOTFOUND(205)
Called from: source\rtl\tobject.prg => TMDICHILD:DEFCONTROL(0)
Called from: .\source\classes\SAY.PRG => TSAY:NEW(145)
Called from: .\CStock.PRG => QUICKSEARCH(509)
Am I missing something ?
My requirement is to either remove OR disable the Maximize/Restore control on the MDI CHILD window. My first preference is to remove the Maximize/Restore control
Thanks in advance.
Regards
Anser
- James Bott
- Posts: 4654
- Joined: Fri Nov 18, 2005 4:52 pm
- Location: San Diego, California, USA
- Contact:
Re: how to disable minimize and maximize buttons on main window
Anser,
>My requirement is to either remove OR disable the Maximize/Restore control on the MDI CHILD window. My first preference is to remove the Maximize/Restore control
This sounds like a non-modal dialog. Have you consider that?
Regards,
James
>My requirement is to either remove OR disable the Maximize/Restore control on the MDI CHILD window. My first preference is to remove the Maximize/Restore control
This sounds like a non-modal dialog. Have you consider that?
Regards,
James
Re: how to disable minimize and maximize buttons on main window
Hi Mr.James,
The following code solved my problem. Applying the following style, disabled the Maximize/Restore button on a MDICHILD Window.
If this also failed then I would have opted a Non Modal Dialog.
Regards
Anser
The following code solved my problem. Applying the following style, disabled the Maximize/Restore button on a MDICHILD Window.
If this also failed then I would have opted a Non Modal Dialog.
Code: Select all
DEFINE WINDOW oWnd MDICHILD of WndMain() ;
STYLE nOr( WS_CAPTION, WS_VISIBLE, WS_SYSMENU, WS_MINIMIZEBOX )
ACTIVATE WINDOW oWnd
Anser
- nageswaragunupudi
- Posts: 8017
- Joined: Sun Nov 19, 2006 5:22 am
- Location: India
- Contact:
Re: how to disable minimize and maximize buttons on main window
Where is the need to adopt such complex approach? Cant we simply disable these buttons while creating the window ( normal, MDI, MDICHILD ) by using the syntax already provided by FWH?
CREATE WINDOW ....... NOMINIMIZE NOMAXIMIZE
This does the job. Or am I missing something?
CREATE WINDOW ....... NOMINIMIZE NOMAXIMIZE
This does the job. Or am I missing something?
Regards
G. N. Rao.
Hyderabad, India
G. N. Rao.
Hyderabad, India
Re: how to disable minimize and maximize buttons on main window
Dear Mr.Rao,
Your Quote
According to me the disadvantage of using aMinMaxInfo is that it requires me to calculate the height and width in pixels. In future every time I need to alter the window size, I will have to recalculate the height and width again. Whereas using the STYLE, I need not bother about it. I don't use resource editors.
Regards
Anser
Your Quote
I found that, using the single line code using the STYLE is serving the expected behavior.It is true that we can disable maximize or minimize buttons by simply using clauses NOMAXIMIZE, NOMINIMIZE, etc. while creating the window. But still the user can resize the window by dragging the right bottom corner of the window.
aMinMaxInfo gives us the full control on resizing. ( We can also control with ON RESIZE clause, but that is not elegant )
Code: Select all
STYLE nOr( WS_CAPTION, WS_VISIBLE, WS_SYSMENU, WS_MINIMIZEBOX )
Regards
Anser