CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

【时钟显示】将图标显示在系统时间的位置

楼主ooKid(网络闲人)2002-03-01 14:33:20 在 VC/MFC / 基础类 提问

可能问题有一些太不着边际了:  
   
  我想自己做一个时钟显示程序,放在系统托盘处,替换掉老掉牙的系统时间,但是我不能控制我的图标显示的位置【比如始终在最前或最后】。  
   
  问题:  
  我如何才能将我的程序图标放置在系统托盘的最右(将系统时间显示先去掉)?  
  或者:  
  我如何才能取得系统时间显示的控制?  
   
  给点思路也行呀! 问题点数:100、回复次数:19Top

1 楼eion(那个谁)回复于 2002-03-01 14:49:32 得分 2

我   upTop

2 楼40Star(斯文、大方、有前途)回复于 2002-03-01 14:56:24 得分 2

强烈关注!!!Top

3 楼kook(疯子)回复于 2002-03-01 14:59:55 得分 2

有点意思,不过好象没什么实际意义Top

4 楼ma811(马头)回复于 2002-03-01 15:01:08 得分 2

用FindWindow和FindWindowEx找到下面托盘的HWND,之后...Top

5 楼xiaotao0432(白开水)回复于 2002-03-01 15:07:05 得分 2

学习Top

6 楼niu_a(阿牛)回复于 2002-03-01 15:20:04 得分 30

那是一个控制面板扩展程序,  
  TimeData.cpl,用自己的程序替换它Top

7 楼fireseed(【VC无敌,英明神武,千秋万代,一统江湖!】—奶油狗)回复于 2002-03-01 15:49:24 得分 5

自创源码如下!!  
  #include   <afxwin.h>  
   
  #define   IDC_EXIT   100  
  #define   WM_NOTIFYICON   101  
  #define   ID_MYNOTIFYICON   102  
  #define   IDW_MAINWND   0  
   
  class   CFashionApp   :public   CWinApp  
  {  
  public:  
  virtual   BOOL   InitInstance();  
  ~CFashionApp();  
  public:  
  NOTIFYICONDATA   m_tnid;//////////////////////这里定义  
   
  };  
   
  class   CFashionWnd:public   CWnd  
  {  
  public:  
  CFashionWnd();  
   
  CMenu   m_PopMenu;  
   
  protected:  
   
  void   OnNotifyIcon(WPARAM   wParam,   LPARAM   lParam);//定义消息处理函数  
  void   OnExit();//定义菜单消息函数-退出  
  DECLARE_MESSAGE_MAP()  
  };  
   
  BEGIN_MESSAGE_MAP(CFashionWnd,   CWnd)  
  ON_MESSAGE(WM_NOTIFYICON,   OnNotifyIcon)  
  ON_COMMAND(IDC_EXIT,   OnExit)  
  END_MESSAGE_MAP()  
   
   
  CFashionWnd::CFashionWnd()  
  {  
  CString   strMyClass=AfxRegisterWndClass(CS_HREDRAW|CS_DBLCLKS,  
  ::LoadCursor(::AfxGetInstanceHandle(),IDC_ARROW),  
  HBRUSH(COLOR_WINDOWFRAME),  
  ::LoadIcon(NULL,IDI_APPLICATION)  
  );  
   
  CreateEx(WS_EX_TOOLWINDOW|WS_EX_TOPMOST,  
  strMyClass,  
  _T("Creamdog"),  
  WS_SYSMENU|WS_THICKFRAME,  
  CRect(0,0,400,400),  
  NULL,  
  IDW_MAINWND);  
   
  //添加菜单  
  m_PopMenu.CreatePopupMenu();  
  m_PopMenu.AppendMenu(MF_STRING,IDC_EXIT,"Exit");  
  };  
   
  void   CFashionWnd::OnNotifyIcon(WPARAM   wParam,   LPARAM   lParam)  
  {  
  UINT   uID;  
  UINT   uMouseMsg;  
   
  uID   =   (UINT)   wParam;  
  uMouseMsg   =   (UINT)   lParam;  
   
  if(uMouseMsg   ==   WM_RBUTTONDOWN)  
  {  
  CPoint   point;  
   
  ::GetCursorPos(&point);  
   
  m_PopMenu.TrackPopupMenu(TPM_LEFTALIGN,point.x,point.y,this,NULL);  
  }  
   
  if(uMouseMsg   ==   WM_LBUTTONDOWN)  
  {  
  WINDOWPLACEMENT   wpm;  
  GetWindowPlacement(&wpm);  
  if(wpm.showCmd==SW_SHOWMINIMIZED)  
  ShowWindow(SW_RESTORE);  
  else  
  {  
  ShowWindow(SW_MINIMIZE);  
  ShowWindow(SW_HIDE);  
  }  
  }  
  }  
   
  void   CFashionWnd::OnExit()  
  {  
  PostQuitMessage(1);  
  }  
   
  CFashionApp::~CFashionApp()  
  {  
  Shell_NotifyIcon(NIM_DELETE,   &m_tnid);////////这里添加图标  
  }  
   
  BOOL   CFashionApp::InitInstance()  
  {  
  m_pMainWnd=new   CFashionWnd;  
   
  m_tnid.cbSize   =   sizeof(NOTIFYICONDATA);  
  m_tnid.hWnd   =   m_pMainWnd->GetSafeHwnd();  
  m_tnid.uID   =   ID_MYNOTIFYICON;  
  m_tnid.uFlags   =   NIF_MESSAGE   |   NIF_ICON   |   NIF_TIP;  
  m_tnid.uCallbackMessage   =   WM_NOTIFYICON;  
  m_tnid.hIcon   =   ::LoadIcon(NULL,IDI_APPLICATION);  
   
  strcpy(m_tnid.szTip,   "This   is   my   app!");  
   
  Shell_NotifyIcon(NIM_ADD,   &m_tnid);    
   
  m_pMainWnd->ShowWindow(SW_SHOWNORMAL);  
   
  return   TRUE;  
  }  
   
  CFashionApp   myApp;  
   
  有错与我联系  
  没错给我加分!!!Top

