读书软件做自己的

类别:编程语言 点击:0 评论:0 推荐:
 

读书软件做自己的

   不知各位对E_book的读书效果是否感兴趣,它是用vb做的,其实在c++builder中也可以很轻松的实现类似效果。现在让我们step by step 吧!
  1)新建工程。单元存盘为"read.cpp"
  加入一个popupmenu; 窗体属性设置如下
  Name: MainForm;
  AutoScroll:false;
  BorderStyle:bsNone;
  Font:宋体,Fontsize:9;
  Position:poScreenCenter;
  PopupMenu:PopupMenu1;
   2)添加一panel,设置为:
  BevelOuter:bvNone;
  BorderStyle:bsSingle;
  Ctl3D:false;
  Name:Panel_1;
  Caption(置空);
  color:0x00CE9600; (淡蓝色)可自定
  3)a:把panel_1拉大(任意),在里面添加两个Panel,命名为Le_Pan,Ri_Pan;
  Le_Pan:
  Color:clBlack
  Align:alLeft;
  Width:20;
  其余同Panel_1;
  Ri_Pan:
  Align:alRight;
  其余同Le_Pan;
  b:
  在Panel_1内添加1个Label,设置属性为
  Transparent:true;
  Visible:false;
  选取Label1,敲Ctrl+c一次,再敲Ctrl+V 69次,(选70个Label)
  c:
  在Panel_1内添加两个Image控件,命名Back_Image,Face_Image;
  Back_Image的stretch 属性为true;
  Back_Image可以载入你想要的背景图片;
  4)添加一个Memo控件,属性为
  Name:Buf_Memo;
  Width:310;
  Visible:false;
  Enabled:false;
  Ctl3D:false;
  5)添加OpenDialog,OpenPictureDialog各一个;
  PopMenu1中建立3个按纽。
  1) caption:打开 Name:OpenN
  2) caption:背景 Name:BackN
  3) caption:退出 Name:CloseN;
  OpenDialog1的filter属性为:文本文件|*.txt|所有文件|*.*
  原理:先将文本文件内容装入memo中,再通过遍历label控件的办法把它显示出来。
  以下是单元文件:
  //
  #include
  #pragma hdrstop
  #include "Read.h"
  //
  #pragma package(smart_init)
  #pragma resource "*.dfm"
  TMainForm *MainForm;
  const int Page_Nums = 34; // 每页的行数
  int Now_Line; // 当前行
  bool End; //文章是否结束
  //
  __fastcall TMainForm::TMainForm(TComponent* Owner)
   : TForm(Owner)
  {
   Inin_face();
  }
  //
  void __fastcall TMainForm::Face_ImageMouseDown(TObject *Sender,
  TMouseButton Button, TShiftState Shift, int X, int Y)
  {
  //拖动窗口,这个技巧比较有用
   if(Button == mbLeft)
  { int SC_DragMove = 61458;
  ReleaseCapture();
  MainForm->Perform(WM-SYSCOMMAND,SC-DragMove, 0);
  }
  }
  //
  void __fastcall TMainForm::OpenNClick(TObject *Sender)
  {
  if(OpenDialog1->Execute())
  { Buf_Memo->Lines->LoadFromFile(OpenDialog1->FileName);
  Inin();
  }
  }
  //
  void__fastcall TMainForm::BackNClick(TObject *Sender)
  {
  if(OpenPictureDialog1->Execute())
  Back_Image->Picture->LoadFromFile(OpenPictureDialog1->FileName);
  }
  //
  void __fastcallTMainForm::CloseNClick(TObject *Sender)
  {
  Application->Terminate();
  }
  //
  void TMain Form::Print Page(int line_cou)
  //执行print书本内容
  {
  const int L-TOP = Label1->Height;
  //该参数用来设置行距
  const int TitleLineCount = Buf-Memo->Lines->Count; //memo总行数
  int LabelLeft = 40;
  int LabelTop = 38;
  if(line_cou < 0)
   //line_cou是标记现在的行位置
  line_cou = 0;
  int lineInx=0;
  //当前行数指针
  int i=0;
  bool vis=1;
  int c=Panel_1->ControlCount;
   // 得到Panel_1上的控件数
  TLabel *pLa;
   //定义TLabel类的指针
  while(i

本文地址:http://com.8s8s.com/it/it30385.htm