高手帮个忙 急急!!!!!!!!!
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( );
}