VC實(shí)現(xiàn)讓關(guān)閉按鈕成灰色不可用的方法
對(duì)于有些情況下運(yùn)行的VC項(xiàng)目程序來(lái)說(shuō),會(huì)有禁止用戶(hù)通過(guò)標(biāo)題欄上的關(guān)閉按鈕關(guān)閉窗口的情況,你會(huì)發(fā)現(xiàn),這時(shí)候程序的關(guān)閉按鈕變成灰色不可用,從任務(wù)欄處也無(wú)法關(guān)閉窗口,菜單同樣是灰色的,很好的禁止了窗口關(guān)閉功能,如果想關(guān)閉,可以按鍵盤(pán)上的快捷鍵“ALT+F4”,或者通過(guò)任務(wù)管理器結(jié)束任務(wù)。下面就來(lái)說(shuō)明一下這個(gè)功能的核心代碼文件。
禁用關(guān)閉按鈕的具體功能代碼如下:
#include "stdafx.h"
#include "Test.h"
#include "MainFrm.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// CMainFrame
IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
ON_WM_CREATE()
END_MESSAGE_MAP()
static UINT indicators[] =
{
ID_SEPARATOR, // 狀態(tài)行指示器
ID_INDICATOR_CAPS,
ID_INDICATOR_NUM,
ID_INDICATOR_SCRL,
};
// CMainFrame 構(gòu)造/銷(xiāo)毀
CMainFrame::CMainFrame()
{
// TODO:在此添加成員初始化代碼
}
CMainFrame::~CMainFrame()
{
}
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
{
TRACE0("未能創(chuàng)建工具欄\n");
return -1; // 未能創(chuàng)建
}
if (!m_wndStatusBar.Create(this) ||
!m_wndStatusBar.SetIndicators(indicators,
sizeof(indicators)/sizeof(UINT)))
{
TRACE0("未能創(chuàng)建狀態(tài)欄\n");
return -1; // 未能創(chuàng)建
}
// TODO: 如果不需要工具欄可???,則刪除這三行
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndToolBar);
//取得系統(tǒng)菜單
CMenu *pMenu=GetSystemMenu(FALSE);
//取得系統(tǒng)菜單數(shù)量
int Count=pMenu->GetMenuItemCount();
//取得關(guān)閉菜單的ID
UINT ID=pMenu->GetMenuItemID(Count-1);
//禁止關(guān)閉菜單
pMenu->EnableMenuItem(ID,MF_GRAYED);
return 0;
}
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CFrameWnd::PreCreateWindow(cs) )
return FALSE;
// TODO: 在此處通過(guò)修改 CREATESTRUCT cs 來(lái)修改窗口類(lèi)或
// 樣式
return TRUE;
}
// CMainFrame 診斷
#ifdef _DEBUG
void CMainFrame::AssertValid() const
{
CFrameWnd::AssertValid();
}
void CMainFrame::Dump(CDumpContext& dc) const
{
CFrameWnd::Dump(dc);
}
#endif //_DEBUG
// CMainFrame 消息處理程序
- Delphi創(chuàng)建開(kāi)機(jī)啟動(dòng)項(xiàng)的方法示例
- 開(kāi)機(jī)啟動(dòng)項(xiàng)清理代碼bat版
- android開(kāi)發(fā)教程之開(kāi)機(jī)啟動(dòng)服務(wù)service示例
- C#代碼設(shè)置開(kāi)機(jī)啟動(dòng)示例
- c# 開(kāi)機(jī)啟動(dòng)項(xiàng)的小例子
- 用批處理列出所有開(kāi)機(jī)啟動(dòng)項(xiàng)的命令
- VC6.0常用快捷鍵大全
- VC動(dòng)態(tài)生成菜單項(xiàng)的實(shí)現(xiàn)方法
- VC++操作SQLite簡(jiǎn)單實(shí)例
- VC++實(shí)現(xiàn)程序開(kāi)機(jī)啟動(dòng)運(yùn)行的方法
相關(guān)文章
C/C++實(shí)現(xiàn)獲取系統(tǒng)時(shí)間的示例代碼
C 標(biāo)準(zhǔn)庫(kù)提供了 time() 函數(shù)與 localtime() 函數(shù)可以獲取到當(dāng)前系統(tǒng)的日歷時(shí)間。本文將通過(guò)一些簡(jiǎn)單的示例為大家講講C++獲取系統(tǒng)時(shí)間的具體方法,需要的可以參考一下2022-12-12
QT使用udp實(shí)現(xiàn)發(fā)送與接收?qǐng)D片
這篇文章主要為大家詳細(xì)介紹了QT如何使用udp協(xié)議實(shí)現(xiàn)發(fā)送與接收?qǐng)D片功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-12-12
C++數(shù)據(jù)結(jié)構(gòu)深入探究棧與隊(duì)列
棧和隊(duì)列,嚴(yán)格意義上來(lái)說(shuō),也屬于線(xiàn)性表,因?yàn)樗鼈円捕加糜诖鎯?chǔ)邏輯關(guān)系為 "一對(duì)一" 的數(shù)據(jù),但由于它們比較特殊,本章講解分別用隊(duì)列實(shí)現(xiàn)棧與用棧實(shí)現(xiàn)隊(duì)列2022-05-05
C++實(shí)現(xiàn)簡(jiǎn)易萬(wàn)年歷
這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)簡(jiǎn)易萬(wàn)年歷,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-10-10
ubuntu系統(tǒng)vscodeC++編譯環(huán)境配置與使用方式
這篇文章主要介紹了ubuntu系統(tǒng)vscodeC++編譯環(huán)境配置與使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12
C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)經(jīng)典10大排序算法刨析
這篇文章主要介紹了C語(yǔ)言中常用的10種排序算法及代碼實(shí)現(xiàn),開(kāi)發(fā)中排序的應(yīng)用需要熟練的掌握,因?yàn)槭腔A(chǔ)內(nèi)容,那C語(yǔ)言有哪些排序算法呢?本文小編就來(lái)詳細(xì)說(shuō)說(shuō),需要的朋友可以參考一下2022-02-02

