• 全部
...

如何将一个应用窗口最小化后显示于windows任务栏的右下角?

ln1103 2001-07-11 12:19:42
我有一个图象界面的工具性质的应用,我想将之最小化后显示后将应用图标显示在windows任务栏的右下角,应该怎么做?
...全文
给本帖投票
462 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
dgcat_6 2001-07-11
  • 打赏
  • 举报
回复
你需要对任务栏右下脚操作。即托盘操作!并且拦截系统消息最小化和关闭操作!
给你段大致代码:
void CMainFrame::OnSysCommand(UINT nID, LPARAM lParam)
{
switch(nID)
{
case SC_MINIMIZE:
{
HICON hicon=LoadIcon(AfxGetApp()->m_hInstance,MAKEINTRESOURCE(IDR_MAINFRAME));
HWND hwnd=this->GetSafeHwnd();
//当最小化时,添加图标到任务栏右下脚
m_Tray.TaskBarAddIcon(hwnd,IDR_NOTIFYICON,hicon,"好好学习!");
//this->ShowWindow(SW_HIDE);
break;
}

case SC_CLOSE:
{
HWND hwnd=this->GetSafeHwnd();
//关闭时,去掉图标
m_Tray.TaskBarDeleteIcon(hwnd,IDR_NOTIFYICON);
break;
}
default :
CFrameWnd::OnSysCommand(nID, lParam);
}
}
//其中m_Tray是封装托盘区域操作类的一个实例。
你需要了解NOTIFYICONDATA结构和Shell_NotifyIcon()的用法。你搜索一下MSDN或者CSDN论坛。应该可以找到你的答案
microstar 2001-07-11
  • 打赏
  • 举报
回复
1.首先,要使程序的主窗口不可见,并且不在任务栏上出现任务按钮,要做到这两点,需分别设置主边框窗口的风格和扩展风格:
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
cs.style =WS_POPUP;//使主窗口不可见
cs.dwExStyle |=WS_EX_TOOLWINDOW;//不显示任务按钮
return CFrameWnd::PreCreateWindow(cs);
}
2.其次,利用系统函数Shell_NotifyIcon将一个图标显示在任务栏的通告区中。该函数的原型为:
WINSHELLAPI BOOL WINAPI Shell_NotifyIcon(
DWORD dwMessage,
PNOTIFYICONDATA pnid
);
3.int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{

NOTIFYICONDATA tnd;
tnd.cbSize=sizeof(NOTIFYICONDATA);
tnd.hWnd=this->m_hWnd;
tnd.uID=IDR_MAINFRAME;
tnd.uFlags=NIF_MESSAGE|NIF_ICON|NIF_TIP;
tnd.uCallbackMessage=WM_LIBEN;
tnd.hIcon=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME));
strcpy(tnd.szTip,"提示信息");
Shell_NotifyIcon(NIM_ADD,&tnd);

}
在调用该函数之前,需要确定其参数的取值,其中之一为一个具有NOTIFYICONDATA类型的结构。
4.void CMainFrame::OnLiben(WPARAM wParam,LPARAM lParam)
{
UINT uID;//发出该消息的图标的ID
UINT uMouseMsg;//鼠标动作
POINT pt;
uID=(UINT) wParam;
uMouseMsg=(UINT) lParam;
if(uMouseMsg==WM_RBUTTONDOWN)//如果是单击右键
{
switch(uID)
{
case IDR_MAINFRAME://如果是我们的图标
GetCursorPos(&pt);//取得鼠标位置
…//执行相应操作
break;

default:

}
5.afx_msg void OnLiben(WPARAM wParam,LPARAM lParam);
6.ON_MESSAGE(WM_LIBEN,OnLiben)
好了试试看。
ln1103 2001-07-11
  • 打赏
  • 举报
回复
谢谢大家,我已经搞定了。不过怎样给分给你们?
neomeng 2001-07-11
  • 打赏
  • 举报
回复
呵呵,我有一个托盘类,很好用的,你的email?

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧

手机看
关注公众号

关注公众号

客服 返回
顶部