by 7 » 2006年9月01日(金) 20:16
自分はこうしています [ここをクリックすると内容が表示されます] [ここをクリックすると非表示にします]コード: 全て選択
Dim hEdit As HWND
Dim pWndProc As LONG_PTR
Function MainEditProc(ByVal hWnd As HWND,ByVal dwMsg As DWord,ByVal wParam As WPARAM,ByVal lParam As LPARAM) As DWord
Select Case dwMsg
Case WM_KEYDOWN
If (GetAsyncKeyState(VK_CONTROL) And &H8000) Then
Select Case wParam
Case 65 'Ctrl+A
OutputDebugString("Ctrl+Aが押されました。")
End Select
End If
End Select
MainEditProc=CallWindowProc(pWndProc As VoidPtr,hWnd,dwMsg,wParam,lParam)
End Function
Sub MainWnd_Destroy()
SetWindowLong(hEdit,GWL_WNDPROC,pWndProc)
End Sub
Sub MainWnd_Create(ByRef CreateStruct As CREATESTRUCT)
hEdit=GetDlgItem(hMainWnd,EditBox1)
pWndProc=SetWindowLong(hEdit,GWL_WNDPROC,AddressOf(MainEditProc) As Long)
End Sub
こういう技術、なんて言うんですっけ???
最近全くプログラミングしないので用語も忘れてしまいました...。
過去ログ検索中......
サブクラス化!?
[hide=自分はこうしています][code]Dim hEdit As HWND
Dim pWndProc As LONG_PTR
Function MainEditProc(ByVal hWnd As HWND,ByVal dwMsg As DWord,ByVal wParam As WPARAM,ByVal lParam As LPARAM) As DWord
Select Case dwMsg
Case WM_KEYDOWN
If (GetAsyncKeyState(VK_CONTROL) And &H8000) Then
Select Case wParam
Case 65 'Ctrl+A
OutputDebugString("Ctrl+Aが押されました。")
End Select
End If
End Select
MainEditProc=CallWindowProc(pWndProc As VoidPtr,hWnd,dwMsg,wParam,lParam)
End Function
Sub MainWnd_Destroy()
SetWindowLong(hEdit,GWL_WNDPROC,pWndProc)
End Sub
Sub MainWnd_Create(ByRef CreateStruct As CREATESTRUCT)
hEdit=GetDlgItem(hMainWnd,EditBox1)
pWndProc=SetWindowLong(hEdit,GWL_WNDPROC,AddressOf(MainEditProc) As Long)
End Sub[/code][/hide]
こういう技術、なんて言うんですっけ???
最近全くプログラミングしないので用語も忘れてしまいました...。
[b]過去ログ検索中......[/b]
サブクラス化!?