亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C > 正文

詳解VC++中的字體的設置方法

2020-02-24 14:27:34
字體:
來源:轉載
供稿:網友

我們都知道程序員花了很多時間在計算機上編寫代碼,其實這是非常耗時的,但是在操作界面上設置他們喜歡的字體和顏色將大大提高他們編程的舒適性,下面武林技術頻道小編將給大家帶來詳解VC++中的字體的設置方法,一起來看看吧!
窗口都有2個和字體有關的函數:
CWnd::GetFont()和SetFont(CFont*, BOOL);
1)CFont* pFont = m_static.GetFont();

2)LOGFONT LogFont;
pFont->GetLogFont(&LogFont);

3)對LogFont直接操縱修改里面的字體選項
?
//如LogFont.lfUnderline = 1;設置下劃線
?LogFont.lfHeight=30;?????? //字體大小設置
?strcpy(LogFont.lfFaceName, "楷體_GB2312");? //字體設置

4)pFont->Detach();
第四步的目的是將pFont里裝有的HFONT解除關聯,否則pFont無法調用緊接的Create函數。

5)pFont->CreateFontIndirect(&LogFont);
m_static.SetFont(pFont);

6)pFont->Detach();
必須再一次解除在pFont里裝載的HFONT,原因是第5步已經將HFONT賦給了m_static。pFont的任務已完成,不應該持有HFONT資源,它也不能去銷毀HFONT,因為m_static在使用這個HFONT,所以必須是Detach()來解除關聯。

VC++中字體顏色的改變
在OnCtlColor函數中如下代碼:

?

?HBRUSH CDlg_SignIn::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
?HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);
?// TODO:? Change any attributes of the DC here
?? if(nCtlColor == CTLCOLOR_STATIC)
?????? {
?????? if(pWnd->GetDlgCtrlID()== IDC_REGARD)
?????????? {
?????????????? pDC->SetTextColor(RGB(255,0,0));
?????????????? pDC->SetBkColor(RGB(251, 247, 200));//設置文本背景色
?????????????? pDC->SetBkMode(TRANSPARENT);//設置背景透明??????????????????
?????????? }
?????? }
?// TODO:? Return a different brush if the default is not desired
?return hbr;
}?


其他控件的宏定義為:
CTLCOLOR_BTN 按鈕控件
CTLCOLOR_DLG 對話框
CTLCOLOR_EDIT 編輯框
CTLCOLOR_LISTBOX 列表控件
CTLCOLOR_MSGBOX 消息控件
CTLCOLOR_SCROLLBAR 滾動條控件
CTLCOLOR_STATIC 靜態控件

VC中動態改變控件和對話框字體.
1
VC的對話框字體設置對所有控件都有效,你不能單獨地改變某個靜態文本的字體。對于你的問題,需要首先用CreateFont來建立一個字體對象,然后調用控件的SetFont,就可以了。

例子:
1、改靜態文體的ID,如:IDC_STATIC1
2、添加一個Edit控件,建立一個關聯的控件m_editControl。
3、在OnInitDialog中添加如下代碼:

?

?

?


CFont * f;
???? f = new CFont;
???? f->CreateFont(16, // nHeight
???? 0, // nWidth
???? 0, // nEscapement
???? 0, // nOrientation
???? FW_BOLD, // nWeight
???? TRUE, // bItalic
???? FALSE, // bUnderline
???? 0, // cStrikeOut
???? ANSI_CHARSET, // nCharSet
???? OUT_DEFAULT_PRECIS, // nOutPrecision
???? CLIP_DEFAULT_PRECIS, // nClipPrecision
???? DEFAULT_QUALITY, // nQuality
???? DEFAULT_PITCH | FF_SWISS, // nPitchAndFamily
???? _T("Arial")); // lpszFac???
???? GetDlgItem(IDC_STATIC1)->SetFont(f);
???? CWnd *cWnd = GetDlgItem(IDC_STATIC1);
???? cWnd->SetFont(&font);
???? cWnd->SetWindowTextW(L"設置需要的內容");


需要注意的是,這里我們使用的是CFont指針,而不是普通的CFont局部變量, 在非MFC程序,首先用CreateFont來建立一個字體句柄,然后再用SendMessage發給控件WM_SETFONT消息,將建立的字體句柄賦值過去,就可以了。?

?

