189 8069 5689

vb.nethdc的简单介绍

VB.NET设置屏幕分辨率、颜色位数、刷新率 实例代码

这篇文章介绍了VB.NET设置屏幕分辨率、颜色位数、刷新率

专注于为中小企业提供成都网站设计、做网站服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业岳阳楼免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了上千多家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。

实例代码,有需要的朋友可以参考一下

复制代码

代码如下:

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

“未将对象引用设置到对象的实例”错误!(VB.NET)

使用 RichTextBox 控件

RichTextBox 控件可用于输入和编辑文本,它同时提供了比常规的 TextBox 控件更高级的格式特性。

RichTextBox 控件提供了一些属性,通过这些属性,可对该控件中任何部分的文本使用不同的格式。用这些属性,可以将文本变为粗体或斜体,改变文本的颜色,创建上标或下标。可以调整段落的左右缩进值,还可以使用悬挂式缩进。

用途

作为“无底”的文本框,可用于编写阅读特别大的文本文件的应用程序。

在任何应用程序中实现功能完备的文本编辑器。

特性

以 RTF 格式或 ASCII 文本格式打开或保存文件。可以使用该控件的方法(LoadFile 和 SaveFile),直接读写文件。也可以用该控件的属性,比如 SelRTF 和 TextRTF,联合 Visual Basic 的文件输入输出语句读写文件。

将 .rtf 文件的内容装入 RichTextBox 控件,只需将该文件(比如从 Windows 95 “资源管理器”中)的内容直接拖入该控件,或者将其它应用程序(比如 Microsoft Word)中使用文件的突出显示部分直接拖入该控件。

设置 FileName 属性,将 .rtf 或 .txt 文件的内容装入该控件。

用 SelPrint 方法打印 RichTextBox 控件中的全部或部分文本。

将 RichTextBox 控件绑定到 Data 控件,可以处理 Microsoft Access 数据库的 Memo 字段,或者其它数据库中大型的文本字段(比如 SQL 服务器中的 TEXT 数据类型)。

在运行时,用 OLEObject 集合的 Add 方法,将嵌入对象,比如位图、图标、应用程序图标,加到该控件中。在设计时或运行时,可以拖放任何嵌入对象到控件中,包括文档,比如 Microsoft Excel 的电子表格和 Microsoft Word 文档等。

在设计时设置滚动条

按照缺省规定,RichTextBox 没有滚动条。在运行时,如果在该控件中装入了较大的文件,最终用户就不能看到文件的全部内容了。为使用户能够方便地进行滚动,可将其 ScrollBars 属性设置为 1(水平的)、2(竖直的)或 3(两个都有)。这必须在设计时完成,因为 ScrollBars 属性在运行时是只读的。

用 LoadFile 和 SaveFile 方法打开和保存文件

用 LoadFile 和 SaveFile 方法可以方便地为 RichTextBox 控件打开或保存 RTF 文件。要打开文件,可用 CommonDialog 控件提供路径名,如下所示:

Private Sub OpenFile()

'RichTextBox 控件的名称是“rtfData”。

'CommonDialog 名为“dlgOpenFile”。

'为文件名声明 String 变量。

'显示 “打开文件”对话框,

'并将变量设置为文件名。

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 编码,仅相关的文本在 RichTextBox 控件中将不会出现。

用 SelFontName、SelFontSize 和 SelFontColor 设置字体属性

要改变 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 控件的另一个特性是它可以创建有缩进、悬挂式缩进和项目符号的段落。这三种样式显示如下:

缩进和带项目符号的缩进 (rtf_3ind.bmp)

要使用 SelFontName、SelFontSize 和 SelFontColor 属性,最终用户必须选中一个或多个段落。在这里,假设用户只选中了第二段,创建缩进和悬挂式缩进的代码如下所示:

'假设该控件的名称是“rtfData”。

rtfData.SelIndent = .5

rtfdata.SelHangingIndent = 1.5

请注意用于设置 SelIndent、SelHangingIndent、BulletIndent 和其它属性的值,要依赖于 RichTextBox 控件的容器的 ScaleMode 属性。例如,如果 RichTextBox 控件的容器是 Form 对象,则将该 Form 对象的 ScaleMode 属性由 7(厘米)改为 1(缇)时,SelIndent 属性必须同时由 0.5(厘米)改为 283(缇)。这是因为一厘米 = 567 缇。

同时还要注意段落的 SelBullet 属性必须设置为 True,才能将该段设置为有项目符号的样式。

用 SelChange 事件通知属性的变化

要通告用户选中的任何文本的当前属性,可以使用 SelChange 事件。每当插入点改变,或者选中内容被改变时,均会产生该事件。下面的示例用 Toolbar 控件通告用户 SelBold 属性的变化。

