MFC 开机自启与系统托盘

来源:互联网 发布:淘宝美工都用什么软件 编辑:程序博客网 时间:2024/06/09 18:03
void CBastron20Dlg::OnClickedPowerboot(){HKEY hKey;LPCTSTR lpRun = L"Software\\Microsoft\\Windows\\CurrentVersion\\Run";if (ERROR_SUCCESS == RegOpenKeyEx(HKEY_LOCAL_MACHINE, lpRun, 0, KEY_WRITE, &hKey)){wchar_t pFileName[MAX_PATH] = { 0 };DWORD dwRet = GetModuleFileName(NULL, pFileName, MAX_PATH);if ((((CButton *)GetDlgItem(IDC_POWERBOOT))->GetCheck())){RegSetValueEx(hKey, L"Bastron", 0, REG_SZ, (BYTE *)pFileName, dwRet);RegCloseKey(hKey);}else{RegDeleteValue(hKey, L"Bastron");RegCloseKey(hKey);}}}void CBastron20Dlg::ToTray(){NOTIFYICONDATA nid;nid.cbSize = (DWORD)sizeof(NOTIFYICONDATA);nid.hWnd = this->m_hWnd;nid.uID = IDR_MAINFRAME;nid.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;nid.uCallbackMessage = WM_SHOWTASK;//自定义的消息名称nid.hIcon = LoadIcon(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDR_MAINFRAME));wcscpy_s(nid.szTip, L"Bastron"); //信息提示条Shell_NotifyIcon(NIM_ADD, &nid); //在托盘区添加图标//ShowWindow(SW_HIDE); //隐藏主窗口}LRESULT CBastron20Dlg::OnShowTask(WPARAM wParam, LPARAM lParam){if (WM_KILLFOCUS == wParam){int shen = 8;}if (WM_NCRBUTTONUP == wParam){int shen = 8;}if (wParam != IDR_MAINFRAME){return 1;}switch (lParam){case WM_RBUTTONUP://右键起来时弹出快捷菜单,这里只有一个“关闭”{  LPPOINT lpoint = new tagPOINT;  ::GetCursorPos(lpoint);//得到鼠标位置  CMenu menu;  menu.CreatePopupMenu();//声明一个弹出式菜单  menu.AppendMenu(MF_STRING, WM_SHOWDESKTOP, L"Show");  menu.AppendMenu(MF_STRING, WM_DESTROY, L"Close"); //增加菜单项“关闭”,点击则发送消息WM_DESTROY给主窗口(已隐藏),将程序结束。  this->SetForegroundWindow();  menu.TrackPopupMenu(TPM_LEFTALIGN, lpoint->x, lpoint->y, this); //确定弹出式菜单的位置  /*HMENU hmenu = */menu.Detach();  menu.DestroyMenu(); //资源回收  delete lpoint;} break;case WM_LBUTTONDBLCLK: //双击左键的处理{   this->ShowWindow(SW_SHOWNORMAL);//简单的显示主窗口完事儿} break;default: break;}return 0;}void CBastron20Dlg::DeleteTray(){NOTIFYICONDATA nid;nid.cbSize = (DWORD)sizeof(NOTIFYICONDATA);nid.hWnd = this->m_hWnd;nid.uID = IDR_MAINFRAME;nid.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;nid.uCallbackMessage = WM_SHOWTASK; //自定义的消息名称nid.hIcon = LoadIcon(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDR_MAINFRAME));wcscpy_s(nid.szTip, L"Bastron"); //信息提示条为“计划任务提醒”Shell_NotifyIcon(NIM_DELETE, &nid); //在托盘区删除图标}void CBastron20Dlg::OnDestroy(){CDialogEx::OnDestroy();DeleteTray();}void CBastron20Dlg::OnShowDesktop(){this->ShowWindow(SW_SHOWNORMAL);}

0 0