C++代码
#include<Windows.h>
#include<time.h>
#define TIME_ID 5
#define DOD_UMTEST (WM_USER+1)
LRESULT CALLBACK WindowsProc(HWND hWnd, UINT uMeg, WPARAM wParam, LPARAM lParam)
{
switch (uMeg)
{
case DOD_UMTEST:
{
KillTimer(hWnd, TIME_ID);
SetWindowText(hWnd, L"dodamce");
}
case WM_CREATE:
{
CREATESTRUCT* ipcs = (CREATESTRUCT*)lParam;
MessageBox(hWnd, L"WM_CREAT消息", L"提示", MB_OK);
SetTimer(hWnd, TIME_ID, 1000, NULL);
break;
}
case WM_CLOSE:
{
int result = MessageBox(hWnd, L"确定退出?", L"提示", MB_YESNO);
if (result == IDYES)
{
break;
}
else
{
ShowWindow(hWnd, SW_MINIMIZE);
return 1;
}
}
case WM_DESTROY:
PostQuitMessage(0);
break;
case WM_LBUTTONDOWN:
{
int x = LOWORD(lParam);
int y = HIWORD(lParam);
TCHAR chInfo[256] = { 0 };
wsprintf(chInfo, L"鼠标左键按下,x=%d y=%d", x, y);
if (wParam & MK_CONTROL)
{
wcscat(chInfo, L"按下ctrl键");
}
if (wParam & MK_MBUTTON)
{
wcscat(chInfo, L"按下中键");
}
SetWindowText(hWnd, chInfo);
break;
}
case WM_LBUTTONUP:
{
int x = LOWORD(lParam);
int y = HIWORD(lParam);
TCHAR chInfo[256] = { 0 };
wsprintf(chInfo, L"鼠标左键抬起,x=%d y=%d", x, y);
SetWindowText(hWnd, chInfo);
break;
}
case WM_RBUTTONDOWN:
{
int res = MessageBox(hWnd, L"右键退出吗?", L"提示", MB_YESNO);
if (IDYES == res)
{
PostQuitMessage(0);
}
break;
}
case WM_LBUTTONDBLCLK:
MessageBox(hWnd, L"双击", L"提示", MB_OK);
break;
case WM_MOUSEMOVE:
{
int x = LOWORD(lParam);
int y = HIWORD(lParam);
TCHAR chInfo[256] = { 0 };
wsprintf(chInfo, L"x=%d y=%d", x, y);
SetWindowText(hWnd, chInfo);
break;
}
case WM_KEYDOWN:
{
switch (wParam)
{
case VK_SPACE:
{
int x = 50; int y = 150;
SendMessage(hWnd, WM_LBUTTONDOWN, 0, MAKELONG(x, y));
break;
}
case VK_SHIFT:
{
HWND hWndNotPead = FindWindow(L"Notepad", NULL);
if (hWndNotPead == NULL)
{
MessageBox(hWnd, L"找不到记事本", L"提示", MB_OK);
return 1;
}
PostMessage(hWndNotPead, WM_CLOSE, 0, 0);
break;
}
case VK_ESCAPE:
{
break;
}
case VK_RETURN:
{
MessageBox(hWnd, L"取消时间", L"提示", MB_OK);
PostMessage(hWnd, DOD_UMTEST, 0, 0);
}
case VK_LEFT:
{
break;
}
case 0x30:
{
MessageBox(hWnd, L"0", L"提示", MB_OK);
break;
}
case VK_NUMPAD0:
break;
case 0x41:
{
MessageBox(hWnd, L"A", L"提示", MB_OK);
break;
}
}
break;
}
case WM_KEYUP:
break;
case WM_CHAR:
{
TCHAR Ch = (TCHAR)wParam;
TCHAR Buff[256] = { 0 };
wsprintf(Buff, L"字符:%c", Ch);
SetWindowText(hWnd, Buff);
break;
}
case WM_PAINT:
{
PAINTSTRUCT ps;
HDC hDC = BeginPaint(hWnd, &ps);
Ellipse(hDC, 10, 10, 200, 100);
EndPaint(hWnd,&ps);
break;
}
case WM_TIMER:
{
int TimeID = wParam;
switch (TimeID)
{
case TIME_ID:
{
time_t hour = time(NULL);
tm* year = localtime(&hour);
TCHAR Buff[256] = { 0 };
wsprintf(Buff, L"当前时间:%d-%d-%d %d:%d:%d", year->tm_year + 1900, year->tm_mon + 1, year->tm_mday
, year->tm_hour, year->tm_min, year->tm_sec);
SetWindowText(hWnd, Buff);
}
default:
break;
}
}
}
return DefWindowProc(hWnd, uMeg, wParam, lParam);
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPereInstance, LPSTR lpCmdLine, int nCmdShow)
{
WNDCLASS Box = { 0 };
Box.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS;
Box.lpfnWndProc = WindowsProc;
Box.cbClsExtra = 0;
Box.cbWndExtra = 0;
Box.hInstance = hInstance;
Box.hIcon = LoadIcon(NULL, IDI_EXCLAMATION);
Box.hCursor = LoadCursor(NULL, IDC_HAND);
Box.hbrBackground = CreateSolidBrush(RGB(255, 255, 0));
Box.lpszMenuName = NULL;
Box.lpszClassName = L"dodamce";
if (RegisterClass(&Box) == 0)
{
MessageBox(NULL, L"此程序不能运行在Windows NT上",L"提示",MB_OK|MB_ICONWARNING);
return -1;
}
HWND hwnd=CreateWindow(L"dodamce", L"20050441", WS_SYSMENU|WS_BORDER | WS_CAPTION | WS_MAXIMIZEBOX | WS_MINIMIZEBOX,
300, 200, 800, 600,NULL,NULL,hInstance,NULL);
if (hwnd == NULL)
{
MessageBox(NULL, L"窗口创建失败", L"提示", MB_OK);
return -2;
}
ShowWindow(hwnd, SW_SHOW);
UpdateWindow(hwnd);
MSG msg;
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
代码位置
GithUb位置
Gitee位置