高手帮个忙 急急!!!!!!!!!

gxljb 2001-05-20 09:42:00
我模仿别人做了个任务栏的小程序,可是只能闪一次,在任务栏里只有一个空的小图标,没有任何东西,而且在Form里击了一次鼠标之后空的小图标才加到任务栏里,怎么样做到轮流显示两张图呢?下面是我的程序,喜欢那位高手指点一下小弟,谢谢
头文件:
#ifndef FlashUnit1H
#define FlashUnit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ExtCtrls.hpp>
#include <jpeg.hpp>
#include <ImgList.hpp>
//#include <graphics.hpp>
//#include "windef.h"
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
TTimer *Timer1;
TImage *Image1;
TImage *Image2;
void __fastcall Timer1Timer(TObject *Sender);
void __fastcall Image2MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y);
// void __fastcall Image1Click(TObject *Sender);

private: // User declarations
int n;
bool __fastcall TrayMessage(DWORD dwMessage);
HICON __fastcall IconHandle(void);
void __fastcall ToggleState(void);

public: // User declarations
char* MYWM_NOTIFY;
int i;
__fastcall TForm1(TComponent* Owner);

};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
//------------------------------
cpp文件:
#include <vcl.h>
#pragma hdrstop
//#include "graphics.h"
#include "FlashUnit1.h"

//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
//i=0;
}
//---------------------------------------------------------------------------
bool __fastcall TForm1::TrayMessage(DWORD dwMessage)
{

NOTIFYICONDATA tnd;
PSTR pszTip;
//pszTip=TipText();
pszTip="我成功了";
tnd.cbSize=sizeof(NOTIFYICONDATA);
//结构的大小
tnd.uCallbackMessage=WM_USER+100;
//自定义回调消息,在头文件中声明
tnd.hWnd=Form1->Handle;
//接受回调消息的窗口句柄
tnd.uID =0;
//图标标志号
tnd.uFlags= NIF_ICON | NIF_TIP| NIF_MESSAGE ;
//指定以下三个参数哪个包含有效数据

if (dwMessage == NIM_ADD)
{
tnd.hIcon =(HICON) IconHandle(); //取得图标句柄
if (pszTip)
{
lstrcpyn(tnd.szTip, pszTip,sizeof(tnd.szTip));
}
else
{
tnd.szTip[0] = '\0';
}
}
else
{
tnd.hIcon = NULL;
tnd.szTip[0] = '\0';
}
Shell_NotifyIcon(NIM_ADD, &tnd);
return (Shell_NotifyIcon(NIM_MODIFY, &tnd));
// return (Shell_NotifyIcon(dwMessage, &tnd));
}
//编制取得图标句柄的函数
HICON __fastcall TForm1::IconHandle(void)
{
//i++;
if (n==1)
{
return (Image1->Picture->Icon->Handle);
//return (ImageList1->GetIcon(1,));
//n是全局变量,1为显示Image1,0为Image2
}
else
{
// return (ImageList1->GetIcon(1,Ticon));
return(Image2->Picture->Icon->Handle);
}
}
//----------------------------------------
void __fastcall TForm1::ToggleState(void)
{
if (n==1) //n为图标句柄锁,是全局变量,
//1为显示Image1,0为Image2
{
n=n-1;
}
else
{
n=n+1;
}
TrayMessage(NIM_ADD);
//TrayMessage(NIM_MODIFY);
//发送图标变换消息
}
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
ToggleState( );
}
...全文
44 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
SSTS 2001-05-20
  • 打赏
  • 举报
回复
他要这样也没办法,那个空件确实挺好用的。。
夭夭 2001-05-20
  • 打赏
  • 举报
回复
有个trayicon的空件,要sample中
为何不用呢
SSTS 2001-05-20
  • 打赏
  • 举报
回复
你改一改就可以变幻的显示图标啦,,
不过最好用ImageList加图标。。
16X16
SSTS 2001-05-20
  • 打赏
  • 举报
回复
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{NOTIFYICONDATA nid;

nid.cbSize=sizeof(NOTIFYICONDATA);
nid.hWnd=Handle;
nid.uID=0;
nid.uFlags=NIF_ICON|NIF_TIP|NIF_MESSAGE;
nid.hIcon=LoadIcon(HInstance,"MAINICON");
nid.uCallbackMessage=WM_COMMAND;
lstrcpy(nid.szTip,"aabb");
Shell_NotifyIcon(NIM_ADD,&nid);
}

void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
NOTIFYICONDATA nid;
nid.cbSize=sizeof(NOTIFYICONDATA);
nid.hWnd=Handle;
nid.uID=0;
nid.uFlags=NULL;
Shell_NotifyIcon(NIM_DELETE,&nid);
}

void __fastcall TForm1::WMCOMMAND(TMessage &Message)
{

if(Message.LParam==WM_LBUTTONDBLCLK)
Form1->A1Click(Form1);
}

void __fastcall TForm1::X1Click(TObject *Sender)
{Form1->Close();
Application->Terminate();
}



//---------------------------------------------------------------------------
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ExtCtrls.hpp>
#include <Menus.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
TPopupMenu *menu;
TMenuItem *A1;
TMenuItem *N1;
TMenuItem *X1;
void __fastcall FormClose(TObject *Sender, TCloseAction &Action);
void __fastcall X1Click(TObject *Sender);
void __fastcall A1Click(TObject *Sender);
private: // User declarations
public: // User declarations
__fastcall TForm1(TComponent* Owner);
protected:
void __fastcall WMCOMMAND(TMessage &Message);
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(WM_COMMAND, TMessage,WMCOMMAND)
END_MESSAGE_MAP(TControl)
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif

13,874

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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