Page 1 of 1

How do I remove the X close on the top of a dialog box?

Posted: Mon Nov 17, 2008 7:27 pm
by Mike Buckler
I would like to remove the X close button on the top right corner of a dialog box.
Any help would be greatly appreciated.
Thanks In Advance Mike.

Posted: Mon Nov 17, 2008 7:58 pm
by jcaro
Mike:

With your resource editor ( I used PellesC )

Change the your dialog properties of system menu to NOT

That is all.

Posted: Mon Nov 17, 2008 8:08 pm
by Daniel Garcia-Gil
DEFINE dialog oDlg STYLE WS_CAPTION

Posted: Mon Nov 17, 2008 11:55 pm
by fafi
DEFINE DIALOG oDlg STYLE nOR( WS_POPUP, WS_VISIBLE )

blank DIALOG without border

Posted: Tue Nov 18, 2008 12:29 am
by Mike Buckler
Is there a way to keep a menu icon and not have the X close window in the top right corner?
Thanks Mike.

Posted: Tue Nov 18, 2008 11:30 am
by RAMESHBABU
Hello Mike,

This is the working code :

Code: Select all

#define MF_BYPOSITION 1024 // 0x0400
#define MF_DISABLED   2    
*******************************************************************************
*** FUNCTION DisableX(oWin, lDisable) to Disable X button of Window/Dialog  ***
*******************************************************************************

FUNCTION DisableX(oWin, lDisable)

LOCAL hMenu  := 0
LOCAL nCount := 0
    
IF lDisable
   hMenu  = GetSystemMenu(oWin:hWnd, .F.)
   nCount = GetMItemCount(hMenu)
   RemoveMenu(hMenu, nCount - 1, nOR( MF_BYPOSITION, MF_DISABLED) )
   RemoveMenu(hMenu, nCount - 2, nOR( MF_BYPOSITION, MF_DISABLED) )
   DrawMenuBar( oWin:hWnd )
ELSE
   GetSystemMenu( oWin:hWnd, .T. )
   DrawMenuBar( oWin:hWnd )
ENDIF

RETURN nil
Reagrds,

- Ramesh Babu P

Posted: Tue Nov 18, 2008 4:01 pm
by Mike Buckler
How does the dialog style have to be set to have diasblex work, The dialog I am testing on is from pelles c resource and I have tried with system true and false.
Thanks Mike

Posted: Tue Nov 18, 2008 4:39 pm
by RAMESHBABU
Hello Mike,

This code works with the dialogs created from Borland Resource Workshop perfectly. I am very sorry, I dont know anything about pelles c resources.

I wonder out of my academic interest, either Borland or Pelles they are expected to normally respect the windows standards and accordingly they design such resource management tools. I dont' know why PELLES C is different from Borland! or vice-versa.

Regards,

- Ramesh

Posted: Tue Nov 18, 2008 5:59 pm
by Mike Buckler
Thanks Ramesh
MIke

Hide X ( exit ) in Dialog

Posted: Sat Nov 22, 2008 7:34 pm
by ukoenig
Hello Ramesh,

I tested Your solution to hide the X ( exit ) in dialog.
It works fine with MDI. If I use it in a stand-alone Dialog,
I cannot move the dialog anymore.
Do you know a solution, to keep the dialog moving ?

Regards
Uwe :lol:

Posted: Sun Nov 23, 2008 12:32 pm
by Horizon
Hi Uwe,

You can use

Code: Select all

STYLE nOr( WS_OVERLAPPEDWINDOW )

Disable X Exit-Button

Posted: Mon Nov 24, 2008 12:13 pm
by ukoenig
Hello,

The useful function from RAMESHBABU, i use in my MDI-app's to control
the button-status ( enable or disable ) of the office-bar and it works fine.
But if I use a MODAL Dialog, I cannot move the dialog.
Is it possible, to get it working with MODAL dialog as well ?

The solution from HORIZON I tested but didn't help

Code: Select all

#define MF_BYPOSITION 1024 // 0x0400 
#define MF_DISABLED   2
...
...
DEFINE DIALOG oDlg RESOURCE "Tools" OF oWnd TRANSPARENT ;
TITLE  "Selection" FONT oProgFont
...
...
...  It works !!

ACTIVATE DIALOG oDlg CENTERED NOWAIT ;
ON INIT ( oDlg:Move( 30 , 50, oDlg:nWidth, oDlg:nHeight, .f. ), ;
DisableX(oDlg, .T.)  ) ) 

RETURN NIL
    
******************************************************* 
*** FUNCTION DisableX(oWin, lDisable) to Disable X button of Window/Dialog  *** 
******************************************************* 

FUNCTION DisableX(oWin, lDisable) 

LOCAL hMenu  := 0 
LOCAL nCount := 0 
    
IF lDisable 
   hMenu  = GetSystemMenu(oWin:hWnd, .F.) 
   nCount = GetMItemCount(hMenu) 
   RemoveMenu(hMenu, nCount - 1, nOR( MF_BYPOSITION, MF_DISABLED) ) 
   RemoveMenu(hMenu, nCount - 2, nOR( MF_BYPOSITION, MF_DISABLED) ) 
   DrawMenuBar( oWin:hWnd ) 
ELSE 
   GetSystemMenu( oWin:hWnd, .T. ) 
   DrawMenuBar( oWin:hWnd ) 
ENDIF 

RETURN nil 


Posted: Mon Nov 24, 2008 2:16 pm
by RAMESHBABU
Hello Mr.Uwe

This is what you are looking for:

Code: Select all


*******************************************************************************
*** FUNCTION DisableX(oWin, lDisable) to Disable X button of Window/Dialog  ***
*******************************************************************************

FUNCTION DisableX(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 - 1, nOR( MF_BYPOSITION, MF_DISABLED) )
      RemoveMenu(hMenu, nCount - 2, nOR( MF_BYPOSITION, MF_DISABLED) )
   ENDIF	  
   DrawMenuBar( oWin:hWnd )
ELSE
   GetSystemMenu( oWin:hWnd, .T. )
   DrawMenuBar( oWin:hWnd )
ENDIF

RETURN nil
Regards,

- Ramesh Babu P

Disable X ( Exit ) in Dialog.

Posted: Mon Nov 24, 2008 2:59 pm
by ukoenig
Hello RAMESHBABU,

thank You very much for Your help.
It works PERFECT now.

Regards
Uwe :lol:

Posted: Mon Nov 24, 2008 3:16 pm
by RAMESHBABU
Hello Mr.Uwe,

You are most welcome.

Regards,

- Ramesh Babu P