当前位置: 首页 > 学习 > 电脑学习 > 程序设计 > C++ > 表单设计 > 正文

自画标题栏的一个例子

http://www.zk168.com.cn  招考学习网 2006-4-11 5:25:13
-----------------------------------------------------------[交流]-[打印]-[发送]-[收藏]--
.h File
//---------------------------------------------------------------------------

#ifndef wmncH
#define wmncH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <Buttons.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
        TBitBtn *BitBtn1;
        void __fastcall FormPaint(TObject *Sender);
        void __fastcall FormResize(TObject *Sender);
        void __fastcall BitBtn1Click(TObject *Sender);
private:// User declarations
        void __fastcall OnNcHitTest(TMessage &Message);
public: // User declarations
        __fastcall TForm1(TComponent* Owner);
        BEGIN_MESSAGE_MAP
          VCL_MESSAGE_HANDLER(WM_NCHITTEST,TMessage,OnNcHitTest);
        END_MESSAGE_MAP(TForm);
protected:
        virtual void __fastcall WndProc(TMessage &Message);
        virtual void __fastcall CreateParams(TCreateParams &Params);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif

.cpp File
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "wmnc.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
  : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::CreateParams(TCreateParams &Params)
{

  TForm::CreateParams(Params);
  Params.Style|=WS_POPUP;
  Params.Style^=WS_DLGFRAME;

}
//---------------------------------------------------------------------------
void __fastcall TForm1::OnNcHitTest(TMessage &Message)
{
  TPoint PT;
  PT.x=LOWORD(Message.LParam);
  PT.y=HIWORD(Message.LParam);
  PT=ScreenToClient(PT);
  RECT rect;
  ::SetRect(&rect,0,0,20,ClientHeight);
  if(PtInRect(&rect,PT))
  {
    Message.Result=HTCAPTION;
    //ShowMessage("How are you");
  }
  else
  {
    DefaultHandler(&Message);
  }
}

void __fastcall TForm1::FormPaint(TObject *Sender)
{
  RECT rect;
  ::SetRect(&rect,0,0,ClientWidth,ClientHeight);
  Canvas->Pen->Color=clBlue;
  Canvas->Brush->Color=clBlue;
  Canvas->Rectangle(0,0,20,ClientHeight);
  char *msg="My Fellow Citizens!";
  LOGFONT fontRect;
  memset(&fontRect,0,sizeof(LOGFONT));
  fontRect.lfHeight=-13;
  fontRect.lfWeight=FW_NORMAL;
  fontRect.lfEscapement=900;
  lstrcpy(fontRect.lfFaceName,"宋体");
  HFONT hFont=CreateFontIndirect(&fontRect);
  HFONT hOld=::SelectObject(Canvas->Handle,hFont);
  ::SetRect(&rect,0,0,20,ClientHeight);
  ::SetTextColor(Canvas->Handle,RGB(255,255,255));
  ::SetBkColor(Canvas->Handle,RGB(255,0,0));
  ::TextOut(Canvas->Handle,3,ClientHeight-3,msg,lstrlen(msg));
  ::SelectObject(Canvas->Handle,hOld);
  ::DeleteObject(hFont);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::WndProc(TMessage &Message)
{
  if(Message.Msg==WM_SYSCOMMAND)
  {
    if(Message.WParam==SC_MAXIMIZE || Message.WParam==61490)
    {
      Invalidate();
    }
  }
  TForm::WndProc(Message);
}

void __fastcall TForm1::FormResize(TObject *Sender)
{
  Invalidate();  
}
//---------------------------------------------------------------------------

void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
  int button;
  button=Application->MessageBox("Do you want to exit thisform?", \
    "Confirmation",MB_YESNO+MB_ICONQUESTION);
  if(button==IDYES)
  {
    Application->Terminate();
  }
}

-----------------------------------------------------------[交流]-[打印]-[发送]-[收藏]--
最新入库:
 
·实质、过程及意义——阿多尔诺“否定的辩证法”探微
·从Ontology的译名之争看哲学术语的翻译原则
·论马克思主义哲学经典的解释——解释学方法及其在马克
·中国哲学当前的核心与周边问题
·和合学与21世纪文化价值和科技
·中国文化的和合精神与21世纪
·宗教之间理当相互宽容
·上半个世纪的自由主义
·殷周至春秋时期神人关系之演进
·大学之道:构建以“三纲八目”为核心的道德修养体系
相关内容:
 
网友点评:
 
会员名称:
密码:匿名 ·注册·忘记密码?
评论内容:
(最多300个字符)
  查看评论
友情提醒:
 1.库中的资料大都来自互联网、网友上传、各类书籍,在录入的过程中难免会出现错误,恳请网
 友来信指正!
 2.如果网友在本库中未能找到所需要的材料,请登陆到我们的论坛《招考学习网》版块!
 3.考友想加入招考学习网的编辑部,请发信到XueXiWang#Gmail.com(#改为@)附带个人简历
 4.如需转载请注明出处及作者,谢谢合作!
 5.如果您有更好的建议或意见请EMAIL:XueXiWang#Gmail.com (#改为@)
 6.凡标题中有注有“[NO]”字样均不含答案且答案整理中.
 7.如本库中转载文章涉及版权等问题,请相关网站或作者在两周内发邮件通知(EMAIL:  XueXiWang#Gmail.com (#改为@))我们,我们接到通知后立即删除该文章及链接!
你问我答 更多>>