這篇文章介紹了VB.NET設(shè)置屏幕分辨率、顏色位數(shù)、刷新率
專注于為中小企業(yè)提供成都網(wǎng)站設(shè)計、做網(wǎng)站服務(wù),電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)岳陽樓免費做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了上千多家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。
實例代碼,有需要的朋友可以參考一下
復(fù)制代碼
代碼如下:
Private
Declare
Function
GetDeviceCaps
Lib
"gdi32"
(ByVal
hdc
As
Long,
ByVal
nIndex
As
Long)
As
Long
Private
Declare
Function
ChangeDisplaySettings
Lib
"user32"
Alias
"ChangeDisplaySettingsA"
(lpDevMode
As
Any,
ByVal
dwflags
As
Long)
As
Long
Private
Const
CCDEVICENAME
As
Long
=
32
Private
Const
CCFORMNAME
As
Long
=
32
Private
Const
DM_BITSPERPEL
As
Long
=
H40000
Private
Const
DM_PELSWIDTH
As
Long
=
H80000
Private
Const
DM_PELSHEIGHT
As
Long
=
H100000
Private
Const
DM_DISPLAYFLAGS
As
Long
=
H200000
Private
Const
DM_DISPLAYFREQUENCY
=
H400000
Private
Const
CDS_FORCE
As
Long
=
H80000000
Private
Const
BITSPIXEL
As
Long
=
12
Private
Const
HORZRES
As
Long
=
8
Private
Const
VERTRES
As
Long
=
10
Private
Const
VREFRESH
=
116
Private
Type
DEVMODE
dmDeviceName
As
String
*
CCDEVICENAME
dmSpecVersion
As
Integer
dmDriverVersion
As
Integer
dmSize
As
Integer
dmDriverExtra
As
Integer
dmFields
As
Long
dmOrientation
As
Integer
dmPaperSize
As
Integer
dmPaperLength
As
Integer
dmPaperWidth
As
Integer
dmScale
As
Integer
dmCopies
As
Integer
dmDefaultSource
As
Integer
dmPrintQuality
As
Integer
dmColor
As
Integer
dmDuplex
As
Integer
dmYResolution
As
Integer
dmTTOption
As
Integer
dmCollate
As
Integer
dmFormName
As
String
*
CCFORMNAME
dmUnusedPadding
As
Integer
dmBitsPerPel
As
Integer
dmPelsWidth
As
Long
dmPelsHeight
As
Long
dmDisplayFlags
As
Long
dmDisplayFrequency
As
Long
End
Type
Private
Sub
cmdChangeDesktopMode_Click()
Dim
DM
As
DEVMODE
With
DM
.dmPelsWidth
=
CInt(txtNewWidth.Text)
.dmPelsHeight
=
CInt(txtNewHeight.Text)
.dmBitsPerPel
=
CInt(txtNewColor.Text)
.dmDisplayFrequency
=
CInt(txtNewFreq.Text)
.dmFields
=
DM_PELSWIDTH
Or
DM_PELSHEIGHT
Or
DM_BITSPERPEL
Or
DM_DISPLAYFREQUENCY
.dmSize
=
LenB(DM)
End
With
If
ChangeDisplaySettings(DM,
CDS_FORCE)
Then
MsgBox
"錯誤!不支持此模式!"
End
If
End
Sub
Private
Sub
Form_Load()
txtOldWidth.Text
=
GetDeviceCaps(Me.hdc,
HORZRES)
txtOldHeight.Text
=
GetDeviceCaps(Me.hdc,
VERTRES)
txtOldColor.Text
=
GetDeviceCaps(Me.hdc,
BITSPIXEL)
txtOldFreq.Text
=
GetDeviceCaps(Me.hdc,
VREFRESH)
End
Sub
使用 RichTextBox 控件
RichTextBox 控件可用于輸入和編輯文本,它同時提供了比常規(guī)的 TextBox 控件更高級的格式特性。
RichTextBox 控件提供了一些屬性,通過這些屬性,可對該控件中任何部分的文本使用不同的格式。用這些屬性,可以將文本變?yōu)榇煮w或斜體,改變文本的顏色,創(chuàng)建上標或下標。可以調(diào)整段落的左右縮進值,還可以使用懸掛式縮進。
用途
作為“無底”的文本框,可用于編寫閱讀特別大的文本文件的應(yīng)用程序。
在任何應(yīng)用程序中實現(xiàn)功能完備的文本編輯器。
特性
以 RTF 格式或 ASCII 文本格式打開或保存文件。可以使用該控件的方法(LoadFile 和 SaveFile),直接讀寫文件。也可以用該控件的屬性,比如 SelRTF 和 TextRTF,聯(lián)合 Visual Basic 的文件輸入輸出語句讀寫文件。
將 .rtf 文件的內(nèi)容裝入 RichTextBox 控件,只需將該文件(比如從 Windows 95 “資源管理器”中)的內(nèi)容直接拖入該控件,或者將其它應(yīng)用程序(比如 Microsoft Word)中使用文件的突出顯示部分直接拖入該控件。
設(shè)置 FileName 屬性,將 .rtf 或 .txt 文件的內(nèi)容裝入該控件。
用 SelPrint 方法打印 RichTextBox 控件中的全部或部分文本。
將 RichTextBox 控件綁定到 Data 控件,可以處理 Microsoft Access 數(shù)據(jù)庫的 Memo 字段,或者其它數(shù)據(jù)庫中大型的文本字段(比如 SQL 服務(wù)器中的 TEXT 數(shù)據(jù)類型)。
在運行時,用 OLEObject 集合的 Add 方法,將嵌入對象,比如位圖、圖標、應(yīng)用程序圖標,加到該控件中。在設(shè)計時或運行時,可以拖放任何嵌入對象到控件中,包括文檔,比如 Microsoft Excel 的電子表格和 Microsoft Word 文檔等。
在設(shè)計時設(shè)置滾動條
按照缺省規(guī)定,RichTextBox 沒有滾動條。在運行時,如果在該控件中裝入了較大的文件,最終用戶就不能看到文件的全部內(nèi)容了。為使用戶能夠方便地進行滾動,可將其 ScrollBars 屬性設(shè)置為 1(水平的)、2(豎直的)或 3(兩個都有)。這必須在設(shè)計時完成,因為 ScrollBars 屬性在運行時是只讀的。
用 LoadFile 和 SaveFile 方法打開和保存文件
用 LoadFile 和 SaveFile 方法可以方便地為 RichTextBox 控件打開或保存 RTF 文件。要打開文件,可用 CommonDialog 控件提供路徑名,如下所示:
Private Sub OpenFile()
'RichTextBox 控件的名稱是“rtfData”。
'CommonDialog 名為“dlgOpenFile”。
'為文件名聲明 String 變量。
'顯示 “打開文件”對話框,
'并將變量設(shè)置為文件名。
Dim strOpen As String
dlgOpenFile.ShowOpen
strOpen = dlgOpenFile.FileName
'用 LoadFile 方法打開該文件。
rtfData.LoadFile strOpen
End Sub
用 SaveFile 方法,保存文件也同樣簡便:
Private Sub SaveFile()
Dim strNewFile As String
dlgOpenFile.ShowSave
strNewFile = dlgOpenFile.FileName
rtfData.SaveFile strNewFile
End Sub
注意 如果文件中包含了該控件不能支持的 RTF 編碼,僅相關(guān)的文本在 RichTextBox 控件中將不會出現(xiàn)。
用 SelFontName、SelFontSize 和 SelFontColor 設(shè)置字體屬性
要改變 RichTextBox 控件中的字體特性,可以使用 SelFontName、SelFontSize 和 SelFontColor 屬性。
通常使用 ComboBox 控件顯示這些屬性的選項。隨后可用 ComboBox 控件的 Click 事件改變屬性。下面的代碼首先在 Form 對象的 Load 事件中,充填名為“cmbFonts”的 ComboBox 控件。然后用 Click 事件改變 RichTextBox 控件的 SelFontName 屬性。
Private Sub Form_Load()
Dim i As Integer
With cmbFonts
For i = 0 to Screen.Fonts.Count - 1
.AddItem Screen.Fonts(i).Text
End With
End Sub
Private Sub cmbFonts_Click()
rtfData.SelFontName = cmbFonts.Text
End Sub
重點 這些屬性只影響選中的文本,或者,如果沒有選中文本,則影響當前光標位置之后鍵入的文本。
格式化段落的縮進、懸掛式縮進和項目符號
RichTextBox 控件的另一個特性是它可以創(chuàng)建有縮進、懸掛式縮進和項目符號的段落。這三種樣式顯示如下:
縮進和帶項目符號的縮進 (rtf_3ind.bmp)
要使用 SelFontName、SelFontSize 和 SelFontColor 屬性,最終用戶必須選中一個或多個段落。在這里,假設(shè)用戶只選中了第二段,創(chuàng)建縮進和懸掛式縮進的代碼如下所示:
'假設(shè)該控件的名稱是“rtfData”。
rtfData.SelIndent = .5
rtfdata.SelHangingIndent = 1.5
請注意用于設(shè)置 SelIndent、SelHangingIndent、BulletIndent 和其它屬性的值,要依賴于 RichTextBox 控件的容器的 ScaleMode 屬性。例如,如果 RichTextBox 控件的容器是 Form 對象,則將該 Form 對象的 ScaleMode 屬性由 7(厘米)改為 1(緹)時,SelIndent 屬性必須同時由 0.5(厘米)改為 283(緹)。這是因為一厘米 = 567 緹。
同時還要注意段落的 SelBullet 屬性必須設(shè)置為 True,才能將該段設(shè)置為有項目符號的樣式。
用 SelChange 事件通知屬性的變化
要通告用戶選中的任何文本的當前屬性,可以使用 SelChange 事件。每當插入點改變,或者選中內(nèi)容被改變時,均會產(chǎn)生該事件。下面的示例用 Toolbar 控件通告用戶 SelBold 屬性的變化。
Private Sub rtfData_SelChange()
'重新設(shè)置 Toolbar 的 Button 對象的
' Value 屬性。該 Toolbar 控件的名稱是
'“tlbRTF”。
'SelBold 返回 0、-1 或 Null。如果它為 Null
'則將其 Mi xedState 屬性設(shè)置為 True。
Select Case rtfData.SelBold
Case 0 '不是粗體。
tlbRTF.Buttons("bold").Value = tbrUnpressed
Case -1 '粗體。
tlbRTF.Buttons("bold").Value = tbrPressed
Case Else '混合狀態(tài)。
tlbRTF.Buttons("bold").Mi xedState = True
End Select
End Sub
用 SelPrint 方法打印 RichTextBox 的內(nèi)容
要打印 RichTextBox 控件,可以使用 SelPrint 方法。該方法需要一個參數(shù),即用來打印 RichTextBox 控件內(nèi)容的 Printer 對象的 hDC 屬性。如果用戶選中了某些文本,則只打印選中的文本。如果沒有選中任何文本,則打印該控件的所有內(nèi)容。
下面的代碼,在用戶單擊 CommandButton 控件后,用 CommonDialog 控件顯示“打印機”對話框。Flags 屬性禁用了頁碼,并使用戶能夠在該對話框中選擇多種選項:
Private Sub cmdPrint_Click()
'CommonDialog 控件的名稱是“dlgPrint”。
dlgPrint.Flags = cdlPDReturnDC + cdlPDNoPageNums
If rtfData.SelLength = 0 Then
dlgPrint.Flags = dlgPrint.Flags + cdlPDAllPages
Else
dlgPrint.Flags = dlgPrint.Flags + cdlPDSelection
End If
dlgPrint.ShowPrinter
rtfData.SelPrint dlgPrint.hDC
End Sub
詳細信息 有關(guān)使用 CommonDialog 控件的詳細說明,請參閱《Visual Basic程序員指南》中的“使用 CommonDialog 控件”。
在控件中顯示嵌入對象
在運行時,最終用戶可拖動任何嵌入對象,并放入 RichTextBox 控件。在控件中可以嵌入兩種對象:以圖標形式顯示的對象,和以數(shù)據(jù)形式顯示的對象。下圖顯示了具有嵌入文件對象的 RichTextBox,作為第一種類型的示例。
單擊后,嵌入的對象就會象預(yù)料的那樣,即啟動與該文件相關(guān)聯(lián)的應(yīng)用程序。當控件中的數(shù)據(jù)以 RTF 文件形式保存時(用 SaveFile 方法),嵌入對象中的信息也將被保存。
然而,如果最終用戶在該控件中嵌入位圖,則將顯示該位圖,而不是它的圖標,如下所示:
單擊該位圖將啟動 Paint 應(yīng)用程序,使最終用戶能夠編輯該位圖。
用 OLEObjects 集合的 Add 方法添加嵌入對象
用 OLEObject 集合的 Add 方法可將嵌入對象以編程方式加入該控件,如下所示:
Private Sub cmdAddObject_Click()
'將蝴蝶位圖添加到該控件中。
RichTextBox1.OLEObjects.Add , , , "bfly.bmp"
End Sub
在運行時,可用 Add、Clear 和 Remove 方法,動態(tài)地向該控件中充填嵌入對象。
VB.net
相對VB出現(xiàn)巨大變化的是語意,從運行于基于COM的deterministic,
reference-counted的引擎之上的編程環(huán)境,轉(zhuǎn)變?yōu)槿婷嫦驅(qū)ο蟮幕?NET
Framework的語言。.NET
Framework包括了CLR(使用通用垃圾收集機制和JIT編譯引擎的虛擬機)和大量的類庫。VB開發(fā)者進入VB.NET要面對新增的大量類庫的問題。
上述變化表明了許多在運行及維護相關(guān)優(yōu)化事宜下面的假定,一些VB6函數(shù)和庫不再存在而其它的仍然可用,但是比不上.NET語言中自帶的可替換的函數(shù)和庫來得高效。即使它們可被編譯,但大多從VB6轉(zhuǎn)換而來的應(yīng)用將需要一定程度上的重構(gòu)(refactoring),以全面利用新語言的優(yōu)點。在有關(guān)句法、應(yīng)用調(diào)試、部署和術(shù)語等方面的變化,有大量的文檔可以參考。
INTOUCH自帶的就有,打印屏幕的命令
自己寫個時間條件運行那命令就可以了
PRINTSCREEN這個命令 具體怎么用 看下幫助
希望我的回答對你有所幫助
如有其他問題,可以繼續(xù)追問,您的采納是我前進的動力!
網(wǎng)絡(luò)上找到這個比較全面,你試一下,我記得以前也是這么設(shè)置的。
int GetDeviceCaps( HDC hdc, int nIndex);
其中,hdc用來指定設(shè)備環(huán)境句柄,nIndex用來指定要獲取的參量索引,對于打印機而言,它常常需要下列的預(yù)定義值:
LOGPIXELSX 打印機水平分辨率
LOGPIXELSY 打印機垂直分辨率
PHYSICALWIDTH 打印紙的實際寬度
PHYSICALHEIGHT 打印紙的實際高度
PHYSICALOFFSETX 實際可打印區(qū)域的物理左邊距
PHYSICALOFFSETY 實際可打印區(qū)域的物理上邊距
下面的函數(shù)代碼就是用來設(shè)置頁邊距,并且還計算頁面的物理邊距:
void CEx_Prn1View::SetPageMargin(CDC *pDC, CPrintInfo *pInfo, int l, int t, int r, int b)
// l, t, r, b分別表示左上右下邊距, 單位為0.1mm
{
int nOldMode = pDC- GetMapMode();
pDC- SetMapMode(MM_LOMETRIC);
// 計算一個設(shè)備單位等于多少0.1mm
double scaleX = 254.0 / (double)GetDeviceCaps(
pDC- m_hAttribDC, LOGPIXELSX);
double scaleY = 254.0 / (double)GetDeviceCaps(
pDC- m_hAttribDC, LOGPIXELSY);
int x = GetDeviceCaps(pDC- m_hAttribDC,
PHYSICALOFFSETX);
int y = GetDeviceCaps(pDC- m_hAttribDC,
PHYSICALOFFSETY);
int w = GetDeviceCaps(pDC- m_hAttribDC,
PHYSICALWIDTH);
int h = GetDeviceCaps(pDC- m_hAttribDC,
PHYSICALHEIGHT);
int nPageWidth = (int)((double)w*scaleX + 0.5);
// 紙寬,單位0.1mm
int nPageHeight = (int)((double)h*scaleY + 0.5);
// 紙高,單位0.1mm
m_nPhyLeft = (int)((double)x*scaleX + 0.5);
// 物理左邊距,單位0.1mm
m_nPhyTop = (int)((double)y*scaleY + 0.5);
// 物理上邊距,單位0.1mm
pDC- DPtoLP(pInfo- m_rectDraw);
CRect rcTemp = pInfo- m_rectDraw;
rcTemp.NormalizeRect();
m_nPhyRight = nPageWidth - rcTemp.Width() -
m_nPhyLeft; // 物理右邊距,單位0.1mm
m_nPhyBottom = nPageHeight - rcTemp.Height() -
m_nPhyTop; // 物理下邊距,單位0.1mm
// 若邊距小于物理邊距,則調(diào)整它們
if (l m_nPhyLeft) l = m_nPhyLeft;
if (t m_nPhyTop) t = m_nPhyTop;
if (r m_nPhyRight) r = m_nPhyRight;
if (b m_nPhyBottom) b = m_nPhyBottom;
// 計算并調(diào)整pInfo- m_rectDraw的大小
pInfo- m_rectDraw.left = l - m_nPhyLeft;
pInfo- m_rectDraw.top = - t + m_nPhyTop;
pInfo- m_rectDraw.right -= r - m_nPhyRight;
pInfo- m_rectDraw.bottom += b - m_nPhyBottom;
pDC- LPtoDP(pInfo- m_rectDraw);
pDC- SetMapMode(nOldMode);
// 恢復(fù)原來的映射模式
}