2 但是整個對話框或窗口的字體的大小,使用對話框或窗口的SetFont()函數卻沒有任何的作用.可以在初始化時遍歷每個控件分別設置來處理,但這里說另一種使用回調函數的簡單方法:
:調用系統的API:::EnumChildWindows(). ,傳入回調函數和重新定義的字體.(第一個參數不用管啊,本來就有啊)

1)在文檔視圖結構中CMainFrame::OnCreate().中調用::EnumChildWindows(). 實現所有窗口和子窗口字體改變

2) 在對話框的OnInitDialog(). 中調用::EnumChildWindows(). 改變對話窗上的所有控件.
回調函數如下:

?

/ lParam is a pointer to CFont object
BOOL __stdcall SetChildFont(HWND hwnd, LPARAM lparam)
{
CFont *pFont = (CFont*)lparam;
CWnd *pWnd = CWnd::FromHandle(hwnd);
pWnd->SetFont(pFont);
return TRUE;
}


使用1:

?

?

?


BOOL CAboutDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
::EnumChildWindows(m_hWnd, ::SetChildFont, (LPARAM)g_Font.GetFont());
return TRUE;? // return TRUE unless you set the focus to a control
? // EXCEPTION: OCX Property Pages should return FALSE
}


使用2:

?

?

?


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("Failed to create toolbar/n");
?return -1;????? // fail to create
}
if (!m_wndStatusBar.Create(this) ||
!m_wndStatusBar.SetIndicators(indicators,
sizeof(indicators)/sizeof(UINT)))
{
?TRACE0("Failed to create status bar/n");
return -1;????? // fail to create
?}
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndToolBar);
::EnumChildWindows(m_hWnd, ::SetChildFont, (LPARAM)g_Font.GetFont());
return 0;
}
(很好用,不像mfc中的那個垃圾setfont(),設置了對話框的沒有一點反應!)


3 如何在mfc中實現,當系統的字體變大的時候,對話框上面的字體也相應的變大?

?

?

?


//IconFont
??? LOGFONT logFont;
??? int? size = sizeof(LOGFONT);
??? bool isGood = SystemParametersInfo(SPI_GETICONTITLELOGFONT,size,&logFont,0);
??? if(isGood == true)
{
?CFont * f;
f = new CFont;
const LOGFONT* pFont = new LOGFONT(logFont);
f->CreateFontIndirectW(pFont);
?//::EnumChildWindows(m_hWnd, ::SetChildFont, (LPARAM)f);
}
//other Font
NONCLIENTMETRICS ncm = new NONCLIENTMETRICS();???????????????
bool isGood = SystemParametersInfo(SPI_GETNONCLIENTMETRICS, sizeof(NONCLIENTMETRICS), ref ncm, 0);
if (isGood == true)
{
LOGFONT logFont2;
//logFont2=ncm.lfntCaptionFont);//CaptionFont
?//logFont2 =ncm.lfntSMCaptionFont;//CaptionFont_Small
//logFont2 = ncm.lfntMenuFont;//MenuFont
//logFont2 = ncm.lfntStatusFont;//StatusFont
?logFont2 = ncm.lfntMessageFont;//MessageFont
CFont * f;
?f = new CFont;
const LOGFONT* pFont = new LOGFONT(logFont2);
?f->CreateFontIndirectW(pFont);
?//::EnumChildWindows(m_hWnd, ::SetChildFont, (LPARAM)f);
?}

以上就是關于詳解VC++中的字體的設置方法,相信這篇文章對于大家的編程之路有著很大的幫助,建議你好好收藏。

