孙鑫第7章 7.6 输入焦点的传递

在本章要掌握的函数:

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
 }

 

你可能感兴趣的:(vc++学习)