先说明一下,按钮控件的消息有很多种,下面的列表是按钮发送的消息,其中用的比较多是BN_CLICKED和BN_SETFOCUS和BN_KILLFOUCS
/** User Button Notification Codes*/
#define BN_CLICKED 0
#define BN_PAINT 1
#define BN_HILITE 2
#define BN_UNHILITE 3
#define BN_DISABLE 4
#define BN_DOUBLECLICKED 5
#if(WINVER >= 0x0400)
#define BN_PUSHED BN_HILITE
#define BN_UNPUSHED BN_UNHILITE
#define BN_DBLCLK BN_DOUBLECLICKED
#define BN_SETFOCUS 6
#define BN_KILLFOCUS 7
#endif /* WINVER >= 0x0400 */
下面的实例是说明
case BN_CLICKED:
//MessageBox(hWnd,TEXT(“按钮1被按下”),TEXT(“测试”),MB_OK);
SendMessage(hWndEdit1,WM_CLEAR,0,0);
SendMessage(hWndEdit2,WM_CLEAR,0,0);
break;
case BN_SETFOCUS:
MessageBox(hWnd,TEXT(“按钮1得到焦点”),TEXT(“测试”),MB_OK);
break;
case BN_KILLFOCUS:
MessageBox(hWnd,TEXT(“按钮1失去焦点”),TEXT(“测试”),MB_OK);
break;
完整的例子如下:
#include <Windows.h>
#include "resource.h"INT_PTR CALLBACK DialogProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
{BOOL bRet = true;static HWND hWndEdit1 = NULL;static HWND hWndEdit2 = NULL;TCHAR pszBuffer[1024];switch(uMsg){case WM_CLOSE:EndDialog(hWnd,0);break;case WM_COMMAND:hWndEdit1 = GetDlgItem(hWnd,IDC_EDIT1);hWndEdit2 = GetDlgItem(hWnd,IDC_EDIT2);switch(LOWORD(wParam)){case IDC_BUTTON1:switch(HIWORD(wParam)){case BN_CLICKED://MessageBox(hWnd,TEXT("按钮1被按下"),TEXT("测试"),MB_OK);SendMessage(hWndEdit1,WM_CLEAR,0,0);SendMessage(hWndEdit2,WM_CLEAR,0,0);break;case BN_SETFOCUS:MessageBox(hWnd,TEXT("按钮1得到焦点"),TEXT("测试"),MB_OK);break;case BN_KILLFOCUS:MessageBox(hWnd,TEXT("按钮1失去焦点"),TEXT("测试"),MB_OK);break;}break;case IDC_EDIT1:switch(HIWORD(wParam)){case EN_MAXTEXT:break;case EN_UPDATE:GetWindowText(hWndEdit1,pszBuffer,1024);SetWindowText(hWndEdit2,pszBuffer);break;}break;case IDC_BUTTON2:switch(HIWORD(wParam)){case BN_CLICKED:SendMessage(hWndEdit1,WM_COPY,0,0);break;}break;case IDC_BUTTON3:switch(HIWORD(wParam)){case BN_CLICKED:SendMessage(hWndEdit2,WM_PASTE,0,0);break;}break;case IDC_BUTTON4:GetWindowText(hWndEdit1,pszBuffer,1024);MessageBox(hWnd,pszBuffer,TEXT("测试"),MB_OK);break;case IDC_BUTTON5:SetWindowText(hWndEdit2,TEXT("单于大爷"));break;default:return DefWindowProc(hWnd,uMsg,wParam,lParam);}break;default:bRet = FALSE;return bRet;}return bRet;
}int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{DialogBox(hInstance,MAKEINTRESOURCE(IDD_MAIN),NULL,DialogProc);return 0;
}