8 楼ruixp(锐剑)回复于 2002-03-01 15:53:17 得分 2

不错Top

9 楼ooKid(网络闲人)回复于 2002-03-01 16:12:41 得分 0

to     fireseed()   :  
   
  Sorry。你的程序不符合要求。  
  我的目的是要在系统时钟的地方显示图标【不是系统托盘的任意一区域显示】  
   
  我如何才能将我的程序图标放置在系统托盘的最右(将系统时间显示先去掉)?Top

10 楼40Star(斯文、大方、有前途)回复于 2002-03-01 16:15:13 得分 3

我见过老外编的程序就是可以  
  但我不会,继续UPTop

11 楼niu_a(阿牛)回复于 2002-03-01 16:19:20 得分 5

你把timedata.cpl用你的程序替换掉,就可以了Top

12 楼0313700000(^她^的@妈妈@不爱我)回复于 2002-03-01 16:22:40 得分 2

xuexiTop

13 楼ooKid(网络闲人)回复于 2002-03-01 16:30:34 得分 0

to     niu_a(阿牛):  
   
  我用的是Windows2000,   找不到timedata.cpl文件Top

14 楼ooKid(网络闲人)回复于 2002-03-01 16:36:12 得分 0

原来是  
  timedate.cpl  
  不过我替换了,好像不管用  
  Top

15 楼ooKid(网络闲人)回复于 2002-03-01 16:38:07 得分 0

而且系统的timedate.cpl能运行【有界面】,而我的怎么没有?  
  cpl又是什么文件?请问Top

16 楼eion(那个谁)回复于 2002-03-01 17:03:35 得分 5

to   阿牛:  
  .cpl文件到底可以怎么做?VC可以写吗?如果可以又该怎么写?Top

17 楼kook(疯子)回复于 2002-03-01 17:23:52 得分 5

cpl就是DLL,只是输出为cpl文件而已,control.exe会自动调用(system目录下的cpl文件)Top

18 楼eion(那个谁)回复于 2002-03-01 18:06:26 得分 30

看来这个问题好难回答罗  
   
  首先要写DLL  
  其次要在DLL中显示对话框  
  再次要注册图标于系统托盘  
  然后.....  
  呵呵才能动手  
   
  还有..............  
  control调用cpl的接口函数应该是什么?参数呢?Top

19 楼eion(那个谁)回复于 2002-03-04 14:43:45 得分 3

没人接手了Top

20 楼ooKid(网络闲人)回复于 2002-03-04 15:44:26 得分 0

完了,看来没人帮我了——如eion(电离子)所说,问题太多了  
  在等等Top

相关问题

  • 图标显示?
  • 怎样在系统托盘上显示程序图标????
  • WinXP系统托盘图标不显示,怎么办?
  • 怎么样根据后缀显示系统图标?
  • 怎么按不同文件显示不同的图标?怎么取得系统图标?请教
  • 请问如何获取系统托盘上有显示那些图标,并如何隐藏相应的图标?
  • 如何做一个独立于系统的时钟显示在DateTimePicker控件中
  • win98系统图标
  • listctrl显示图标
  • 不显示图标

关键词

  • 系统
  • 函数
  • 文件
  • idc
  • ws
  • cfashionwnd
  • 图标
  • cpl
  • 托盘
  • 显示

得分解答快速导航

  • 帖主:ooKid
  • eion
  • 40Star
  • kook
  • ma811
  • xiaotao0432
  • niu_a
  • fireseed
  • ruixp
  • 40Star
  • niu_a
  • 0313700000
  • eion
  • kook
  • eion
  • eion

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo