有网友问我要pomodoro源码。事实上这个程序非常easy,仅仅是定时器,定时弹出置顶窗体。用c++builder6.0写。放一个TPopupMenu 右键菜单,一个TTrayIcon 一个托盘图标控件
。一个ImageList1图片列表,显示闪动图片。显示时间的标签。
源码例如以下,假设不用C++builder写,仅仅能參考代码自己写。
定时器推断时间到了就显示窗体。闪动图标。双击关闭窗体。
unit1.h

//---------------------------------------------------------------------------#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ExtCtrls.hpp>
#include "trayicon.h"
#include <Menus.hpp>
#include <ImgList.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:    // IDE-managed ComponentsTTimer *Timer1;TLabel *LMinute;TLabel *LMaohao;TLabel *LSecond;TTrayIcon *TrayIcon1;TPopupMenu *PopupMenu1;TMenuItem *N1;TImageList *ImageList1;TMenuItem *sinoxorg1;TMenuItem *N2;void __fastcall Timer1Timer(TObject *Sender);void __fastcall N1Click(TObject *Sender);void __fastcall FormDblClick(TObject *Sender);void __fastcall FormClose(TObject *Sender, TCloseAction &Action);void __fastcall TrayIcon1Restore(TObject *Sender);void __fastcall FormCreate(TObject *Sender);void __fastcall sinoxorg1Click(TObject *Sender);void __fastcall FormKeyPress(TObject *Sender, char &Key);
private:    // User declarations
public:     // User declarations__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif

unit1.cpp

