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);?需要注意的是,這里我們使用的是CFont指針,而不是普通的CFont局部變量,?在非MFC程序,首先用CreateFont來建立一個字體句柄,然后再用SendMessage發給控件WM_SETFONT消息,將建立的字體句柄賦值過去,就可以了。
實例下載:http://www.china-askpro.com/download/CtrlFont.zip
?
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(),設置了對話框的沒有一點反應!)
實例下載:http://www.codeproject.com/gdi/SetFont/SetFont_demo.zip
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);

????}以上是取得系統字體的大小,然后再調用上面的第二種方法,哈哈哈哈哈!
窗體上的所有字體都會跟著系統字體的大小改變,哈哈哈哈!
主要使用API:
SystemParametersinfo該函數查詢或設置系統級參數。該函數也可以在設置參數中更新用戶配置文件
函數功能:該函數查詢或設置系統級參數。該函數也可以在設置參數中更新用戶配置文件。
????函數原型:B00L?SystemParametersinfo(UINT?uiAction,UINT?uiParam,PVOID?pvParam,UINT?fWinlni);
????參數:
????uiAction:該參數指定要查詢或設置的系統級參數。其取值如下;
????SPI_GETACCESSTIMEOUT:檢索與可訪問特性相關聯的超時段的信息,PvParam參數必須指向某個ACCESSTIMEOUT結構以獲得信息,并將該結構中的cbSjze成員和ulParam參數的值設為sizeof(ACCESSTIMEOUT)。
????SPI_GETACTIVEWINDOWTRACKING:用于Windows?98和Windows?NT?5.0及以后的版本。它表示是否打開活動窗口跟蹤(激活該窗口時鼠標置為開狀態),pvParam參數必須指向一個BOOL型變量(打開時接收值為TRUE,關閉時為FALSE)。
????SPI_GETACTIVEWNDTRKZORDER;用于Windows?98和Windows?NT?5.0及以后版本。它表示通過活動窗口跟蹤開關激活的窗口是否要置于最頂層。pvParam參數必須指向一個BOOL型變量,如果要置于頂層,那么該變量的值為TRUE,否則為FALSE。
????SPI_GETACTIVEWNDTRKTIMEOUT:用于Windows?98和?Windows?NT?5.0及以后版本。它指示活動窗口跟蹤延遲量,單位為毫秒。pvParam參數必須指向DWORD類型變量,以接收時間量。
????SPI_GETANIMATION:檢索與用戶活動有關的動畫效果。pvParam參數必須指向ANIMATIOINFO結構以接收信息。并將該結構的cbSize成員和ulParam參數置為sizeof(ANIMATIONINFO)。
????SPI_GETBEEP:表示警告蜂鳴器是否是打開的。pvParam參數必須指向一個BOOL類型變量,如果蜂鳴器處于打開狀態,那么該變量的值為TRUE,否則為FALSE。
????SpI_GETBORDER:檢索決定窗口邊界放大寬度的邊界放大因子。pvParam參數必須指向一個整型變量以接收該值。
????SPI_GETDEFAULTINPUTLANG:返回用于系統缺省輸入語言的鍵盤布局句柄。pvParam參數必須指向一個32位變量,以接收該值。
????SPI_GETCOMBOBOXANIMATION:用于Windows?98和Windows?NT?5.0及以后版本。它表示用于組合柜的動打開效果是否允許。pvParam參數必須指向一個BOOL變量,如果允許,那么變量返回值為TRUE,否則為FALSE。
????SPI_GETDRAGFULLWINDOWS:確定是否允許拖拉到最大窗口。pvParam參數必須指向BOOL變量,如果允許,返回值為TRUE,否則為FALSE。對于Windows?95系統,該標志只有在安裝了Windows?plusl才支持。
????SPI_GETFASTTASKSWITCH:該標志已不用!以前版本的系統使用該標志來確定是否允許Alt+Tab快速任務切換。對于Windows?95、Windows?98和Windows?NT?4.0版而言,快速任務切換通常是允許的。
????SPI_GETFILTERKEYS:檢索有關FILTERKEYS(過濾鍵)易用特征信息。pvParam參數必須指向接收信息的filterkeys結構,并將該結構中的cbSze成員和ulParam參數的值設為sizeof(FILTERKEYS)。
????SPI_GETFONTSMOOTHING:表示字體平滑處理特征是否允許。該特征使用字體保真技術,通過在不同灰度級上涂上像素使字體曲線顯得更加平滑。參數pvParam必須指向BOOL類型變量,如果該特征被允許,那么返回值為TRUE,否則為FALSE。對于Windows?95系統,該標志只有在安裝了Windows?plusl才支持。
????SPI_GETFOREGROUNDFLASHCOUNT:用于Windows?98和Windows?NT?5.0及以后版本。它表示在拒絕前臺切換申請時系統閃爍任務條按鈕的次數。參數pvParam必須指向DWORD變量,以接收該值。
????SPI_GETFOREGROUNDLOCKTIMEOUT:用于Windows?NT?5.O及以后版本或Windows?98。它表示在系統禁止應用程序強行將自己進入前臺期間的時間量,單位為毫秒.參數pvParam必須指向DWORD變量以接收時間值。
????SPI_GETGRADIENTCAPTIONS:用于Windows?98和Windows?NT?5.0及以后版本。它表示是否允許有用于窗口標題欄的傾斜效果。參數pvParam必須指向BOOL變量,其值在允許時為TRUE,禁止時為FALSE。
????SPL_GETGRIDGRANULARITY:檢索桌面大小網格的當前顆粒度值。參數pVparam必須指向一個整型變量以接收該值。
????SPI_GETHIGHCONTRAST:用于Windows?95及更高版本、Windows?NT?5.0及以后版本。檢索與HighContrast易用特征有關的信息。pvParam參數必須指向用于接收該信息的HIGHCONTRAST結構,該結構中的。cbSize成員和ulParam參數的值應設為sizeof(NIGHCONTRAST)。
2004-09-10 11:47:30
回復人: lixiaosan
SPI_GETICONMETRICS:檢索與圖標有關的度量信息。參數pvParam必須指向一個ICONMETRICS結構以接收信息。該結構中的。cbSize成員和ulParam參數的值應設為sizeof(ICONMETRICS)。
????SPI_GETICONTITLELOGFONT:檢索當前圖標標題字體的邏輯字體信息。參數ulParam規定了logfont結構的大小,參數pvParam必須指向要填充的Iogfont結構。
????SPI_GETICONTITLEWRAP:確定是否允許圖標標題環繞。pvParam參數必須指向一個BOOL類型變量,該變量的值在允許時為TRUE,否則為FALSE。
????SPI_GETKEYBOARDDELAY:檢索鍵盤重復擊鍵延遲設置,該值范圍從0(大約25Oms延遲)到3(大約1秒延遲)。與該范圍里每一個值相關的實際延遲時間可能與硬件有關。pvParam參數必須指向一個整型變量以接收設置值。
????SPI_GETKEYBOARDPREF:用于Windows?95及以后版本。Windows?NT?5.O及以后版本。它確定用戶是否依賴鍵盤而非鼠標,是否要求應用程序顯示鍵盤接口,以免隱藏。pvParam參數必須指向一個BOOL類型變量,如果用戶依賴鍵盤,那么該變量取值為TRUE,否則為FALSE。
????SPI_GETKEYBOARDSPEED:檢索鍵盤重復擊鍵速度設置情況,該值范圍從0(大約30次/秒)至31(大約25次/秒)。實際的擊鍵速率與硬件有關,而且變動的線性幅度有可能高達20%。參數pvParam必須指向DWORD變量以接收設置值。
????SPI_GETLISTBOXSMOOTHSCROLLING:用于Windows?98和Windows?NT?5.0及以后版本。表示是否允許有列表欄的平滑滾動效果。pvParam參數必須指向BOOL變量,如果允許,則該值為TRUE,否則為FALSE。
????SPI_GETLDWPOWERACTIVE:確定是否允許屏幕保護的低電壓狀態。如果允許,那么指向BOOL變量的pvParam參數會接收到TRUE值,否則為FALSE。對于Windows?98,該標志對16位和32位應用程序都支持。
????對于Windows?95,該標志只支持16位應用程序。對于Windows?NT,在Windows?NT?5.0及以后版本中支持32位應用程序,對16位應用程序則不支持。
????SPI_GETLOWPOWERTIMEOUT:檢索用于屏幕保護的低電壓狀態超時值。pvParam參數必須指向一個整型變量,以接收該值。對于Windows?98該標志支持16位和32位應用程序。對于Windows95,該標志只支持16位應用程序。對于Windows?NT,該標志支持Windows?NT?5.0及以后版本上的32位應用程序。不支持16位應用程序。
????SPI_GETMENUDROPALIGNMENT。確定彈出式菜單相對于相應的菜單條項是左對齊,還是右對齊、參數pvParam必須指向一個BOOL類型變量,如果是左對齊。那么該變量值為TRUE,否則為FALSE。SPI_GETMINIMIZEDMETRICS:檢索最小化窗口有關的度量數據信息。參數pvParam必須指向MINIMIZEDMETRCS結構,以接收信息。該結構中的cbSize和ulParam參數的值應設為sizeof(MINIMIZEDMETRICS)。
????SPI_GETMOUSE:檢索鼠標的2個閾值和加速特性。pvParam參數必須指向一個長度為3的整型數組,分別存儲此值。
????SPI_GETMOUSEHOVERHEGHT:用于Windows?NT?4.0及以后版本或Windows?98。獲得在TrackMouseEvent事件中,為產生WM_MOUSEOVER消息而鼠標指針必須停留的矩形框的高度,以像素為單位。參數pvParam必須指向一個UINT變量以接收這個高度值。
????SPI_GETMOUSEHOVERTIME:用于Windows?NT?4.0及以后版本、Windows?98,獲得在TrackMouseEvent事件中,為產生WM_MOUSEOVER消息而鼠標指針必須停留在矩形框內的時間,單位為毫秒。參數pvParam必須指向一個UINT變量以接收該時間值。
????SPI_GETMOUSEHOVERWIDTH:用于Windows?NT?4.0及以后版本、Windows?98。獲得在TrackMouseEvent事件中,為產生WM_MOUSEOVER消息而鼠標指針必須停留的矩形框的寬度,以像素為單位。參數pvParam必須指向一個UINT變量以接收這個寬度值。
????SPI_GETMOUSEKEYS:檢索與MOUSEKEYS易用特征有關的信息,pvParam參數必須指向某個MOUSEKEYS結構,以獲取信息。應將結構的cbSize成員和ulParam參數設置為sizeof(MOUSEKEYS)。
????SPI_GETMOUSESPEED:用于Windows?NT?5.0及以后版本、Windows?98。檢索當前鼠標速度。鼠標速度決定了鼠標移動多少距離,鼠標的指針將移動多遠。參數pvParam指向一個整型變量,該變量接收1(最慢)至20(最快)之間的數值。缺省值為們10。這個值可以由最終用戶使用鼠標控制面板應用程序或使用調用了SPI_SETMOUSESPEED的應用程序來設置。
????SPI_GETMOUSETRAILS:用于WpvParam必須指向一個BOOL類型變量,如果是左對齊。那么該變量值為TRUE,否則為FALSE。
????SPI_GETMINIMIZEDMETRICS:檢索最小化窗口有關的度量數據信息。參數pvParam必須指向MINIMIZEDMETRCS結構,以接收信息。該結構中的cbSize和ulParam參數的值應設為sizeof(MINIMIZEDMETRICS)。
????SPI_GETMOUSE:檢索鼠標的2個閾值和加速特性。pvParam參數必須指向一個長度為3的整型數組,分別存儲此值。
????SPI_GETMOUSEHOVERHEGHT:用于Windows?NT?4.0及以后版本或Windows?98。獲得在TrackMouseEvent事件中,為產生WM_MOUSEOVER消息而鼠標指針必須停留的矩形框的高度,以像素為單位。參數pvParam必須指向一個UINT變量以接收這個高度值。
????SPI_GETMOUSEHOVERTIME:用于Windows?NT?4.0及以后版本、Windows?98,獲得在TrackMouseEvent事件中,為產生WM_MOUSEOVER消息而鼠標指針必須停留在矩形框內的時間,單位為毫秒。參數pvParam必須指向一個UINT變量以接收該時間值。
????SPI_GETMOUSEHOVERWIDTH:用于Windows?NT?4.0及以后版本、Windows?98。獲得在TrackMouseEvent事件中,為產生WM_MOUSEOVER消息而鼠標指針必須停留的矩形框的寬度,以像素為單位。參數pvParam必須指向一個UINT變量以接收這個寬度值。
????SPI_GETMOUSEKEYS:檢索與MOUSEKEYS易用特征有關的信息,pvParam參數必須指向某個MOUSEKEYS結構,以獲取信息。應將結構的cbSize成員和ulParam參數設置為sizeof(MOUSEKEYS)。SPI_GETMOUSESPEED:用于Windows?NT?5.0及以后版本、Windows?98。檢索當前鼠標速度。鼠標速度決定了鼠標移動多少距離,鼠標的指針將移動多遠。參數pvParam指向一個整型變量,該變量接收1(最慢)至20(最快)之間的數值。缺省值為們10。這個值可以由最終用戶使用鼠標控制面板應用程序或使用調用了SPI_SETMOUSESPEED的應用程序來設置。
????SPI_GETMOUSETRAILS:用于Windows?95及更高版本。它用來表示是否允許MouseTrails(鼠標軌跡)。該特征通過簡單地顯示鼠標軌跡并迅速擦除它們來改善鼠標的可見性。參數prParam必須指向一個整型變量來接收該值。如果這個值為0或1,那么表示禁止該特征。如果該值大于1,則說明該特征被允許,并且該值表示在鼠標軌跡上畫出的光標數目。參數ulParam不用。
2004-09-10 11:47:54
回復人: lixiaosan
SPI_GETNONCLIENTMETRICS:檢索與非最小化窗口的非客戶區有關的度量信息。參數pvParam必須指向NONCLIENTMETRICS結構,以便接收相應值。該結構的。cbSize成員與ulParam參數值應設為sizeof(NONCLIENTMETRICS)。對于Windows?98,該標志支持16位和32位應用程序。對于Windows?95,該標志只支持16位應用程序。對于Windows?NT該標志在NT?5.0及以后版本中支持32位應用程序,不支持16位應用程序。
????SPI_GETPOWEROFFACTIVE:確定是否允許屏幕保護中關電。TRUE表示允許,FA參數pvParam必須指定SERIALKEYS結構來接收信息。該結構中的cbSize成員和ulParam參數的值要設為sizeof(SERIALKEYS)。
????SPI_GETSHOWSOUNDS:確定ShowSounds易用特性標志是開或是關。如果是開,那么用戶需要一個應用程序來可視化地表達信息,占則只能以聽得見的方式來表達。參數pvParam必須指向一個BOOL類型變量。該變量在該特征處于開狀態時返回TRUE,否則為FALSE。使用這個值等同于調用GetSystemMetrics(SM_SHOWSOUNDS)。后者是推薦使用的調用方式。
????SPI_GETSNAPTODEFBUTTON:用于Windows?NT?4.0及以后版本、Windows?98:確定?Snap-TO-Default-Button(轉至缺省按鈕)特征是否允許。如果允許,那么鼠標自動移至缺省按鈕上,例如對話框的"Ok"或"Apply"按鈕。pvParam參數必須指向Bool類型變量,如果該特征被允許,則該變量接收到TRUE,否則為FALSE。
????SPI_GETSOUNDSENTRY:檢索與SOUNDSENTRY可訪問特征有關的信息。參數pvParam必須指向SOUNDSENTRY結構以接收信息。該結構中的。cbSize或員和ulParam參數的值要設為sizeof(SOUNDSENTRY)。
????SPI_GETSTICKYKEYS:檢索與StickyKeys易用特征有關的信息。參數?pvParam必須指向STICKYKEYS結構以獲取信息。該結構中的cbSze成員及ulParam參數的值須設為sizeof(STICKYKEYS)。
????SPI_GETSWITCHTASKDISABLE:用于Windows?NT?5.0、Windows?95及以后版本,確定是否允許Alt+Tab和AIt+Esc任務切換。參數pvParam必須指向UINT類型變量,如果禁止任務切換,那么返回值為1,否則為0。在缺省情況下,是允許進行任務切換的。
????SPI_GETTOGGLEKEYS:檢索與ToggleKeys易用特性有關的信息。參數pvParam必須指向TOGGLEKEYS結構以獲取信息。該結構中的cbSize成員和ulParam參數值要設置sizeof(TOGGLEKEYS)。
????SPI_GETWHEELSCROLLLINES:用于Windows?NT?4.0及以后版本、Windows?98。當前軌跡球轉動時,獲取滾動的行數。參數pvParam必須指向UINT類型變量以接收行數。缺省值是3。
????SPI_GETWINDOWSEXTENSION:在Windows?95中指示系統中是否裝了Windows?Extension和Windows?Plus!。
????參數ulParam應設為1。而參數pvParam則不用。如果安裝了Windows?Extenson,那么該函數返回TRUE,否則為FALSE。
????SPI_GETWORKAREA:檢索主顯示器的工作區大小。工作區是指屏幕上不被系統任務條或應用程序桌面工具遮蓋的部分。參數pvParam必須指向RECT結構以接收工作區的坐標信息,坐標是用虛擬屏幕坐標來表示的。為了獲取非主顯示器的工作區信息,請調用GetMonitorlnfo函數。參數ulParam指定寬度,單位是像素。
????SPI_ICONVERTICALSPACING:設置圖標單元的高度。參數ulParam指定高度,單位是像素。
????SPI_LANGDRIVER:未實現。
????SPI_SCREENSAVERRUNNING:改名為SPI_SETSCREENSAVERRUNNING。
????Spl_SETACCESSTIMEOUT:設置與可訪問特性有關的時間限度值,參數?pvParam必須指向包含新參數的ACCESSTIMEOUT結構,該結構的cbSize成員與ulParam參數的值要設為sizeof(ACCESSTMEOUT)。
????SPI_SETACTIVEWINDOWTRACKING:用于Windows?NT?5.0及以后版本、Windows?98。設置活動窗口追蹤的開或關,如果把參數pvParam設為TRUE,則表示開。pvParam參數為FALSE時表示關。
????SPI_SETACTIVEWNDTRKZORDER:用于Windows?NT?5.0及以后版本、Windows?98。表示是否把通過活動窗口跟蹤而激活的窗口推至頂層。參數pvParam設為TRUE表示推至頂層,FALSE則表示不推至頂層。
????SPI_SETACTIVEWNDTRKTIMEOUT:用于Wlindows?NT?5.0及以后版本、Windows?98。設置活動窗口跟蹤延遲。
????參數pvParam設置在用鼠標指針激活窗口前需延遲的時間量,單位為毫秒。
????SPI_SETBEEP:將警蜂器打開或關閉。參數ulParam指定為TRUE時表示打開,為FALSE時表示關閉。
????SPI_SETBORDER:設置確定窗口縮放邊界的邊界放大因子。參數ulParam用來指定該值。
????SPI_SETCOMBOBOXANIMATION:用于Windows?NT?5.0及以后版本和Windows?98。允許或禁止組合滑動打開效果。如果設置pvParam參數為TRUE,則表示允許有傾斜效果,如果設為FALSE則表示禁止。
????SPI_SETCURSORS:重置系統光標。將ulParam參數設為0并且pvParam參數設為NULL。
????SPI_SETDEFAULTINPUTLANG:為系統Shell(命令行解器)和應用程序設置缺省的輸入語言。指定的語言必須是可使用當前系統字符集來顯示的。pvParam參數必須指向DWORD變量,該變量包含用于缺省語言的鍵盤布局句柄。
????SpI_SETDESKpATTERN:通過使Windows系統從WIN.INI文件中pattern=設置項來設置當前桌面模式。
????SPI_SETDESKWALLPAPER:設置桌面壁。pvParam參數必須指向一個包含位圖文件名,并且以NULL(空)結束的字符串。
????SPI_SETDOUBLECLICKTIME:設ulParam參數的值為目標雙擊時間。雙擊時間是指雙擊中的第1次和第2次點擊之間的最大時間,單位為毫秒。也可以使用SetDoubleClickTime函數來設置雙擊時間。為獲取當前雙擊時間,請調用GetDoubleClickTime函數。
????SPI_SETDOUBLECLKHEGHT:將ulParam參數的值設為雙擊矩形區域的高度。雙擊矩形區域是指雙擊中的第2次點擊時鼠標指針必須落在的區域,這樣才能記錄為雙擊。
????SPI_SETDOUBLECLKWIDTH:將ulParam參數的值設為雙擊矩形區域的寬度。
????SPI_SETDRAGFULLWINDOWS:設置是否允許拖至最大窗口。參數uIParam指定為TRUE時表示為允許,為FALSE則不可。對于Windows?95,該標志只有在安裝了Windows?plusl才支持。
????SPI_SETDRAGHEIGHT:設置用于檢測拖拉操作起點的矩形區域的高度,單位為像素。參考GETSYSTEMMETRICS函數的nlndex參數中的SM_CXDRAG和SM_CYDRAG。
????SPI_SETDRAGWIDTH:設置用于檢測拖拉操作起點的矩形區域的寬度,單位為像素。
????SPI_SETFASTTASKSWITCH:該標志己不再使用。以前版本的系統使用此標志來允許或不許進行Alt+Tab快速任務切換。對于Windows?95、Windows?98和Windows?NT?4.0,通常都允許進行快速任務切換。參考SPI_SETSWITCHTASKDISABLE。
????SPI_SETFILTERKEYS:設置FilterKeys易用特性的參數。參數pvParam必須指向包含新參數的FILTERKEYS結構,該結構中的cbSize成員和參數ulParam的值應設為sizeof(FILTERKEYS)。
????SPI_SETFONTSMOOTHING:允許或禁止有字體平滑特性。該特性使用字體保真技術,通過在不同灰度級上涂畫像素點來使得字體曲線顯得更加平滑,為了允許有該特性,參數ulParam應設為TRUE值,否則為FALSE。對于Windows?95,只有在安裝了Windows?plusl才支持該標志。
????SPI_SETFOREGROUNDFLASHCOUNT:用于Windows?98和Windows?NT?5.0及以后版本。設置SetForegroundWindow在拒絕前臺切換申請時閃爍任務攔按鈕的次數。
2004-09-10 11:48:50
回復人: lixiaosan
SPI_SETFOREGROUNDLOCKTIMEOUT:用于Windows?98和Windows?NT?5.0及以后版本。它用來設置在用戶輸入之后,系統禁止應用程序強行將自己進入前臺期間的時間長度,單位為毫秒。參數pvParam設置這個新的時間限度值。
????SPI_SETGRADIENTCAPTIONS:用于Windows?98和Windows?NT?5.0及以后版本。允許或禁止窗口標題欄有傾斜效果。如果允許則將參數pvParam設置為TRUE,否則設為FALSE。有關傾斜效果方面更多信息,請參考GetSysColor函數。
????SPI_SETGRIDGRANULARITY:將桌面縮放時網格的顆粒度值設置為參數ulParam中的值。
????SPI_SETHANDHELD:內部使用,應用程序不應使用該值。
????SPI_SETHIGHCONTRAST:用于Windows?95及以后版本、Windows?NT?5.0及以后版本。設置HighContrast可訪問特性的參數。參數pvParam必須指向HIGHCONTRAST結構,該結構包含新的參數。該結構中的cbSize成員及參數ulParam的值設為sizeof(HIGHCONTRAST)。
????SPI_SETICONMETRICS:設置與圖標有關的信息。參數pvParam必須指向包含新參數的ICONMETRICS結構,另外還要將參數ulParam和該結構中的cbSize成員的值設置為sizeof(ICONMETRICS)。
????SPI_SETICONS:重新加載系統圖標。參數ulParam的值應設為0,而pvParam參數應設為NULL。
????SPI_SETICONTITLELOGFONT:設置用于圖標標題的字體。參數ulParam指定為logfont結構的大小,而參數pvParam必須指向一個LOGFONT結構。
????SPI_SETICONTITLEWRAP:打開或關閉圖標標題折行功能。若想打開折行功能,則把參數ulParam設為TRUE,否則為FALSE。
????SPI_SETKEYBOARDDELAY:設置鍵盤重復延遲。參數ulParam必須指定為0,1,2或3。其中0表示設置為最短延遲(大約?250ms)3,表示最大延遲(大約?1?秒)。與每個值對應的實際的延遲時間根據硬件情況有可能有些變化。
????SPI_SETKEYBOARDPREF:用于Windows?95及以后版本、Windows?NT?5.0及以后版本,設置鍵盤優先序。如果用戶依賴鍵盤而不是鼠標,那么可將參數ulParam指定為TRUE,否則設為FALSE,并且要求應用程序顯示而不隱蔽鍵盤接口。
????SPI_SETKEYBOARDSPEED:設置鍵盤重擊鍵速度。參數ulParam必須指定一個從0到31的值,其中0表示設置成最快速度(大約30次/秒),31表示設置為最低速度(大約2。5次/秒),實際的重速率與硬件有關,而且可能變動幅度高達20%。如果ulParam大于31,那么該參數仍設置為31。
????SPI_SETLANGTOGGLE:為輸入語言間切換設置熱鍵集。參數ulParam和pvParam不用。該值通過讀取注冊表來設置鍵盤屬性表單中的快捷鍵。在使用該標志之前必須設置注冊表,注冊表中的路徑是"1"=Alt+shift,"2"=Ctrl+shift,"3"=none(無)。
????SPI_SETLISTBOXSMOOTHSCROLLING:用于Windows?98和Windows?NT?5.0及以后版本。允許或不許列表欄有平滑滾動效果。參數pvParam設置為TRUE表示允許有平滑滾動效果,為FALSE則表示禁止。
????SPI_SETLOWPOWERACTIVE:激活或關閉低電壓屏幕保護特性。參數ulParam設為1表示激活,0表示關閉。參數pvParam必須設為NULL。對于Windows?98,該標志支持16位和32位應用程序。對于Windows?95,該標志只支持16位應用程序。對于Windows?NT.該標志只支持NT?5.0及以后版本的32位應用程序,不支持16位應用程序。
????SPI_SETLOWPOWERTIMEOUT:用于設置低電壓屏幕保護中的時間值(也稱超時值,即在超過某一時間段后自動進行屏幕保護),單位為秒。uIParam參數用來指定這個新值。參數pvParam必須為NULL。對于Windows98,該標志支持16位和32位應用程序。對于Windows?95,該標志只支持16位應用程序。對于Windows?NT該標志只支持NT?5.0及以后版本的32位應用程序,不支持16位應用程序。
????SPI_SETMENUDROPALIGNMENT:設置彈出或菜單的對齊方式。參數ulParam指定為TRUE時表示是右對齊,FALSE時為左對齊。
????SPI_SETMINIMIZEDMETRICS:設置與最小化窗口有關的數據信息,參數pvParam必須指向包含新參數的MINIMIZEDMETRICS結構。該結構中的cbSize成員與ulParam參數的值應設為sizeof(MINMIZEDMETRICS)。
????SPI_SETMOUSE:設置鼠標的兩個閥值和加速率。參數pvParam必須指向一個長度為3的數組,以指定這些值。詳細請參考mouse_event。
????SPI_SETMOUSEBUTTONSWAP:調換或恢復鼠標左右按鈕的含義,為FALSE時表示恢復原來的含義。
????SPI_SETMOUSEHOVERHEGHT:用于Windows?98和Windows?NT?4.0及以后版本。設置鼠標指針停留區域的高度,以像素為單位。鼠標指針在此區域停留是為了讓TrackMouseEvent產生一條WM_MUOSEHOVER消息,參數ulParam用來設置此高度值。
2004-09-10 11:49:17
回復人: lixiaosan
SPI_SETMOUSEHOVERTIME:用于Windows?98和Windows?NT?4.0及以后版本。設置鼠標指針為了讓TrackMouseEvent產生WM_MOUSEHOVER事件而在停留區域應停留的時間。該標志只有在將調用dwHoverTime參數中的HOVER_DEFAULT值傳送到TrackMouseEvent時才使用。參數ulParam設置這個新的時間值。
????SPI_SETMOUSEHOVERWIDTH:用于Windows?98和Windows?NT?4.0及以后版本。設置鼠標指針停留區域的寬度,以像素為單位。參數ulParam設置該新值。
????SPI_SETMOUSEKEYS:設置MouseKeys易用特性的參數。參數pvParam必須指向包含新參數的MOUSEKEYS結構。結構中的cbSize成員與參數ulParam的值應設為sizeof(MOUSEKEYS)。
????SPI_SETMOUSESPEED:用于Windows?NT?5.0及以后的版本和Windows?98,設置當前鼠標速度。參數pvParam必須指向一個1(最慢)至20(最快)之間的整數。缺省值是10。一般可以使用鼠標控制面板應用程序來設置該值。
????SPI_SETMOUSETRAILS:用于Windows?95及以后版本:允許或禁止有MoouseTrails(鼠標軌跡)特性。該特性通過簡短地顯示鼠標光標軌跡,并迅速地擦除它們來提高鼠標的可見度。禁止該特性可將參數ulParam設為0或1,允許時,將ulParam設置為一個大于1的數值,該值表示軌跡中畫出的光標個數。
????SPI_SETNONCLIENTMETRICS:設置與非最小化窗口的非客區有關的數據信息,參數pvParam必須指向NONCLIENTMETRICS結構,該結構包含新的參數。其成員cbSzie和參數ulParam的值應設為sizeof(NONCLIENTMETRICS)。
????SPI_SETPENWINDOWS;用于Windows?95及以后版本:指定是否加載筆窗口,當加載時,參數ulParam設為TRUE,不加載時為FALSE。參數pvParam為NULL。
????SPI_SETPOWEROFFACTIVE:激活或關閉屏幕保護特性參數。ulParam設為1表示激活,0表示關閉。參數pvParam必須為NULL。對于Windows?98,該標志支持16位和32位應用程序。對于Windows?95,該標志只支持16位應用程序。對于Windows?NT,該標志支持Windows?NT?5.0及以后版本的32位應用程序,不支持16位應用程序。
????SPI_SETPOWEROFFTIMEOUT:設置用于關閉屏幕保護所需的時間值(也稱超時值)。參數ulParam指定該值。參數pvParam必須為NULL。對于Windows?98.該標志支持16位和32位應用程序。對于Windows?95,該標志只支持16位應用程序。對于Windows?NT,該標志支持Windows?NT?5.0及以后版本上的32位應用程序,不支持16位應用程序。
????SPI_SETSCREENREADER;用于Windows?95及以后版本、Windows?NT?5.0及以后版本,表示屏幕審閱程序是否運行。參數uiparm指定為TRUE表示運行該程序,FALSE則不運行。
????SPI_SETSCREENSAVERRUNNING:用于Windows?95及以后版本,內部使用。應用程序不應該使用此標志SPI_SETSETSCREENSAVETIMEOUT:參數ulParam值為屏幕保護器時間限度值。該值是一個時間量,以秒為單位,在屏幕保護器激活之前,系統應該一直是空閑的,超過這個值就激活屏幕保護器。
????SPI_SETSERIALKEYS:用于Windows?95及以后版本:設置SerialKeys易用特性的參數。參數pvParam必須指向包含新參數的SERIALKEYS結構,其成員cbSize和參數ulParam應設為sizeof(SERIALKEYS)。
????SPI_SETSHOWSOUNDS:將ShowSounds易用特性設置為打開或關閉。參數ulParam指定為TRUE時表示打開,FALSE表示關閉。
????SPI_SETSNAPTODEFBUTTON:用于Windows?NT?4.0及以后版本、Windows?98。允許或禁止有snap-to-default-button(跳轉至缺省按鈕)特性。如果允許,那么鼠標光標會自動移至缺省按鈕上,例如對話柜中的OK或"apply"按鈕。參數ulParam設為TRUE表示允許該特性,FALSE表示禁止。
????SPI_SETSOUNDSENTRY:設置SOUNDSENTRY易用特性的參數。參數pvParam必須指向SOUNDSENTRY結構,該結構包含新參數,其成員cbSize和參數ulParam的值應設為sizeof(SOUNDSENTRY)。
????SPI_SETSTICKYKEYS:設置stickykeys可訪問特性的參數。參數pvParam必須指向包含新參數的stickykeys結構,其成員cbSize和ulParam參數的值要設為sizeof(STICKYKEYS)。
????SPI_SETSWITCHTASKDISABLE:用于Windows?NT?5.0及以后版本,允許或禁止有Alt+Tab和Alt+Esc任務切換特性。參數ulParam設為1表示允許有該特性,設為0則表示禁止。缺省情況下是允許有任務切換特性的。
????SPI_SETTOGGLEKEYS:設置togglekeys可訪問特性的參數,參數PvParam必須指向TOGGLEKEYS結構,該結構中包含新的參數。其成員cbSize和參數ulParam的值要設為sizeof(togglekeys)。
????SPI_SETWHEELSCROOLLLINES:用于Windows?98和Windows?NT?4.O及以后版本。設置當鼠標軌跡球轉動時
????要滾動的行數,滾動的行數是由參數ulParam設置的,該行數是在鼠標軌跡球滾動,井且沒有使用修改鍵時的滾動行數。如果該數值為0,那么不會發生滾動,如果滾動行數比可見到的行數要大,尤其如果是WHEEL_PAGESCROLL(#defined?sa?UINT_MAX),那么滾動操作應該被解釋成在滾動條的下一頁或上一頁區點擊一次。
????SPI_SETWORKAREA:設置工作區域大小。工作區是指屏幕上沒有被系統任務欄或桌面應用程序桌面工具遮蓋的部分。參數pvParam是一個指針。指向RECT結構,該結構規定新的矩形工作區域,它是以虛擬屏幕坐標來表達的。在多顯示器系統中,該函數用來設置包含特定矩形的顯示器工作區域。如果PvParam為NULL,那么該函數將主顯示器的工作區域設為全屏。
2004-09-10 11:49:38
回復人: lixiaosan
ulParam:與查詢或設置的系統參數有關。關于系統級參數的詳情,請參考uiAction參數。否則在沒有指明情況下,必須將該參數指定為O。
????pvParam:與查詢或設置的系統參數有關。關于系統級參數的詳情,請參考uiAction參數。否則在沒有指明情況下,必須將該參數指定為NULL。
????fWinlni:如果設置系統參數,則它用來指定是否更新用戶配置文件(Profile)。亦或是否要將WM_SETTINGCHANGE消息廣播給所有頂層窗口,以通知它們新的變化內容。該參數可以是0或下列取值之一:
????SPIF_UPDATEINIFILE:把新的系統參數的設置內容寫入用戶配置文件。
????SPIF_SENDCHANGED:在更新用戶配置文件之后廣播WM_SETTINGCHANGE消息。
????SPI_SENDWININICHANGE與?SPIF_SENDCHANGE一樣。
????返回值:如果函數調用成功,返回值非零:如果函數調用失敗,那么返回值為零。若想獲取更多錯誤信息,請調用GetLastError函數。
????備注:該函數一般與應用程序,例如控制面板一起使用。它可以允許用戶對Windows任意進行定制。
????盤布局名稱是從對應于布局的16進制語言標識符引生而來的。例如,美國英語(U.S.Englisth)的語言標識符為"?0×0409",則主美國英語鍵盤布局命名為"00000409"其他的鍵盤布局如Dvotak等,命名為"00010409"、"00020409"等,關于此的列表參見MAKELANGID宏。
????Wiows?CE操作系統只支持下列uiAction值:
????SPI_GETBATTERYIDLETIMEOUT:在WINDOWS?CE沒有因用戶操作而掛起之前,干電池電源能堅持給系統供電的時間量可以使用該標志得到。以秒為單位,如果pvParam為0,那么該標志被忽略。
????SPI_GETEXTERNALIDLETIMEOUT:在?Windows?CE沒有因用戶操作而掛起之前,交流電源能堅持給系統供電時間的時間量可以使用該標志得到。參數pvParam指向一個DWORD類型變量,以返回時間值,單位為秒。如果pvParam為0,那么該標志被忽略。
????SPI_GETMOUSE:檢索鼠標的兩個閾值和速度。
????SPI_GETOEMINFO:返回一個字符串,該字符串包含型號和制造商名稱。參數ulParam指定為pvParam參數中緩沖區的長度,在成功返回時,參數pvParam中包含Unicode字符集中的字符串。
????SPI_GETPLATFORMTYPE:返回一個指定Windows?CE設備類型的字符串,例如"H/PC"。參數ulParam規定pvParam參數緩沖區的長度,后者在成功返回時包含一個Unicode字符集中的字符串。該字符串允許象?H/PC?EXPLORER一樣的應用程序來確定設備類型。
????SPI_GETWAKEUPDLETIMEOUT:在用戶通知重新激活某個掛起的設備之后,可獲取的Windows?CE延緩響應的時間量。參數pvParam指向一個DWORD類型變量以返回時間值,單位為秒。如果pvParam值為0那么該標志被忽略。
????SPI_GETWORKAREA:檢索工作區大小。工作區是指沒有被任務遮蓋的屏幕部分。
????SPI_SETBATTERYidletimeout:在Windows?CE沒有因用戶操作而掛起之前,電池電源能堅持給系統供電的時間量可以使用該標志來設置。只要鍵盤或觸摸屏處在活動狀態(有輸入),那么Windows?CE操作系統及電池電源仍將工作。參數ulParam指定要設置的時間,單位為秒。如果ulParam設置為0,那么該標志被忽略。
????SPI_SETEXTERNALIDLETIMEOUT:在Windows?CE沒有因用戶操作而掛起之前,交流電源能堅持給系統供電的時間量可以使用該標志來設置。只要鍵盤或觸摸屏幕處在活動狀態,那么Windows?CE操作系統及AC電源仍將工作。參數ulParam指定要設置的時間,單位為秒。如果ulParam設為0,那么該標志被忽略。SPL_SETMOUSE:設置鼠標的兩個閾值和速度。
????SPI_SETWAKEUPIDLETIMEOUT:在用戶通知重新激活某個掛起的設備之后,Windows?CE延緩響應的時間長度量可使用該標志來設置。參數ulParam指定這個時間量,單位為秒,如果ulParam設置為0,那么該標志被忽略。
????SPI_SETWORKAREA設置工作區大小,工作區是指沒有被任務條遮蓋的屏幕部分。如果用來獲取平臺類型或OEM信息串的pvParam緩沖區太小,那么該函數會調用失敗,并出現錯誤值ERROR_INSUFFICENT_BUFFER。Windows?CE只支持該函數的UNICODE版。Windows?CE不支持參數fWinlni的取值為SPIF_SENDWININICHANGE的情形。