mfc标题栏 菜单 退出 关机 重启

隐藏标题栏

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;

// TODO: Add your specialized creation code here
//去掉标题栏及其他样式
SetWindowLong(this->m_hWnd,GWL_STYLE,0);
//去掉边框及其他样式
/// SetWindowLong(this->m_hWnd,GWL_EXSTYLE,0);

return 0;
}

隐藏菜单

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CFrameWnd::PreCreateWindow(cs) )
return FALSE;
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
cs.hMenu = NULL;//即 菜单句柄赋值为空


return TRUE;
}

退出

每次自己写程序退出的函数时,总要找好长时间。这次搜集了一些,记录下来。不端更新下去

1、PostQuitMessage(0);//最常用
2、PostMessage(WM_QUIT,0,0);//最常用
3、 ::SendMessage(AfxGetMainWnd()->m_hWnd,WM_CLOSE,0,0);//最常用

::PostMessage(AfxGetMainWnd()->m_hWnd,WM_CLOSE,0,0);//最常用

4、 ExitProcess(0);//注意使用时先释放分配的内存,以免造成内存泄露

exit(0) ;//正常终止程序; exit(非0)非正常终止程序
5、向主窗口发送WM_CLOSE消息       
SendMessage(WM_CLOSE); 
6、如果要在其它类关闭应用程序,则 

AfxGetMainWnd->SendMessage(WM_CLOSE);

本文转自:http://blog.csdn.NET/usopp_dream/article/details/7947329

关机 重启

转自:http://blog.csdn.net/qq_18297675/article/details/51005370

1.提权

BOOL AdjustPrivilege()
{
    BOOL bRet = FALSE;
    TOKEN_PRIVILEGES tp = { 0 };//令牌权限结构
    HANDLE hToken = NULL;//令牌句柄

    do 
    {
        //打开当前进程令牌,并且获取它              //令牌权限修改和查询
        if(!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES|
            TOKEN_QUERY,&hToken))
            break;
        //获取关机注销重启的LUID(Locally Unique Identifier),局部唯一标识
        if (!LookupPrivilegeValue(NULL,SE_SHUTDOWN_NAME,&tp.Privileges[0].Luid))
            break;
        tp.PrivilegeCount = 1;//修改权限的个数
        tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;//激活SE_SHUTDOWN_NAME这个权限
        //提升权限//FALSE表示可以修改权限//把需要修改的权限传进来
        if(!AdjustTokenPrivileges(hToken,FALSE,&tp,0,(PTOKEN_PRIVILEGES)NULL,0))
            break;
        bRet = TRUE;
    } while (FALSE);
    if (hToken)
        CloseHandle(hToken);
    return bRet;
}

2.关机

AdjustPrivilege();

ExitWindowsEx(EWX_SHUTDOWN,0);

3.重启

AdjustPrivilege();

ExitWindowsEx(EWX_REBOOT, 0);

原文地址:https://www.cnblogs.com/smh2015/p/7473511.html