//创建了一个按钮,并响应了点击消息//问如何响应鼠标移动到按钮上的消息,比如当鼠标移到按钮上,我就把鼠标样式换一下//谢谢,请赐教
LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
     HDC         hdc ;
     PAINTSTRUCT ps ;
     RECT        rect ;
 static HINSTANCE hInstance ;
 static HWND hbtnWnd1;     
     switch (message)
     {
     //case WM_CREATE:
 //PlaySound (TEXT ("Windows XP 关机.wav"), NULL, SND_FILENAME | SND_ASYNC) ;
 
 case WM_CREATE :
 hInstance = ((LPCREATESTRUCT) lParam)->hInstance ;
 
 hbtnWnd1=CreateWindow(
 "button",  //这里设定按钮的类型为button,其它类型有静态控件static,
 //滚动条控件scrollbar,编辑框控件edit,列表框控件listbox
 
 "BS_BOTTOM",   //这里设定按钮上显示的文本
 BS_BOTTOM|WS_CHILD|WS_VISIBLE,//BS_AUTOCHECKBOX
 //按钮风格,其中必须有WS_CHILD风格,因为是子窗口,
 //这里可以设定按钮的风格和窗口的风格参数
 10,         
 40,          //(10,40)为按钮的左上角的坐标
 160,        //按钮的宽度
 30,         //按钮的高度
 hwnd,       //父窗口句柄
 (HMENU)ID_PUSHME1,        //子窗口ID,即按钮ID
 hInstance,   //实例句柄  
 NULL);       //额外参数
 
 
 return 0 ;
 
     case WM_PAINT:
          hdc = BeginPaint (hwnd, &ps) ;          
          GetClientRect (hwnd, &rect) ;          
          DrawText (hdc, TEXT ("Hello, Windows 98!"), -1, &rect,
                    DT_SINGLELINE | DT_CENTER | DT_VCENTER) ;          
          EndPaint (hwnd, &ps) ;
          return 0 ;  
 case WM_COMMAND:
 switch (wParam)
 {
 case ID_PUSHME1:
 MessageBox(hwnd,"我被点了","提示",MB_OK|MB_ICONQUESTION);
 break;
 default:
 break;
 }
 return 0 ;
 case WM_MBUTTONUP:
 return 0;
 case WM_DESTROY:
 PostQuitMessage (0) ;
 return 0 ;
 
     }
     return DefWindowProc (hwnd, message, wParam, lParam) ;
}

解决方案 »

  1.   

    WM_MOUSEMOVE
    PtInRect
    LoadCursor
    SetCursor
      

  2.   

    WM_MOUSEMOVE 
    PtInRect 
    LoadCursor 
    SetCursor感觉不是很科学如果我按钮位置移动的话,这里代码就要改了,有没有别的消息啊
      

  3.   

    可以吧
    你用setclasslong(hbtnWnd1,GCL_HCURSOR,(LONG)LoadCursor(NULL,IDC_APPSTARTING))
    试试看
    就在CREATE中
      

  4.   

    窗口子类化,然后自定义,最方便
    用WM_MOVE消息相应
      

  5.   

    hbtnWnd1=CreateWindow( 
      "button",     //这里设定按钮的类型为button,其它类型有静态控件static, 
      //滚动条控件scrollbar,编辑框控件edit,列表框控件listbox 
      
      "BS_BOTTOM",       //这里设定按钮上显示的文本 
      BS_BOTTOM ¦WS_CHILD ¦WS_VISIBLE,//BS_AUTOCHECKBOX 
      //按钮风格,其中必须有WS_CHILD风格,因为是子窗口, 
      //这里可以设定按钮的风格和窗口的风格参数 
      10,                   
      40,                     //(10,40)为按钮的左上角的坐标 
      160,                 //按钮的宽度 
      30,                   //按钮的高度 
      hwnd,               //父窗口句柄 
      (HMENU)ID_PUSHME1,                 //子窗口ID,即按钮ID 
      hInstance,       //实例句柄     
      NULL);               //额外参数 
    setclasslong(hbtnWnd1,GCL_HCURSOR,(LONG)LoadCursor(NULL,IDC_APPSTARTING)) 
    反正MFC中肯定没问题