在本章要掌握的函数:
SetWindowLong(HWND hWnd,int nIndex,LONG dwNewLong);
函数实现的功能是,改变窗口句柄的属性
hWnd 是窗口句柄
nIndex 改变窗口句柄的性质,例如可以改变窗口过程函数,窗口风格,。。。
dwNewLong 改变后的性质
返回的是当前(也就是没有改变的性质)
//这是函数实现的实例
WNDPROC prevProc;
LRESULT CALLBACK NewEditProc(
HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam)
{
if (uMsg == WM_CHAR && wParam == 0x0D)
{
::SetFocus(GetNextWindow(hwnd,GW_HWNDNEXT));//注意NewEditProc不是一个类的方法,所以不能在里面的调用不能使用类的方法
return 1;
}
else
{
return prevProc(hwnd,uMsg,wParam,lParam);
}
}
BOOL Ctext::OnInitDialog()
{
CDialog::OnInitDialog();
prevProc = (WNDPROC)SetWindowLong(GetDlgItem(IDC_EDIT1)->m_hWnd,GWL_WNDPROC,(LONG)NewEditProc);
// TODO: Add extra initialization here
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
1270

被折叠的 条评论
为什么被折叠?



