关闭程序的问题

gaboo 2000-07-25 05:19:00
怎样使程序右上角的“X”,不可是用,既成为灰色.
...全文
206 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
dandycheung 2000-08-17
  • 打赏
  • 举报
回复
dzl 回答的最好,在类的风格里加入 CS_NOCLOSE 即可,以上显示的 ¦ 即为 Shift+\,如果窗口类已经存在,可以试一下 SetClassLong() 这个 API。
shines77 2000-08-15
  • 打赏
  • 举报
回复
此方法是删除了系统菜单 “关闭 ALT + F4”项和分割符.
shines77 2000-08-15
  • 打赏
  • 举报
回复
这是VB的代码,如果看不懂,请给我email: wokss@yeah.net :

Private Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long
Private Declare Function GetMenuItemCount Lib "user32" (ByVal hMenu As Long) As Long
Private Declare Function DrawMenuBar Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
Const MF_BYPOSITION = &H400&
Const MF_REMOVE = &H1000&
Private Sub Form_Load()
Dim hSysMenu As Long, nCnt As Long
' Get handle to our form's system menu
' (Restore, Maximize, Move, close etc.)
hSysMenu = GetSystemMenu(Me.hwnd, False)

If hSysMenu Then
' Get System menu's menu count
nCnt = GetMenuItemCount(hSysMenu)
If nCnt Then
' Menu count is based on 0 (0, 1, 2, 3...)
RemoveMenu hSysMenu, nCnt - 1, MF_BYPOSITION Or MF_REMOVE
RemoveMenu hSysMenu, nCnt - 2, MF_BYPOSITION Or MF_REMOVE ' Remove the seperator
DrawMenuBar Me.hwnd
' Force caption bar's refresh. Disabling X button
Me.Caption = "Try to close me!"
End If
End If
End Sub
bird2000 2000-08-15
  • 打赏
  • 举报
回复
有一种方法:删除系统菜单的“关闭 ALT+F4”项即可。
lingo 2000-08-14
  • 打赏
  • 举报
回复
我曾经运行时去掉最大化,最小化框,那个X应没什么问题。不知对你有没有用?
dzl 2000-07-25
  • 打赏
  • 举报
回复
为什么
wc.style = CS_HREDRAW ¦ CS_VREDRAW ¦CS_NOCLOSE
变成了
wc.style = CS_HREDRAW ¦ CS_VREDRAW ¦CS_NOCLOSE

??????
dzl 2000-07-25
  • 打赏
  • 举报
回复

在SDK下的方法:注册窗口类时,可使CLOSE按键变灰

WNDCLASS wc;
... ...
wc.style = CS_HREDRAW ¦ CS_VREDRAW ¦CS_NOCLOSE;
... ...


在MFC下的方法:
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CFrameWnd::PreCreateWindow(cs) )
return FALSE;
cs.Style&=~WS_SYSMENU; //加入本行
return TRUE;
}
gaboo 2000-07-25
  • 打赏
  • 举报
回复
还有其它的方法吗?????请多指教
sean 2000-07-25
  • 打赏
  • 举报
回复
在对话框属性里的stytle中的[ ]system Menu 选项去掉,则没有X
你试试!
gaboo 2000-07-25
  • 打赏
  • 举报
回复
怎样使程序右上角的“X”不可用,既成为灰色.

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