你用自己的程序做一个拦截程序
我会在VB里的,在VC里 你自己看着班
Option ExplicitPrivate Sub Command1_Click()
Unload Me
End SubPrivate Sub Form_Load()
prevWndProc = GetWindowLong(Me.hWnd, GWL_WNDPROC)
SetWindowLong Me.hWnd, GWL_WNDPROC, AddressOf WndProc
End SubPrivate Sub Form_Unload(Cancel As Integer)
SetWindowLong Me.hWnd, GWL_WNDPROC, prevWndProc
End SubPrivate Sub Form_Paint()
ForeColor = vbBlue
Cls
Print
Print "我虽然没有标题区,但您可以在工作区按下鼠标,"
Print "然后把我拖曳到其它地方."
End Sub'模块里的代码
Option ExplicitPublic Const GWL_WNDPROC = (-4)Public Const WM_NCHITTEST = &H84
Public Const HTCLIENT = 1
Public Const HTCAPTION = 2Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As LongPublic prevWndProc As LongFunction WndProc(ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
WndProc = CallWindowProc(prevWndProc, hWnd, Msg, wParam, lParam)
'这里是关键,如果但是的非工作取得地方,然后法一个假消息window,然她认为是单击在窗体的标题区
If Msg = WM_NCHITTEST And WndProc = HTCLIENT Then
WndProc = HTCAPTION
End If
End Function
'这样回答你满意吗?
我会在VB里的,在VC里 你自己看着班
Option ExplicitPrivate Sub Command1_Click()
Unload Me
End SubPrivate Sub Form_Load()
prevWndProc = GetWindowLong(Me.hWnd, GWL_WNDPROC)
SetWindowLong Me.hWnd, GWL_WNDPROC, AddressOf WndProc
End SubPrivate Sub Form_Unload(Cancel As Integer)
SetWindowLong Me.hWnd, GWL_WNDPROC, prevWndProc
End SubPrivate Sub Form_Paint()
ForeColor = vbBlue
Cls
Print "我虽然没有标题区,但您可以在工作区按下鼠标,"
Print "然后把我拖曳到其它地方."
End Sub'模块里的代码
Option ExplicitPublic Const GWL_WNDPROC = (-4)Public Const WM_NCHITTEST = &H84
Public Const HTCLIENT = 1
Public Const HTCAPTION = 2Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As LongPublic prevWndProc As LongFunction WndProc(ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
WndProc = CallWindowProc(prevWndProc, hWnd, Msg, wParam, lParam)
'这里是关键,如果但是的非工作取得地方,然后法一个假消息window,然她认为是单击在窗体的标题区
If Msg = WM_NCHITTEST And WndProc = HTCLIENT Then
WndProc = HTCAPTION
End If
End Function
'这样回答你满意吗?
解决方案 »
- 调用DLL函数的问题
- 有谁实现过双向对等FTP服务来实现小型企业的分布式,弱实时的双向信息交换?
- 如何在CPropertyPage中使用UPDATE_COMMAND_UI消息
- 初学:有些网址后面有?referer_id= 123等是干什么用的
- SDK中的TOOLTIP controls如何响应鼠标消息???
- 如何在dialog上画图?
- 急问:算法分析的题目
- 在ADO中,如何记录集的空值?
- DllHost.exe 和 InetInfo.exe 的内存问题。
- 怎样得到系统的缺省字体?
- 系统托盘的右键菜单怎么做出来??
- 能不能让整个CListCtrl所有的ITem被选中的时候就像编辑框一样,不是单独的选中某个Item而已??
void CMyView::OnMyCreateframe()
{
CFrameWnd* pFrameWnd = new CFrameWnd;
CRect myRect;
GetClientRect(myRect);
pFrameWnd->Create(NULL, "My Frame");
pFrameWnd->CalcWindowRect(&myRect, CWnd::adjustBorder);
pFrameWnd->MoveWindow(0, 0, myRect.Width(), myRect.Height());
pFrameWnd->ShowWindow(SW_SHOW);
}
'查一下msdn就可以知道啦
多谢!