Private Sub rtfData_SelChange()

'重新设置 Toolbar 的 Button 对象的

' Value 属性。该 Toolbar 控件的名称是

'“tlbRTF”。

'SelBold 返回 0、-1 或 Null。如果它为 Null

'则将其 Mi xedState 属性设置为 True。

Select Case rtfData.SelBold

Case 0 '不是粗体。

tlbRTF.Buttons("bold").Value = tbrUnpressed

Case -1 '粗体。

tlbRTF.Buttons("bold").Value = tbrPressed

Case Else '混合状态。

tlbRTF.Buttons("bold").Mi xedState = True

End Select

End Sub

用 SelPrint 方法打印 RichTextBox 的内容

要打印 RichTextBox 控件,可以使用 SelPrint 方法。该方法需要一个参数,即用来打印 RichTextBox 控件内容的 Printer 对象的 hDC 属性。如果用户选中了某些文本,则只打印选中的文本。如果没有选中任何文本,则打印该控件的所有内容。

下面的代码,在用户单击 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

详细信息 有关使用 CommonDialog 控件的详细说明,请参阅《Visual Basic程序员指南》中的“使用 CommonDialog 控件”。

在控件中显示嵌入对象

在运行时,最终用户可拖动任何嵌入对象,并放入 RichTextBox 控件。在控件中可以嵌入两种对象:以图标形式显示的对象,和以数据形式显示的对象。下图显示了具有嵌入文件对象的 RichTextBox,作为第一种类型的示例。

单击后,嵌入的对象就会象预料的那样,即启动与该文件相关联的应用程序。当控件中的数据以 RTF 文件形式保存时(用 SaveFile 方法),嵌入对象中的信息也将被保存。

然而,如果最终用户在该控件中嵌入位图,则将显示该位图,而不是它的图标,如下所示:

单击该位图将启动 Paint 应用程序,使最终用户能够编辑该位图。

用 OLEObjects 集合的 Add 方法添加嵌入对象

用 OLEObject 集合的 Add 方法可将嵌入对象以编程方式加入该控件,如下所示:

Private Sub cmdAddObject_Click()

'将蝴蝶位图添加到该控件中。

RichTextBox1.OLEObjects.Add , , , "bfly.bmp"

End Sub

在运行时,可用 Add、Clear 和 Remove 方法,动态地向该控件中充填嵌入对象。

vb. net是面向对象的编程语言是对吗?

VB.net

相对VB出现巨大变化的是语意,从运行于基于COM的deterministic,

reference-counted的引擎之上的编程环境,转变为全面面向对象的基于.NET

Framework的语言。.NET

Framework包括了CLR(使用通用垃圾收集机制和JIT编译引擎的虚拟机)和大量的类库。VB开发者进入VB.NET要面对新增的大量类库的问题。

上述变化表明了许多在运行及维护相关优化事宜下面的假定,一些VB6函数和库不再存在而其它的仍然可用,但是比不上.NET语言中自带的可替换的函数和库来得高效。即使它们可被编译,但大多从VB6转换而来的应用将需要一定程度上的重构(refactoring),以全面利用新语言的优点。在有关句法、应用调试、部署和术语等方面的变化,有大量的文档可以参考。

vb.net 2008 如何将指定的窗体截图并保存

INTOUCH自带的就有,打印屏幕的命令

自己写个时间条件运行那命令就可以了

PRINTSCREEN这个命令 具体怎么用 看下帮助

希望我的回答对你有所帮助

如有其他问题,可以继续追问,您的采纳是我前进的动力!

用VB.Net 编程时如何获得打印机的物理边距

网络上找到这个比较全面,你试一下,我记得以前也是这么设置的。

int GetDeviceCaps( HDC hdc, int nIndex);

其中,hdc用来指定设备环境句柄,nIndex用来指定要获取的参量索引,对于打印机而言,它常常需要下列的预定义值:

LOGPIXELSX 打印机水平分辨率

LOGPIXELSY 打印机垂直分辨率

PHYSICALWIDTH 打印纸的实际宽度

PHYSICALHEIGHT 打印纸的实际高度

PHYSICALOFFSETX 实际可打印区域的物理左边距

PHYSICALOFFSETY 实际可打印区域的物理上边距

下面的函数代码就是用来设置页边距,并且还计算页面的物理边距:

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);

// 计算一个设备单位等于多少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

// 若边距小于物理边距,则调整它们

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;

// 计算并调整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);

// 恢复原来的映射模式

}


标题名称:vb.nethdc的简单介绍
链接分享:http://cdxtjz.cn/article/hdjdjh.html

其他资讯