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);
}
MFC 开机自启与系统托盘
最新推荐文章于 2022-09-20 09:47:48 发布