VS2015 MFC 修改应用程窗口大小 标题

******窗口创建之前修改MFC窗口大小*************************

一 创建单文档程序,CMainFrame::PreCreateWindow(CREATESTRUCT&cs)。

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
    if( !CFrameWnd::PreCreateWindow(cs) )
        return FALSE;
    // TODO: 在此处通过修改
    //  CREATESTRUCT cs 来修改窗口类或样式
    cs.cx = 800;
    cs.cy = 600;
    cs.lpszName = L"测试属性页表单程序"; //单这个还不能改变它的标题,因为单文档默认模式为:WS_OVERLAPPEDWINDOW|FWS_ADDTOTITLE的联合
    //FWS_ADDTOTITLE 它是MFC类型的样式,用来将文档的标题添加到应用程序的标题上
    //它的作用就是用来通知程序把文档标题作为应用程序的标题

    //对FWS_ADDTOTITLE取反(~) 再进行与(&)操作即可去除这个样式
    cs.style &= ~FWS_ADDTOTITLE;

    //或者直接cs.style=OVERLAPPEDWINDOW; 效果等同
    return TRUE;
}

在PreCreateWindow()设计一个窗体类,然后注册,cs的lpClassName=新注册的窗口类的类名,但是这样只是修改了框架窗口的,如果要改变光标,背景之类的,则需要修改覆盖在CMainFrame上的View类。

由于新创建的类已经注册了,因此,在View类的PreCrateWindow中,只需要把类的名字传递给View::PreCreateWindow(CREATESTRUCT &cs)中的cs。设置cs。lpClassName为注册过的窗口类。

新注册的窗口类需要hInstance实例可以通过:AfxGetInstanceHandle(); 缺省的窗口过程函数 DefWindowProc。如果要修改应用程序图标,通过这个方法,显得大材小用,因此使用AfxRegisterWndClass()

******创建之后修改*************************************************************

//用于修改一个指定窗口的属性
LONG SetWindowLong( HWND hWnd //窗口句柄
                      ,int nIndex            //GWL_STYLE
                      ,LONG dwNewLong //新的窗口类型
                      ) 
在OnCreate()函数中进行修改
SetWindowLong(m_hWnd, GWL_STYLE, GetWindowLong(m_hWnd, GWL_STYLE)&~WS_MAXIMIZEBOX);//取消最大化框

在View类中增加OnCreate
SetClassLong(m_hWnd,GCL_HBRBACKGROUND,(LONG)GetStockObject(BLACK_BRUSH)); //修改背景为黑色 这个函数用于在窗口创建之后,在程序中改变图标
SetClassLong(m_hWnd, GCL_HCURSOR, (LONG)LoadCursor(NULL,IDC_HELP)); //修改光标带问号

猜你喜欢

转载自www.cnblogs.com/zhou8744/p/10604210.html
今日推荐