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)); //修改光標帶問號

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM