當前位置:編程學習大全網 - 源碼下載 - 幫我用VB制作壹個記事本應用程序

幫我用VB制作壹個記事本應用程序

本人寫的:

‘模塊中

Public UndoStack As New Collection

Public RedoStack As New Collection

'設置窗口置頂

Public Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long

'初始化:SetWindowPos,設置窗體總在最前面所需要的常量

Private Const SWP_NOSIZE = &H1

Private Const SWP_NOMOVE = &H2

Private Const SWP_NOZORDER = &H4

Private Const SWP_NOREDRAW = &H8

Private Const SWP_NOACTIVATE = &H10

Private Const SWP_FRAMECHANGED = &H20

Private Const SWP_SHOWWINDOW = &H40

Private Const SWP_NOCOPYBITS = &H80

Private Const SWP_NOOWNERZORDER = &H200

Private Const SWP_DRAWFRAME = SWP_FRAMECHANGED

Private Const SWP_NOREPOSITION = SWP_NOOWNERZORDER

Private Const HWND_TOP = 0

Private Const HWND_BOTTOM = 1

Private Const HWND_TOPMOST = -1

Private Const HWND_NOTOPMOST = -2

'設定窗體位居最前面的過程

Public Sub SetOnTop(frm As Object, bSetting As Boolean)

If bSetting Then

'將窗體設置成總在最前

SetWindowPos Form1.hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE

Else

'取消窗體總在最前設置

SetWindowPos Form1.hwnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE

End If

End Sub

'窗口中

Option Explicit

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

Private Const EM_CANUNDO = &HC6

Private Const EM_UNDO = &HC7

Dim rtbUndoStack() As String '撤銷堆棧

Dim rtbRedoStack() As String '恢復堆棧

Dim bChg As Boolean '記錄富文本框內容是否發生變化

Dim warning As Long

Private Sub Form_Load()

UndoStack.Add MainTxtBox.Text

End Sub

Private Sub mmuAbout_Click()

MsgBox "Copyright by 南瓜頭QQ:690936288"

End Sub

Private Sub mmuCopy_Click()

Clipboard.Clear

Clipboard.SetText MainTxtBox.SelText

End Sub

Private Sub mmuCut_Click()

Clipboard.Clear

Clipboard.SetText MainTxtBox.SelText

MainTxtBox.SelText = ""

End Sub

Private Sub mmuDel_Click()

MainTxtBox.SelText = ""

End Sub

Private Sub mmuExit_Click()

Unload Me

End Sub

Private Sub mmuFont_Click()

On Error Resume Next

comDlg.Flags = &H3 Or &H1 Or &H2 Or &H100

comDlg.Action = 4

MainTxtBox.Font.Name = comDlg.FontName

MainTxtBox.Font.Size = comDlg.FontSize

MainTxtBox.Font.Bold = comDlg.FontBold

MainTxtBox.Font.Italic = comDlg.FontItalic

MainTxtBox.Font.Underline = comDlg.FontUnderline

MainTxtBox.SelColor = comDlg.Color

End Sub

Private Sub mmuNew_Click()

warning = MsgBox("當前的文檔將會丟失,您確認要新建文檔嗎?", vbOKCancel, "Warning!")

'warning

If warning = vbCancel Then

Else

If warning = vbOK Then

MainTxtBox.Text = ""

End If

End If

End Sub

Private Sub mmuOpen_Click()

On Error GoTo non

warning = MsgBox("當前的文檔將會丟失,您確認要打開新的文檔嗎?", vbOKCancel, "Warning!")

'warning

If warning = vbCancel Then

Else

If warning = vbOK Then

comDlg.Filter = "Text files|*.txt|WORD Files (*.doc)|*.doc|HTML Files (*.html)|*.html|All Files (*.*)|*.*"

comDlg.ShowOpen

MainTxtBox.LoadFile comDlg.FileName, rtfText

End If

End If

non:

End Sub

Private Sub mmuPaste_Click()

MainTxtBox.SelText = Clipboard.GetText(1)

End Sub

Private Sub mmuRedo_Click()

If RedoStack.Count > 0 Then

UndoStack.Add RedoStack(RedoStack.Count)

RedoStack.Remove RedoStack.Count

MainTxtBox.Text = UndoStack(UndoStack.Count)

End If

End Sub

Private Sub mmuSave_Click()

On Error Resume Next

comDlg.FileName = ""

comDlg.ShowSave

If comDlg.FileName = "" Then Exit Sub

Open comDlg.FileName For Output As #1

Print #1, MainTxtBox.Text

Close #1

MsgBox "保存完畢!", vbOKOnly, "保存文檔"

End Sub

Private Sub mmuSelectAll_Click()

MainTxtBox.SelStart = 0

MainTxtBox.SelLength = Len(MainTxtBox.Text)

End Sub

Private Sub mmuStatusBar_Click()

If mmuStatusBar.Checked Then

StatusBar1.Visible = False

mmuStatusBar.Checked = False

Else

StatusBar1.Visible = True

mmuStatusBar.Checked = True

End If

End Sub

Private Sub mmuUndo_Click()

'撤銷

If UndoStack.Count <= 1 Then Exit Sub

RedoStack.Add UndoStack(UndoStack.Count)

UndoStack.Remove UndoStack.Count

MainTxtBox.Text = UndoStack(UndoStack.Count)

End Sub

'設置彈出式菜單(即在編輯框中單擊鼠標右鍵時彈出的動態菜單)

Private Sub MainTxtBox_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)

If Button = 2 Then

PopupMenu mmuEdit, vbPopupMenuLeftAlign

Else

Exit Sub

End If

End Sub

Private Sub MainTxtBox_Change()

If UndoStack(UndoStack.Count) <> MainTxtBox.Text Then

UndoStack.Add MainTxtBox.Text

If UndoStack.Count > 100 Then

UndoStack.Remove 1

End If

If RedoStack.Count > 0 Then

Set RedoStack = New Collection

'Debug.Print "清空Redo堆棧 " & Time

End If

End If

End Sub

Private Sub mmuWindowOnTop_Click()

If mmuWindowOnTop.Checked Then

SetOnTop Form1, False

mmuWindowOnTop.Checked = False

Else

SetOnTop Form1, True

mmuWindowOnTop.Checked = True

End If

End Sub

  • 上一篇:微信炒股如何?
  • 下一篇:墨香源代碼
  • copyright 2024編程學習大全網