//---------------------------------------------------------------------------#include <vcl.h>
#pragma hdrstop
#include   <registry.hpp>#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "trayicon"
#pragma resource "*.dfm"
TForm1 *Form1;
int iWaitTime=0;
int MaxWaitTime=25*60;
int MaxRestTime=5*60;
int RunState=0;
int IsOwnerPress=false;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner): TForm(Owner)
{RunState=0;IsOwnerPress=false;
}
//---------------------------------------------------------------------------void __fastcall TForm1::Timer1Timer(TObject *Sender)
{iWaitTime+=1;if (RunState==0){if ( iWaitTime>= MaxWaitTime){RunState=1;iWaitTime=0;}Color= clBtnFace;LMinute->Color= clBtnFace;LMaohao->Color= clBtnFace;LSecond->Color= clBtnFace;LMinute->Caption=iWaitTime/60;LSecond->Caption=iWaitTime%60;if ( iWaitTime%5==0){if (WindowState!=wsMinimized){WindowState=wsMinimized;Hide();}}IsOwnerPress=false;TrayIcon1->Animate=false;//randomize();//TrayIcon1->SetIconIndex(rand() % 3);TrayIcon1->SetIconIndex(1);}else{if ( iWaitTime>= MaxRestTime){RunState=0;iWaitTime=0;IsOwnerPress=false;}Color= clRed;LMinute->Color= clRed;LMaohao->Color= clRed;LSecond->Color= clRed;LMinute->Caption=iWaitTime/60;LSecond->Caption=iWaitTime%60;if(IsOwnerPress){if ( iWaitTime%5==0){if (WindowState!=wsMinimized){WindowState=wsMinimized;Hide();}}}else{if (WindowState==wsMinimized){WindowState=wsNormal;Show();}TrayIcon1->Animate=true;}}}
//---------------------------------------------------------------------------
void __fastcall TForm1::N1Click(TObject *Sender)
{Application->Terminate();}
//---------------------------------------------------------------------------void __fastcall TForm1::FormDblClick(TObject *Sender)
{WindowState=wsMinimized;Hide();IsOwnerPress=true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{WindowState=wsMinimized;Action=caNone;Hide();IsOwnerPress=true;}
//---------------------------------------------------------------------------
void __fastcall TForm1::TrayIcon1Restore(TObject *Sender)
{WindowState=wsNormal;Show();IsOwnerPress=false;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{TRegistry *Test;Test = new TRegistry ();Test->RootKey = HKEY_LOCAL_MACHINE;if(Test->OpenKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",false)){AnsiString sKeyval;sKeyval=Test->ReadString("sinox_pomodoro");if (sKeyval.Length()<=4)Test->WriteString("sinox_pomodoro",Application->ExeName);}delete Test  ;randomize();TrayIcon1->SetIconIndex(rand() % 3);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::sinoxorg1Click(TObject *Sender)
{
AnsiString   strurl= "http://www.sinox.org/";
ShellExecute(NULL,NULL, strurl.c_str(),NULL,NULL,SW_SHOW);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormKeyPress(TObject *Sender, char &Key)
{if (Key==VK_SPACE){WindowState=wsMinimized;Hide();IsOwnerPress=true;}
}
//---------------------------------------------------------------------------

unit1.dfm

object Form1: TForm1
Left = 192
Top = 114
Width = 870
Height = 145
BorderIcons = [biSystemMenu]
BorderStyle = bsSizeToolWin
Color = clBtnFace
DefaultMonitor = dmDesktop
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -24
Font.Name = ‘MS Sans Serif’
Font.Style = []
FormStyle = fsStayOnTop
OldCreateOrder = False
Position = poDesktopCenter
OnClose = FormClose
OnCreate = FormCreate
OnDblClick = FormDblClick
OnKeyPress = FormKeyPress
PixelsPerInch = 96
TextHeight = 29
object LMinute: TLabel
Left = 349
Top = 16
Width = 44
Height = 33
AutoSize = False
Caption = ‘0’
end
object LMaohao: TLabel
Left = 400
Top = 16
Width = 32
Height = 33
AutoSize = False
Caption = #65306
end
object LSecond: TLabel
Left = 440
Top = 16
Width = 57
Height = 33
AutoSize = False
Caption = ‘0’
end
object Timer1: TTimer
OnTimer = Timer1Timer
Left = 448
Top = 80
end
object TrayIcon1: TTrayIcon
Visible = True
Hint = #24037#20316#20241#24687#25552#37266#22120
PopupMenu = PopupMenu1
Hide = True
RestoreOn = imDoubleClick
PopupMenuOn = imRightClickUp
Icons = ImageList1
IconIndex = 1
OnRestore = TrayIcon1Restore
Left = 320
Top = 80
end
object PopupMenu1: TPopupMenu
Left = 88
Top = 72
object N1: TMenuItem
Caption = #20851#38381
OnClick = N1Click
end
object sinoxorg1: TMenuItem
Caption = #35775#38382’sinox.org’
OnClick = sinoxorg1Click
end
object N2: TMenuItem
Caption = #21452#20987’/’#25353#31354#26684#38544#34255
end
end
object ImageList1: TImageList
AllocBy = 3
Left = 200
Top = 80
Bitmap = {
494C010103000400040010001000FFFFFFFFFF00FFFFFFFFFFFFFFFF424D3600
0000000000003600000028000000400000001000000001002000000000000010
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000909E9003434
760032327C000405F60000000000000000000000000000000000000000003030
8300363671000909E900000000000000000000000000000000000909E9003434
760032327C000405F70000000000000000000000000000000000000000003030
8300363671000909E900000000000000000000000000000000000909E9003131
7700313177000505F60000000000000000000000000000000000000000003030
8300363671000909E90000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000002A2A95005354
21004E4C3100311D950029209E0031446E0031446E002B2597002F1B9A004E4C
31005354210030308300000000000000000000000000000000002A2A95005253
26004E4C2F0031218400282196002F4481002F4481002A2A95002F1A85004F4B
2F005253260030308300000000000000000000000000000000002A2A95005454
21004B4B33001D1D950021219E0042446E0042446E00252796001B1A9A004B4B
3300545421003030830000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000001012D600453D
54004B3E47002E95210011E9000009F9000009F9000011E9000027A819004844
4500473C4F001315CD00000000000000000000000000000000001112D500453D
4C004A3F3B002D96880013E5CD0008FAE90008FAE90010EBD30029A291004745
4100473C45001315CF00000000000000000000000000000000001212D6003C3C
50003C3C500095962000E4E50000FAFB0000FAFB0000E9EB0000A1A21A004445
45003C3C50001515CD0000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000003831
780019CE0B0000FF000000FF000000FF000000FF000000FF000000FF000012DC
07003A4064000000000000000000000000000000000000000000000000003731
720018D0BF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0011DD
D00039416C000300F80000000000000000000000000000000000000000003131
7700CED00A00FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000DCDD
0600414164000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000002510B50025BF
090000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF
00001CD302002D1B9D000000000000000000000000000000000025109F0023C0
A30000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FF
FF001AD5B8002C1C8D0000000000000000000000F8000000F8001010B500BFC0
0800FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF
0000D4D501001B1A9A0000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000003457570000FF
000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF
000000FF0000336F3F000900F80000000000000000000300F80033587A0002FF
F90000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FF
FF0000FFFF0032717B000800EB0000000000000000000000000057585600FFFF
0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF
0000FFFF00006F713E000000F8000000F8000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000F00EF002D8E2B0000FF
000000FF000000FF000000FF000019C1190021AD21000BE10B000BE10B000BE1
0B0000FF000027A819001400E20000000000000000000F00DB002B8B8E0000FF
FF0000FFFF0000FFFF0000FFFF001AC3B9001FAEAE000AE5E3000BDFDD000AE5
E30000FFFF0026AA9A001400CC0000000000000000000000EF008E8F2A00FFFF
0000FFFF0000FFFF0000FFFF0000C1C21700AEAE1F00E3E50A00DEDF0D00E2E4
0A00FFFF0000A8AA17000000E200000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000001100EA002A97240000FF
000000FF000000FF000000FF00002D8E2B003B663B001EB21E0021A721001EB2
1E0000FF000023B612001600DD0000000000000000001000D7002A97910000FF
FF0000FFFF0000FFFF0000FFFF002A979100396967001BB7B3001EADA8001BB7
B30000FFFF0022B8A6001600C60000000000000000000000EF0097992300FFFF
0000FFFF0000FFFF0000FFFF00009092290067693900B3B71B00A8AD1E00B3B7
1B00FFFF0000B6B811000000DD00000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000900F8002E7E380000FF
000000FF000000FF000000FF00000CE30C000FDF0F0000FF000000FF000000FF
000000FF00002A9724000F00EF0000000000000000000A00E7002D84880000FF
FF0000FFFF0000FFFF0000FFFF000AE5E3000AE5E30000FFFF0000FFFF0000FF
FF0000FFFF002A9791001000D7000000000000000000000000007E803600FFFF
0000FFFF0000FFFF0000FFFF0000E2E40A00E2E40A00FFFF0000FFFF0000FFFF
0000FFFF0000979923000000EF00000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000303083000DF8
000000FF000000FF000000FF00000FDF0F0012D6120000FF000000FF000000FF
000000FF0000314A6800000000000000000000000000000000002D348A000BF9
DF0000FFFF0000FFFF0000FFFF000DDFDE000FD7D60000FFFF0000FFFF0000FF
FF0007FFEC00304C82000000000000000000000000000000000030308300F8F9
0000FFFF0000FFFF0000FFFF0000DEDF0D00D6D70F00FFFF0000FFFF0000FFFF
0000FFFF00004A4C670000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000001C1DB7001C08CD002F82
340000FF000000FF000000FF00000FDF0F0012D6120000FF000000FF000000FF
00002A9D22001E07CB001C1DB70000000000000000001C1DB7001D07B4002D84
880000FFFF0000FFFF0000FFFF000DDFDE000FD7D60000FFFF0000FFFF0000FF
FF00299E93001D07B4001C1DB70000000000000000001E1EB2000707CD008384
3200FFFF0000FFFF0000FFFF0000DEDF0D00D6D70F00FFFF0000FFFF0000FFFF
00009D9E21000707CD001E1EB200000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000202F90043434F003F405800210B
C4002C89310009F9000000FF000008F7080009EE090000FF000008FF00002A9D
2200230FBB00343476004A4A3E000909E9000405F70043434F003F405800200B
AE002B8B8E0009FDE60000FFFF0004F4F30007EFED0000FFFF0007FFEC00299E
9300240FA700343476004A4A3D000909E9000505F60043434F00404058000B0B
C100898B3000FAFB0000FFFF0000EEEF0700EEEF0700FFFF0000FFFF00009D9E
21000F0FBB00313177004A4A3E000909E9000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000034347600535421003F40
5800210BC4002F4274002A9827001CBF13001CBF13002A9D2200314A6800210B
C4003A386A00535421003F4058000405F6000000000034347600535421003F40
5800200BAE0029428C00299E93001BC0B6001BC0B600299E93002E4F8700200B
AE003A386900535421003F4058000405F7000000000036367100545421004040
58000D0CC0004343730097992300BFC01100BFC011009D9E21004E4F67000B0B
C30038386A0054542100404058000505F6000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000909E90032327C003B3B
6400181AC100000000000F00EF003B277A003B277A001100EA00000000001012
D6003B3B6400343476000E0EDC0000000000000000000909E90032327C003B3B
6400181AC300000000000F00DB003B2866003B2866001000D700000000001112
D5003B3B6400343476000E0EDC0000000000000000000909E90032327C003B3B
64001A1AC100000000000000EF0028287900282879000000EF00000000001212
D6003B3B6400363671000E0EDC00000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000708EE000708EE0000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000708EF000708EF0000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000808EE000808EE0000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000424D3E000000000000003E000000
2800000040000000100000000100010000000000800000000000000000000000
000000000000000000000000FFFFFF00FFFFFFFFFFFF0000C3E3C3E3C3E30000
C003C003C0030000C003C003C0030000E007E003E0070000C003C00300030000
C0018001C00000008001800180010000800180018001000080018001C0010000
C003C003C0030000800180018001000000000000000000008000800080000000
8421842184210000FE7FFE7FFE7F0000}
end
end

能够建立一个项目后替换这三个文件。

转载于:https://www.cnblogs.com/yxysuanfa/p/7253447.html

pomodoro源码相关推荐

  1. 查看Hotspot源码,查看java各个版本源码的网站,如何查看jdk源码

    java开发必知必会之看源码,而看源码的第一步则是找到源码

  2. 【Golang源码分析】Go Web常用程序包gorilla/mux的使用与源码简析

    目录[阅读时间:约10分钟] 一.概述 二.对比: gorilla/mux与net/http DefaultServeMux 三.简单使用 四.源码简析 1.NewRouter函数 2.HandleF ...

  3. liunx上mysql源码安装mysql,搞定linux上MySQL编程(一):linux上源码安装MySQL

    [版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途] 1. 首先下载源码包: ftp://ftp.jaist.ac.jp/pub/m ...

  4. java调用clang编译的so_写Java这么久,JDK源码编译过没?编译JDK源码踩坑纪实

    好奇害死羊 很多小伙伴们做Java开发,天天写Java代码,肯定离不开Java基础环境:JDK,毕竟我们写好的Java代码也是跑在JVM虚拟机上. 一般来说,我们学Java之前,第一步就是安装JDK环 ...

  5. Go 源码里的这些 //go: 指令,go:linkname 你知道吗?

    原文地址: Go 源码里的这些 //go: 指令,你知道吗? 一文解惑 //go:linkname 指令

  6. 超详细中文预训练模型ERNIE使用指南-源码

    作者 | 高开远,上海交通大学,自然语言处理研究方向 最近在工作上处理的都是中文语料,也尝试了一些最近放出来的预训练模型(ERNIE,BERT-CHINESE,WWM-BERT-CHINESE),比对 ...

  7. 谷歌BERT预训练源码解析(二):模型构建

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/weixin_39470744/arti ...

  8. pytorch源码解析:Python层 pytorchmodule源码

    尝试使用了pytorch,相比其他深度学习框架,pytorch显得简洁易懂.花时间读了部分源码,主要结合简单例子带着问题阅读,不涉及源码中C拓展库的实现. 一个简单例子 实现单层softmax二分类, ...

  9. Bert系列(二)——源码解读之模型主体

    本篇文章主要是解读模型主体代码modeling.py.在阅读这篇文章之前希望读者们对bert的相关理论有一定的了解,尤其是transformer的结构原理,网上的资料很多,本文内容对原理部分就不做过多 ...

最新文章

  1. [转载]Tensorflow 的reduce_sum()函数的axis,keep_dim这些参数到底是什么意思?
  2. AngularJS之手动加载模块app和controller
  3. MIT自然语言处理第三讲:概率语言模型(第四、五、六部分)
  4. 数学建模第五节2020.5.8-17补
  5. 微服务设计、拆分原则
  6. tp5.0路由route.php,thinkphp5.1使用Route路由
  7. 几种人类设计的永动机,最后一个彻底服了!| 今日最佳
  8. 柔性体没有应变_灌注式半柔性道面材料抗冲击性能试验研究
  9. 【BZOJ1079】【codevs2428】着色方案,DP
  10. step与matlab的opc,wincc与matlab通过OPC通讯
  11. 计算机公共基础课程标准,计算机应用基础》的课程标准.doc
  12. Laravel-事件简单使用
  13. Centos-7修改yum源为国内的yum源
  14. 今天给一份 2022 互联网就业指南。
  15. Spring Boot
  16. 王道考研操作系统笔记(第一章)附:王道考研408所有PPT和思维导图
  17. 【关系抽取】深入浅出讲解实体关系抽取(介绍、常用算法)
  18. Microsoft Teams 深度使用体验——创建团队
  19. RTCP Inactivity导致掉话
  20. 【Shell编程】几个小案例

热门文章

  1. Asterisk内核 拾遗
  2. linux服务器开机提示f1,Dell的Linux服务器开机按F1解决方法
  3. B. Restore Modulo
  4. 谷歌地图谷歌地图_如何有效使用Google地图
  5. 地图php,php调用google地图
  6. JavaScript数组常用方法解析和深层次js数组扁平化
  7. 如何用Amira分割DICOM图像
  8. 阿里云-视频点播服务API调用
  9. 笔记本电脑清除BIOS密码
  10. 深入探索REST(1):如何设计好的RESTful API?