Copy・Cut・Paste・Clear <TOP>
F-BasicでのCopy・Cut・Paste・ClearをAPIで実行しています。
SendMessage ウィンドウにメッセージを送信
OpenClipboard クリップボードをオープン
EmptyClipboard クリップボードを空にする
CloseClipboard クリップボードをクローズ
'================================================================ '= Copy・Cut・Paste・Clear '= (CopyPaste.bas) '================================================================ #include "Windows.bi" ' ウィンドウにメッセージを送信 Declare Function Api_SendMessage& Lib "user32" Alias "SendMessageA" (ByVal hWnd&, ByVal wMsg&, ByVal wParam&, lParam As Any) ' クリップボードをオープン Declare Function Api_OpenClipboard& Lib "user32" Alias "OpenClipboard" (ByVal hWnd&) ' クリップボードを空にする Declare Function Api_EmptyClipboard& Lib "user32" Alias "EmptyClipboard" () ' クリップボードをクローズ Declare Function Api_CloseClipboard& Lib "user32" Alias "CloseClipboard" () #define WM_CUT &H300 '選択されているテキスト部分を削除し、そのテキストをCF_TEXTフォーマットでクリップボードにコピー #define WM_COPY &H301 'テキストボックス・コンボボックスの選択テキストをクリップボードにコピー #define WM_PASTE &H302 'クリップボードからテキストをコピーした #define WM_CLEAR &H303 'テキストボックス・コンボボックスの選択テキストを削除 Var Shared Edit1 As Object Var Shared Edit2 As Object Var Shared Button(3) As Object Edit1.Attach GetDlgItem("Edit1") : Edit1.SetFontSize 14 Edit2.Attach GetDlgItem("Edit2") : Edit2.SetFontSize 14 For i = 0 To 3 Button(i).Attach GetDlgItem("Button" & Trim$(Str$(i + 1))) : Button(i).SetFontSize 14 Next '================================================================ '= コピー '================================================================ Declare Sub Button1_on edecl () Sub Button1_on() Var Ret As Long 'Edit1内のテキストを全選択 Edit1.SetSelText 0, -1 'Edit1の選択されたテキストをコピー(Edit1.Copyに相当) Ret = Api_SendMessage(Edit1.GethWnd, WM_COPY, 0, ByVal 0) Edit1.SetSelText -1, -1 End Sub '================================================================ '= 切り取り '================================================================ Declare Sub Button2_on edecl () Sub Button2_on() Var Ret As Long 'Edit1内のテキストを全選択 Edit1.SetSelText 0, -1 'Edit1の選択されたテキストを切り取り(Edit1.Cutに相当) Ret = Api_SendMessage(Edit1.GethWnd, WM_CUT, 0, ByVal 0) Edit1.SetSelText -1, -1 End Sub '================================================================ '= 貼り付け '================================================================ Declare Sub Button3_on edecl () Sub Button3_on() Var Ret As Long 'Edit2をクリア Edit2.SetWindowtext "" 'Edit2に貼り付け Ret = Api_SendMessage(Edit2.GethWnd, WM_PASTE, 0, ByVal 0) End Sub '================================================================ '= クリア '================================================================ Declare Sub Button4_on edecl () Sub Button4_on() Var Ret As Long Edit2.SetSelText 0, -1 'Edit2をクリア(Edit2.Clearに相当) Ret = Api_SendMessage(Edit2.GethWnd, WM_CLEAR, 0, ByVal 0) 'クリップボード内のデータをクリア(CleaeCbに相当) Ret = Api_OpenClipBoard(GethWnd) Ret = Api_EmptyClipBoard() Ret = Api_CloseClipboard() End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End