?

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人有码在线播放| 亚洲欧美制服另类日韩| 国产精品高潮视频| 亚洲国产欧美久久| 午夜精品久久久久久久久久久久| 一区国产精品视频| 欧美老少做受xxxx高潮| 夜夜嗨av色综合久久久综合网| 久久国产精品久久久久久| 亚洲欧美一区二区三区情侣bbw| 欧美第一黄网免费网站| 国产mv久久久| 26uuu久久噜噜噜噜| 精品国产91乱高清在线观看| 久久久久久亚洲精品不卡| 欧美精品videos另类日本| 亚州av一区二区| 韩曰欧美视频免费观看| 亚洲美女在线观看| 日韩免费av片在线观看| 中文字幕日韩av| 日韩av免费在线| 久久久久久国产精品三级玉女聊斋| 亚洲国产精品视频在线观看| 欧美电影在线观看网站| 日韩在线视频线视频免费网站| 成人激情电影一区二区| 国产精品夜色7777狼人| 欧美性猛交xxxx黑人猛交| 亚洲国产精彩中文乱码av在线播放| 另类专区欧美制服同性| 最近中文字幕2019免费| 国产欧美精品va在线观看| 欧美日韩成人在线视频| 国产69精品99久久久久久宅男| 免费不卡欧美自拍视频| 大伊人狠狠躁夜夜躁av一区| 亚洲激情小视频| 欧美专区在线播放| 国产精品www| 欧美激情xxxx性bbbb| 国产一区av在线| 欧美丝袜一区二区| 久久久欧美一区二区| 欧美孕妇毛茸茸xxxx| 国产精品久久久久免费a∨大胸| 日韩免费av一区二区| 668精品在线视频| 国产成人福利视频| 成人精品在线视频| 欧美激情精品久久久久久| 欧美亚洲激情在线| 国产精品久久久久久久久久久久久久| 午夜精品久久久久久99热| 欧美日韩ab片| 久久久97精品| 久久久久久久久综合| 久久久精品日本| 国产丝袜视频一区| 免费91麻豆精品国产自产在线观看| 九九热在线精品视频| 精品国产一区二区三区四区在线观看| 国产97在线亚洲| 91国产美女视频| 久久久精品免费| 亚洲第一av网站| 欧美精品久久久久久久久| 欧美日韩激情美女| 在线视频欧美性高潮| 精品网站999www| 亚洲午夜女主播在线直播| 成人h猎奇视频网站| 欧美乱妇高清无乱码| 亚洲xxxx妇黄裸体| 日本伊人精品一区二区三区介绍| 国产日韩欧美在线观看| 色综合久久中文字幕综合网小说| 久久久久久久久久婷婷| 亚洲毛片在线看| 久久这里只有精品视频首页| 91精品国产自产在线老师啪| 国产精品美女呻吟| 成人国产亚洲精品a区天堂华泰| 国产成人精品在线播放| 久久亚洲影音av资源网| 成人信息集中地欧美| 欧美特级www| 777国产偷窥盗摄精品视频| 中文字幕日韩电影| 中文字幕亚洲综合| 国内精品视频久久| 狠狠躁夜夜躁人人爽超碰91| 性色av一区二区三区免费| 亚洲国产高清福利视频| 97香蕉久久夜色精品国产| 在线观看亚洲区| 亚洲天堂av高清| 国产日韩欧美成人| 久久精品91久久久久久再现| 日韩av最新在线| 日韩大片免费观看视频播放| 欧美另类精品xxxx孕妇| 欧洲午夜精品久久久| 91免费精品国偷自产在线| 欧美性xxxx极品hd满灌| 亚洲一区二区三区香蕉| 精品日本高清在线播放| 国产精品1234| 国产美女久久精品香蕉69| 亚洲视频999| 欧美性黄网官网| 亚洲国产成人久久| 狠狠躁天天躁日日躁欧美| 91精品久久久久久久| 日韩中文在线中文网三级| 久久精品国产综合| 亚洲一区二区黄| 91沈先生在线观看| 欧美一区二区三区艳史| 欧美极品第一页| 亚洲国产精品一区二区久| 国产一区二区三区高清在线观看| 国产精品91久久久久久| 中文字幕亚洲一区二区三区| 久久久久女教师免费一区| 久久影视电视剧免费网站清宫辞电视| 欧美丰满少妇xxxxx做受| 亚洲女性裸体视频| 国产精品夫妻激情| 中文字幕亚洲综合久久筱田步美| 国产精品video| 高跟丝袜欧美一区| 久久久久久这里只有精品| xvideos成人免费中文版| 一本色道久久88综合日韩精品| 亚洲男人天堂久| 亚洲福利在线视频| 国产精品入口福利| 欧美性视频网站| 久久久97精品| 欧美高清视频免费观看| 欧美野外猛男的大粗鳮| 亚洲第一精品自拍| 亚洲欧美第一页| 97视频在线看| 日韩欧美一区二区在线| 日韩美女在线观看| 欧美高跟鞋交xxxxhd| 97视频免费在线看| 人人做人人澡人人爽欧美| 亚洲人成在线免费观看| 欧美夫妻性生活视频| 欧美黑人性猛交| 日韩av观看网址| 久久精品99久久香蕉国产色戒| 国产欧美最新羞羞视频在线观看| 精品一区二区三区四区| 都市激情亚洲色图| 久久免费观看视频| 一区二区国产精品视频| 91高清视频免费| 国产精品99久久久久久久久久久久| 最新的欧美黄色| 成人午夜在线观看|