// 接受我的表白Dlg.cpp: 实现文件 // #include "pch.h" #include "framework.h" #include "接受我的表白.h" #include "接受我的表白Dlg.h" #include "afxdialogex.h" #ifdef _DEBUG #define new DEBUG_NEW #endif // C接受我的表白Dlg 对话框 C接受我的表白Dlg::C接受我的表白Dlg(CWnd* pParent /*=nullptr*/) : CDialogEx(IDD_MY_DIALOG, pParent) { m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); } void C接受我的表白Dlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); } BEGIN_MESSAGE_MAP(C接受我的表白Dlg, CDialogEx) // ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_BN_CLICKED(IDCANCEL, &C接受我的表白Dlg::OnBnClickedCancel) ON_WM_TIMER() ON_WM_GETMINMAXINFO() ON_BN_CLICKED(IDOK, &C接受我的表白Dlg::OnBnClickedOk) END_MESSAGE_MAP() // C接受我的表白Dlg 消息处理程序 BOOL C接受我的表白Dlg::OnInitDialog() { CDialogEx::OnInitDialog(); // 设置此对话框的图标。 当应用程序主窗口不是对话框时,框架将自动 // 执行此操作 SetIcon(m_hIcon, TRUE); // 设置大图标 SetIcon(m_hIcon, FALSE); // 设置小图标 // TODO: 在此添加额外的初始化代码 //SetTimer(WM_USER + 1, 1, 0); t1 = std::thread(([this](C接受我的表白Dlg* wnd, CWnd* cdlg) { srand(time(0)); int x, y; POINT p; CRect rt, rt1; while (b) { GetCursorPos(&p); cdlg->GetWindowRect(&rt); wnd->GetClientRect(rt1); if (rt.PtInRect(p)) { x = rand() % (rt1.Width() - rt.Width()); y = rand() % (rt1.Height() - rt.Height()); rt.MoveToXY(x, y); cdlg->MoveWindow(rt); } Sleep(1); } }), this, GetDlgItem(IDCANCEL)); return TRUE; // 除非将焦点设置到控件,否则返回 TRUE } // 如果向对话框添加最小化按钮,则需要下面的代码 // 来绘制该图标。 对于使用文档/视图模型的 MFC 应用程序, // 这将由框架自动完成。 //void C接受我的表白Dlg::OnPaint() //{ // if (IsIconic()) // { // CPaintDC dc(this); // 用于绘制的设备上下文 // // SendMessage(WM_ICONERASEBKGND, reinterpret_cast(dc.GetSafeHdc()), 0); // // 使图标在工作区矩形中居中 // int cxIcon = GetSystemMetrics(SM_CXICON); // int cyIcon = GetSystemMetrics(SM_CYICON); // CRect rect; // GetClientRect(&rect); // int x = (rect.Width() - cxIcon + 1) / 2; // int y = (rect.Height() - cyIcon + 1) / 2; // // 绘制图标 // dc.DrawIcon(x, y, m_hIcon); // } // else // { // CDialogEx::OnPaint(); // } //} //当用户拖动最小化窗口时系统调用此函数取得光标 //显示。 HCURSOR C接受我的表白Dlg::OnQueryDragIcon() { return static_cast(m_hIcon); } void C接受我的表白Dlg::OnBnClickedCancel() { // TODO: 在此添加控件通知处理程序代码 //CDialogEx::OnCancel(); MessageBox(_T("你是关不掉的"),_T("表白")); } void C接受我的表白Dlg::OnTimer(UINT_PTR nIDEvent) { // TODO: 在此添加消息处理程序代码和/或调用默认值 if (nIDEvent == WM_USER + 1) { } CDialogEx::OnTimer(nIDEvent); } void C接受我的表白Dlg::OnGetMinMaxInfo(MINMAXINFO* lpMMI) { // TODO: 在此添加消息处理程序代码和/或调用默认值 lpMMI->ptMinTrackSize.x = 580; //x宽度 lpMMI->ptMinTrackSize.y = 400; //y高度 CDialogEx::OnGetMinMaxInfo(lpMMI); } void C接受我的表白Dlg::OnBnClickedOk() { // TODO: 在此添加控件通知处理程序代码 b = 0; t1.join(); MessageBox(_T("从现在开始你就是我女朋友了!!!"), _T("表白成功")); CDialogEx::OnOK(); }