在线等待!! 高手请帮帮忙!!急!

zzlong 2003-10-23 04:19:03
大家点击桌面,按下鼠标的左键并拉动他,会看到一个线框.要如何话?
我在Form1的Mouse事件中要实现相同的功能,老是有问题,在框的中间老是有一层颜色或是其他的东西,不是透明的,我希望能像桌面那样只看到那个长方形的线框,要如何写代码?各位高手请帮帮忙阿!搞定马上给分.不够再加.
...全文
21 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zzlong 2003-10-23
  • 打赏
  • 举报
回复
#if (__BORLANDC__ >= 0x530)
#pragma package(smart_init)
#endif

#if (__BORLANDC__ < 0x530)
#define PACKAGE
#endif

请问这是用来干什么用的?能解释一下吗?
我先把分给你.
zzlong 2003-10-23
  • 打赏
  • 举报
回复
谢谢,ccrun(老妖).我试一下.
ccrun.com 2003-10-23
  • 打赏
  • 举报
回复
.cpp file

//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop

#include "MainU.h"
//---------------------------------------------------------------------------
#if (__BORLANDC__ >= 0x530)
#pragma package(smart_init)
#endif
#pragma resource "*.dfm"
TMainForm *MainForm;
//---------------------------------------------------------------------------
__fastcall TMainForm::TMainForm(TComponent* Owner)
: TForm(Owner)
{//创建画布对象
DesktopCanvas = new TCanvas;
DesktopCanvas->Handle = GetDC(0);
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::FormMouseDown(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{ //初始化变量,得到鼠标的位置
Dragging = true;
TPoint pt(X,Y);
pt.x = X;
pt.y = Y;
if (DrawOnTopCB->Checked) {
DrawCanvas = DesktopCanvas;
::ClientToScreen(Handle, &pt);
DrawRect.left = pt.x;
DrawRect.top = pt.y;
DrawRect.right = pt.x;
DrawRect.bottom = pt.y;
}
else {
DrawCanvas = Canvas;
DrawRect.left = X;
DrawRect.top = Y;
DrawRect.right = X;
DrawRect.bottom = Y;
}
DrawCanvas->DrawFocusRect(DrawRect);
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::FormMouseMove(TObject *Sender, TShiftState Shift,
int X, int Y)
{ //绘制虚线
if (Dragging) {
TPoint pt(X,Y);
if (DrawOnTopCB->Checked)
::ClientToScreen(Handle, &pt);
DrawCanvas->DrawFocusRect(DrawRect);
DrawRect.right = pt.x;
DrawRect.bottom = pt.y;
DrawCanvas->DrawFocusRect(DrawRect);
}
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::FormMouseUp(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{ //停止绘制
if (Dragging) {
Dragging = false;
DrawCanvas->DrawFocusRect(DrawRect);
}
}

void __fastcall TMainForm::FormDestroy(TObject *Sender)
{ //释放内存
delete DesktopCanvas;
}
//---------------------------------------------------------------------------
ccrun.com 2003-10-23
  • 打赏
  • 举报
回复
我这有些源代码,贴给你。

.h file
//---------------------------------------------------------------------------
#ifndef MainUH
#define MainUH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
//---------------------------------------------------------------------------
class TMainForm : public TForm
{
__published: // IDE-managed Components
TButton *Button1;
TButton *Button2;
TCheckBox *DrawOnTopCB;
TMemo *Memo1;
void __fastcall FormMouseDown(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y);
void __fastcall FormMouseMove(TObject *Sender, TShiftState Shift,
int X, int Y);
void __fastcall FormMouseUp(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y);
void __fastcall FormDestroy(TObject *Sender);
private: // User declarations
bool Dragging;
TRect DrawRect;
TCanvas* DrawCanvas;
TCanvas* DesktopCanvas;
//HDC DrawDC;
public: // User declarations
__fastcall TMainForm(TComponent* Owner);
};
//---------------------------------------------------------------------------
#if (__BORLANDC__ < 0x530)
#define PACKAGE
#endif
extern PACKAGE TMainForm *MainForm;
//---------------------------------------------------------------------------
#endif

1,221

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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