我爱builder

C++Builder 程序员博客

我的代码是:
    int  cx  =  GetSystemMetrics(  SM_CXSCREEN  );
        int  cy  =  GetSystemMetrics(  SM_CYSCREEN  );
        HDC  hdc  =  GetDC(NULL);
        // ⴂ𔂽⨂𚃬㉂뱃㋃𘂿㭂𖃈ⵃ䃊ⵃ⻂킱㊠
        HPEN hpen1 = CreatePen( PS_SOLID, 2, RGB(255,0,0) );
        HPEN hpen_old = (HPEN)SelectObject( hdc, hpen1 );
        SelectObject( hdc, hpen1 );
        MoveToEx(hdc,cx/2,0,NULL);//㊃𚃏㟠
        LineTo(hdc,cx/2,cy);
        MoveToEx(hdc,0,cy/2,NULL);//⺃჏㟠
        LineTo(hdc,cx,cy/2);
        SelectObject( hdc, hpen_old );
问题是一打开别的窗口或移动窗口,都会将刚才画的线擦除,怎么让它保持呢?

别的窗口或移动窗口时,重新画一遍,或者分成两个窗口,十字线单独用一个窗口

改了下:
int  cx  =  GetSystemMetrics(  SM_CXSCREEN  );
        int  cy  =  GetSystemMetrics(  SM_CYSCREEN  );
        HDC  hdc  =  GetDC(NULL);
        // ⴂ𔂽⨂𚃬㉂뱃㋃𘂿㭂𖃈ⵃ䃊ⵃ⻂킱㊠
        HPEN hpen1 = CreatePen( PS_SOLID, 2, RGB(255,0,0) );
        HPEN hpen_old = (HPEN)SelectObject( hdc, hpen1 );
        SelectObject( hdc, hpen1 );
        MoveToEx(hdc,cx/2,0,NULL);//竖线 
        LineTo(hdc,cx/2,cy);
        MoveToEx(hdc,0,cy/2,NULL);//横线
        LineTo(hdc,cx,cy/2);
        SelectObject( hdc, hpen_old );
        DeleteObject(hpen1);
        ReleaseDC(GetDesktopWindow(),hdc);
       InvalidateRect(0,NULL,0);//刷新
画完后,刷新,但是屏幕闪动得历害,怎么解决?

1.做一个没有标题栏窗体;
2.背景设为白色;
3.窗体上画十字;
4.在窗体属性里把白色设置为透明色;
5.把窗体设为总在最上。
其实简单的说,就是做一个总在最上的不规则形状窗体。

引用 4 楼 Maconel 的回复:
1.做一个没有标题栏窗体;
2.背景设为白色;
3.窗体上画十字;
4.在窗体属性里把白色设置为透明色;
5.把窗体设为总在最上。
其实简单的说,就是做一个总在最上的不规则形状窗体。

我认为就是做一个总在最上的不规则形状窗体是可以的

引用 5 楼 xjq2003 的回复:
引用 4 楼 Maconel 的回复:
1.做一个没有标题栏窗体;
2.背景设为白色;
3.窗体上画十字;
4.在窗体属性里把白色设置为透明色;
5.把窗体设为总在最上。
其实简单的说,就是做一个总在最上的不规则形状窗体。

我认为就是做一个总在最上的不规则形状窗体是可以的


up

这个窗口会挡住其他的窗口啊

楼主的问题挺有意思.您的十字线多大也没说啊.哈哈.

枪不用放镜头罗,楼主这算不算作弊啊

引用 7 楼 thwen0101 的回复:
这个窗口会挡住其他的窗口啊

你要的不就是挡住其他窗口吗。按照我说的方法,这个窗口除了十字线以外,其他部分都是透明的,看不到,也点不到。

我的程序在使用FASTREPORT之前一直好好的,在使用了FASTREPORT之后,出现了以下怪现象:当把函有FASTREPORT控件的窗体的代码修改了之后,必须Build工程才能够正常运行我的程序,否则,如果只用Make工程,则会出现内存访问错,出错的代码是STL C++代码,如下:
        std::ifstream fin;
当执行到这句时,立即出错,出错的行定位到了_numpunct.h的下面的代码(第3行处)
  char decimal_point() const { return do_decimal_point(); }
  char thousands_sep() const { return do_thousands_sep(); }
  string grouping() const { return do_grouping(); }//////定位在这一行
  string truename() const { return do_truename(); }
  string falsename() const { return do_falsename(); }
然而,当我使用Project->Build…时产生的代码就没有任何问题。
我使用的系统环境是WindowsXP(DeepIn版)+BCB6.0+FastReport4.7.91(CCRUN下载的),曾担心那不是专门为BCB6.0的版本,又到FASTREPORT的官方网站上下载了fr4bcb6.exe在另外一台机器上使用了一下,结果问题也没有解决。
以上是问题的描述,请问有没有遇到过类似情况的,或知道问题的原因的,请赐教。

我用的是低版本的,没有遇到这样的问题,帮顶吧。

rouqing:你好,你用的是哪个版本?既没有问题,我也想用,可否发给我一份?
我的邮箱是Turntogo@163.com

我的D6用的是3.03
CB6用的是2.52

http://www.2ccc.com/article.asp?articleid=1051

啊,这版本也太低了吧。

高版本的我再没用过了,工作中报表不是太复杂,够用就好了。

接分

唉!FastReport2.5确实够用,可用户不会满意的。
难道就没有更好的办法了?

自己顶一下吧,希望能够找到真正的解决办法。

请诸位帮我一个忙啊!我想找一个由c++ builder 制作的中国象棋游戏,或者给我一些制作这类游戏所需要的学习的知识。在这里先谢谢了。C++的也可以。

C++Builder程序设计范例 中国象棋
http://www.ccrun.com/view.asp?id=290

学习

引用 2 楼 zhouzhangkui 的回复:
C++Builder程序设计范例 中国象棋
http://www.ccrun.com/view.asp?id=290

还有源码,找找看

嗯,学习学习

接分

窗口visible = false之后,能否接受窗口消息??

//—————————————————————————

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//—————————————————————————
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//—————————————————————————
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//—————————————————————————

void __fastcall TForm1::FormCreate(TObject *Sender)
{
    Button1->OnClick = ButtonClick;
   
}
//—————————————————————————

void __fastcall TForm1::ButtonClick(TObject *Sender)
{
    ShowMessage("asf");
}
//—————————————————————————

void __fastcall TForm1::Button2Click(TObject *Sender)
{
    Panel1->Visible = false;
}
//—————————————————————————
void __fastcall TForm1::Button3Click(TObject *Sender)
{
    Button1->Click();
}
//—————————————————————————

光看代码,不清楚目的。

可以吧,窗口实际还是存在的

C/C++ code
AnsiString sql; sql="select 毛称重日期,皮称重日期,化验单号,车号,毛重,皮重,净重 "; sql+="from 地磅录入 "; if(dtpDate->Date==Date() & dtpToDate->Date==Date() & edtCarNumber->Text=="" & edtNumber->Text=="" & edtEassyNum->Text=="" & edtIdentityCard->Text=="" & edtReceiveUnits=="") { sql+="where 皮称重日期=:皮称重日期1 "; } if(dtpDate->Date<dtpToDate->Date & edtCarNumber->Text=="" & edtNumber->Text=="" & edtEassyNum->Text=="" & edtIdentityCard->Text=="" & edtReceiveUnits=="") { sql+="where 皮称重日期>=:皮称重日期1 and 皮称重日期<=:皮称重日期2 "; } if(dtpDate->Date<=dtpToDate->Date & edtCarNumber->Text!="" & edtNumber->Text=="" & edtEassyNum->Text=="" & edtIdentityCard->Text=="" & edtReceiveUnits=="") { sql+="where 皮称重日期>=:皮称重日期1 and 皮称重日期<=:皮称重日期2 and 车号=:车号 "; } if(dtpDate->Date<=dtpToDate->Date & edtCarNumber->Text!="" & edtNumber->Text!="" & edtEassyNum->Text=="" & edtIdentityCard->Text=="" & edtReceiveUnits=="") { sql+="where 皮称重日期>=:皮称重日期1 and 皮称重日期<=:皮称重日期2 and 车号=:车号 and 编号=:编号 "; } if(dtpDate->Date<=dtpToDate->Date & edtCarNumber->Text!="" & edtNumber->Text!="" & edtEassyNum->Text!="" & edtIdentityCard->Text=="" & edtReceiveUnits=="") { sql+="where 皮称重日期>=:皮称重日期1 and 皮称重日期<=:皮称重日期2 and 车号=:车号 and 编号=:编号 and 化验单号=:化验单号 "; } if(dtpDate->Date<=dtpToDate->Date & edtCarNumber->Text!="" & edtNumber->Text!="" & edtEassyNum->Text!="" & edtIdentityCard->Text!="" & edtReceiveUnits=="") { sql+="where 皮称重日期>=:皮称重日期1 and 皮称重日期<=:皮称重日期2 and 车号=:车号 and 编号=:编号 and 化验单号=:化验单号 and 身份证号=:身份证号 "; } if(dtpDate->Date<=dtpToDate->Date & edtCarNumber->Text!="" & edtNumber->Text!="" & edtEassyNum->Text!="" & edtIdentityCard->Text!="" & edtReceiveUnits!="") { sql+="where 皮称重日期>=:皮称重日期1 and 皮称重日期<=:皮称重日期2 and 车号=:车号 and 编号=:编号 and 化验单号=:化验单号 and 身份证号=:身份证号 and 发货单位=:发货单位" ; } sql+="group by 皮称重日期,化验单号 "; sql+="order by 化验单号 "; qrySearchData->SQL->Clear(); qrySearchData->SQL->Add(sql); qrySearchData->Parameters->ParamByName("皮称重日期1")->Value=dtpDate->Date.DateString(); —-1 qrySearchData->Parameters->ParamByName("皮称重日期2")->Value=dtpToDate->Date.DateString(); qrySearchData->Parameters->ParamByName("车号")->Value=edtCarNumber->Text;我感觉这要转换,用.TOint qrySearchData->Parameters->ParamByName("编号")->Value=edtNumber->Text; qrySearchData->Parameters->ParamByName("化验单号")->Value=edtEassyNum->Text; qrySearchData->Parameters->ParamByName("身份证号")->Value=edtIdentityCard->Text; qrySearchData->Parameters->ParamByName("发货单位")->Value=edtReceiveUnits->Text; qrySearchData->Open();

提示1处有错误,谢谢

什么错误,也不说明。

parameter 皮称重日期1没有发现

把qrySearchData->SQL->Add(sql);放到qrySearchData->Open();上面试试

在查看器中(一般是左上角的那个)qrySearchData的Parames(名字记不太清)有没有皮称重日期1

??????????????????????????

难道csdn也开始商业化打小广告了?抑或是此举另有深意?费解ing……

看不到楼主图片的,来这里看
http://tieba.baidu.com/f?kz=558564491

也就是说最新的BCB有没有改进。现在最新的DELPHI和BCB那个好用,有人用过最新的吗》?

没用过DELPHI,但是从参考资料等各方面来说,应该是DELPHI多,另外应用也比较多

其他的用起来也差不多吧。

听说C++ BUILDER 的框架用C++重写了是真的吗?还有C++ BUILDER 稳定了吗?反应快吗?
最新的版本或最近的版本,好用吗?

引用 3 楼 jay_2008 的回复:
听说C++ BUILDER 的框架用C++重写了是真的吗?还有C++ BUILDER 稳定了吗?反应快吗?
最新的版本或最近的版本,好用吗?

vcl还是pascal,从维护代码的角度看,根本没必要用c++重写。
2009功能上改进了不少,但是还有bug,但是不影响使用。

我觉得如果是初学使用6或2007版本比较好,毕竟现在的资料都是以前的

有些基本控件的功能增强了,集成together可以建模了。支持vcl web开发但还有些问题。

我在使用BCB2009
很好用,
因为我一直用BCB6.0

补丁开发不及时啊

最新的在B/S开发上,怎么样?不管是DELPHI还是C++ BUILDER

我现在有个问题请教下,我有一个在BCB5.0下写的程序,编译后在Win2000下能正常运行,但在XP就不行在XP下用BCB5重新编译过,不能正常操作数据库,  用的是ADO控件,Access数据库.数据库能连接上,但再进行进一不操作是就出错.
希望哪位高手能帮忙看看!!谢谢!!!

这个是设置数据库路径代码.
AnsiString StringConnect,DataPathFileName;
  DataPathFileName = ExtractFilePath(Application->ExeName);
  DataPathFileName.Insert("\marks.mdb", DataPathFileName.Length()+1);
  StringConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+DataPathFileName+";Persist Security Info=False";
  ADOConnectionMemberSelect->ConnectionString = WideString(StringConnect);
  ADOConnectionMemberSelect->Open();
刚进入窗口时数据库操作也能正常.
//初始化数据联接
{
  try
  {
    DataModuleMain->ADOQueryMemberSelect->Close();
    DataModuleMain->ADOQueryMemberSelect->SQL->Clear();
    DataModuleMain->ADOQueryMemberSelect->SQL->Add("select * from Department  order by Department.DepType");
    DataModuleMain->ADOQueryMemberSelect->Prepared = true;
    DataModuleMain->ADOQueryMemberSelect->Open();
  }
  catch(…)
  {
    ShowMessage("数据库连接出错!");
    DataModuleMain->ADOQueryMemberSelect->Close();
    throw;
  }

这里就会出错,会弹出消息框 ShowMessage("数据库连接出错!");

//从部门中选择人员
{
AnsiString SqlString ;
SqlString ="select * from Member where  Member.DepID ='" + ListBox1->Items->Strings[ListBoxDepartment->ItemIndex] + "'  order by Member.MID";      //'" + ListBox1->Items->Strings[ListBoxDepartment->ItemIndex] + "'
try
  {    DataModuleMain->ADOQueryMemberSelect->Close();
    DataModuleMain->ADOQueryMemberSelect->SQL->Clear();
    DataModuleMain->ADOQueryMemberSelect->SQL->Add(SqlString);
  DataModuleMain->ADOQueryMemberSelect->Prepared = true;
    DataModuleMain->ADOQueryMemberSelect->Open();
  }
  catch(…)
  {
    ShowMessage("数据库连接出错!");
    DataModuleMain->ADOQueryMemberSelect->Close();
    throw;
  }

bool __fastcall TMainForm::DatabaseInital()      //数据库连接配置
{
    AnsiString DataBase = ExtractFilePath(Application->ExeName)+"otsdb.mdb";
    ADOConnection->Connected=false;
    ADOConnection->ConnectionString="Provider = Microsoft.Jet.OLEDB.4.0;Data Source="+DataBase;
    try
    {
      ADOConnection->Connected=true;
      ADOConnection->Open();
    }
    catch(…)
    {
      ShowMessage("连接数据库失败.");
      dbFlag = false;
      return false;
    }
    return true;
}

初始化的部分用这段代码修改

bool __fastcall TMainForm::DatabaseInital()      //数据库连接配置
{
    AnsiString DataBase = ExtractFilePath(Application->ExeName)+"otsdb.mdb";
    ADOConnection->Connected=false;
    ADOConnection->ConnectionString="Provider = Microsoft.Jet.OLEDB.4.0;Data Source="+DataBase;
    try
    {
      ADOConnection->Connected=true;
      ADOConnection->Open();
    }
    catch(…)
    {
      ShowMessage("连接数据库失败.");
    // dbFlag = false;
      return false;
    }
    return true;
}

初始化的部分用这段代码修改

1.
catch(Exception &e){//不要用…,看看e.Message是什么?

}

2.应该是sql语句出错,应该将字段用[]括起来;2.使用参数的方式好点

关键是在Win2000下一切正常.  数据库连接代码应该没问题."//初始化数据联接"      后面的代码都能正常.出错是从"//从部门中选择人员"后面开始的.

大家好:
    请教一下,想在窗体中加入一个RichEdit的控件,用如下的方法创建后,不知道怎样去控制它,我想动态调整它的大小,取得它里面的东西。。。
  hInst  =  LoadLibrary("riched20.dll");
  HINSTANCE  hInst;

  TRect rect = Form1->ClientRect;
  CreateWindowExA(0, "RichEdit20A", "aa", WS_CHILD|WS_VISIBLE|WS_VSCROLL|WS_TABSTOP
                  |ES_WANTRETURN|ES_MULTILINE,
  rect.left, rect.top, Form1->Width, Form1->Height-50,
                  Form1->Handle, 0, hInst,0);

先谢谢大家!!

创建好之后通过句柄来修改大小属性?
这个怎样进行?
我还要得到它里面的TEXT内容怎样提取啊?

爲什麽不用new 的方法
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    TRichEdit *re = new TRichEdit(Application);
    re->Parent = this;
    re->Name = "Edit";
    re->Left = 10;
    re->Top = 10;
    re->Width = 50;
    re->Height = 50;
}

如果有句柄 那也很容易啊
    TRichEdit *edit = (TRichEdit *)(FindControl(Handle));
    ShowMessage(edit->Text);

BCB里的是1.0版本
我想要的是2.0或者更高版本的

引用 2 楼 likeyrain 的回复:
创建好之后通过句柄来修改大小属性?
这个怎样进行?
我还要得到它里面的TEXT内容怎样提取啊?

如果高版本的還是TRichEdit類型的控件而且能抓到句柄那就沒有任何問題了
TRichEdit *edit = (TRichEdit *)(FindControl(handle));    //這裡的handle就是richedit的句柄
ShowMessage(edit->Text);    //取内容
edit->Widht = …;
edit->Height = …;    //改大小

CreateWindowExA函数返回一个HWND句柄,你需要将这个句柄设成全局的,通过这个句柄来控制你创建的Rich20窗口.

HINSTANCE  hInst;
HWND h;
TRichEdit *edit;

  hInst  =  LoadLibrary("riched20.dll");

  TRect rect = Form1->ClientRect;
  h = CreateWindowExA(0, "RichEdit20A", "aa", WS_CHILD|WS_VISIBLE|WS_VSCROLL|WS_TABSTOP
  |ES_WANTRETURN|ES_MULTILINE,
  rect.left, rect.top, Form1->Width, Form1->Height-50,
  Form1->Handle, 0, hInst,0);
  edit = (TRichEdit *)(FindControl(h));

这样edit为空??

//hpp文件全码如下

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"

//—————————————————————————
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
HINSTANCE  hInst;
HWND h;
TRichEdit *edit;
//—————————————————————————
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//—————————————————————————
void __fastcall TForm1::FormCreate(TObject *Sender)
{

  hInst  =  LoadLibrary("riched20.dll");

  TRect rect = Form1->ClientRect;
  h = CreateWindowExA(0, "RichEdit20A", "aa", WS_CHILD|WS_VISIBLE|WS_VSCROLL|WS_TABSTOP
  |ES_WANTRETURN|ES_MULTILINE,
  rect.left, rect.top, Form1->Width, Form1->Height-50,
  Form1->Handle, 0, hInst,0);
  edit = (TRichEdit *)(FindControl(h));
//  ShowMessage(edit->Name );

}
//—————————————————————————
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{

//     FreeLibrary(hInst);
}
//—————————————————————————
void __fastcall TForm1::FormResize(TObject *Sender)
{
//SendMessage(
// h, //窗口句柄
// WM_SIZE, //WM_SIZE
// this->Width , //宽度
// this->Height-5 //高度
);
}
//—————————————————————————

莫非你的代碼創建的時候出了問題沒有創建成功?
即便不是TRichEdit類型的也不該是空啊
h = CreateWindowExA(…..);//後面加上下面的代碼 看看什麽情況
TControl *ctr = FindControl(h);
if(ctr != NULL)
    ShowMessage(ctr->ClassName());    //如果創建成功了 看看是什麽類型的
else
    ShowMessage("NULL");    //走到這裡就説明create失敗了

Show出来的是NULL,但窗体上已经有控件显示,还可以在里面输入,就是不知道怎样取它输入的东西。。

会不会是我CreateWindowExA创建的参数不对?
请高手帮忙一下

问题还没解决。。。。

gz一下,还没用过

请高手帮忙一下啊

CreateWindowExA
返回值:如果函数成功,返回值为新窗口的句柄:如果函数失败,返回值为NULL。

http://blog.csdn.net/zjxsq/archive/2008/12/14/3516055.aspx
這裡有函數的詳細説明

你這個情況應該是這個函數失敗了
不管richEdit是什麽版本 縂應該是TControl類下的 用FindControl應該可以抓到
看看函數返回的是不是空

gz一下

    看了,但不是找不到错在哪,控件是已经创建出来,在界面已经看到有,并且可以在里面输入,但就是不知道为什么
edit = (TRichEdit *)(FindControl(h));
这一句这是为空。。。
还有请高手帮忙,分不够可以再加。

谢谢!!

    看了,但还是找不到错在哪,控件是已经创建出来,在界面已经看到有,并且可以在里面输入,但就是不知道为什么
edit = (TRichEdit *)(FindControl(h));
这一句这是为空。。。
还有请高手帮忙,分不够可以再加。

谢谢!!

555555555555555
问题还没解决

//—————————————————————————

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//—————————————————————————
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
HINSTANCE  hInst;
HWND h;
TRect rect;

//—————————————————————————
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//—————————————————————————

void __fastcall TForm1::FormCreate(TObject *Sender)
{

    hInst  =  LoadLibrary("riched20.dll");

    rect = Form1->ClientRect;
    h =CreateWindowExA(WS_EX_CLIENTEDGE, "RichEdit20A", "test",
        WS_CHILD|WS_VISIBLE|WS_VSCROLL|WS_TABSTOP|
        WS_EX_CLIENTEDGE |ES_WANTRETURN|ES_MULTILINE |WS_EX_WINDOWEDGE,
        rect.left, rect.top, rect.right, rect.bottom,
        Form1->Handle, 0, hInst,0);
}
//—————————————————————————

void __fastcall TForm1::FormDestroy(TObject *Sender)
{
//    FreeLibrary(hInst);
}
//—————————————————————————
void __fastcall TForm1::FormResize(TObject *Sender)
{
    AnsiString st;
    rect = Form1->ClientRect;
    SetWindowPos(h, HWND_TOP, rect.left, rect.top, rect.right, rect.bottom-StatusBar1->Height,
        SWP_FRAMECHANGED|SWP_SHOWWINDOW);

    GetWindowText(h, st.c_str(), 255);
    SendMessage(Form1->StatusBar1->Handle, SB_SETTEXT, 0, (int)st.c_str());
}
//—————————————————————————

我来学习一下

问题还没解决
请教一下除了以上的创建方法还有没有其它的创建方法啊?

设置大小 SetWindowPos(

取得文本 GetWindowText(

这样不是就可以了?

能不能给出更详细的说明?
设置大小 SetWindowPos(

取得文本 GetWindowText(

都没用过,不会用。。。
谢谢!!!

// Borland C++ Builder
// Copyright (c) 1995, 2005 by Borland Software Corporation
// All rights reserved

// (DO NOT EDIT: machine generated header) 'Classes.pas' rev: 10.00

#ObjectResourceToText(TStream* Input, TStream* Output, TStreamOriginalFormat &OriginalFormat)/* overload */;
extern PACKAGE void __fastcall ObjectTextToResource(TStream* Input, TStream* Output)/* overload */;
extern PACKAGE void __fastcall ObjectTextToResource(TStream* Input, TStream* Output, TStreamOriginalFormat &OriginalFormat)/* overload */;
extern PACKAGE TStreamOriginalFormat __fastcall TestStreamFormat(TStream* Stream);
extern PACKAGE bool __fastcall CheckSynchronize(int Timeout = 0×0);
extern PACKAGE void * __fastcall MakeObjectInstance(TWndMethod Method);
extern PACKAGE void __fastcall FreeObjectInstance(void * ObjectInstance);
extern PACKAGE HWND __fastcall AllocateHWnd(TWndMethod Method);
extern PACKAGE void __fastcall DeallocateHWnd(HWND Wnd);

} /* namespace Classes */
using namespace Classes;
#pragma pack(pop)
#pragma option pop

#pragma delphiheader end.
//– end unit —————————————————————-
#endif // Classes

不懂
能不能加点说明?

前面已经给了例子啊
可查一下BCB带的Win32 Programmer's Reference 帮助文件

void __fastcall TForm1::FormResize(TObject *Sender)
{
    AnsiString st;
    rect = Form1->ClientRect;
    SetWindowPos(h, HWND_TOP, rect.left, rect.top, rect.right, rect.bottom-StatusBar1->Height,
        SWP_FRAMECHANGED|SWP_SHOWWINDOW);
    // 这个重新设置RichEdit的大小

    GetWindowText(h, st.c_str(), 255);  // 这个取得文本
    SendMessage(Form1->StatusBar1->Handle, SB_SETTEXT, 0, (int)st.c_str());
}

以下代码使用IdSocksInfo控件,版本是有socks代理,登陆163等不用SSL的正常接收邮件.POP为IdPOP3控件

C/C++ code
// SOCKETS代理设置. IdSocksInfo1->Host = "58.56.87.2"; IdSocksInfo1->Port = 1080; IdSocksInfo1->Username = ""; IdSocksInfo1->Password = ""; IdSocksInfo1->Version = svSocks4; [color=#FF0000] IdIOHandlerStack1->TransparentProxy = IdSocksInfo1; POP->IOHandler = IdIOHandlerStack1;[/color] POP->Host = POPServer->Text; POP->Port = POPPort->Text.ToInt(); POP->Username = POPUsername->Text; POP->Password = POPPassword->Text; //连接 POP->Connect();

但是使用SSL接收如Gmail,yahoo的话怎样设置.以下为我的代码

C/C++ code
// SOCKETS代理设置. IdSocksInfo1->Host = "58.56.87.2"; IdSocksInfo1->Port = 1080; IdSocksInfo1->Username = ""; IdSocksInfo1->Password = ""; IdSocksInfo1->Version = svSocks4; [color=#FF0000] IdSSLIOHandlerSocketOpenSSL1->TransparentProxy = IdSocksInfo1; POP->IOHandler = IdSSLIOHandlerSocketOpenSSL1;[/color] POP->Host = POPServer->Text; POP->Port = POPPort->Text.ToInt(); POP->Username = POPUsername->Text; POP->Password = POPPassword->Text; POP->UseTLS = utUseImplicitTLS; //连接 POP->Connect();

请问:
1.怎样让IdPOP3控件接收设置代理服务器+SSL的邮件
2.以上是SOCKS代理,怎样设置HTTP代理.只有59分不多..请大虾们帮帮忙.

首先谢谢楼上的. 你那参考帖子,我是楼主….
两个帖子的偏向不一样. 那个是怎么连接SSL..
而这个问题是要解决 SSL+ 代理 同时使用的问题…

Sock4,sock5是裸包转发,所以可以很方便地使用之作为代理,但是HTTP/HTTPS代理则不同,是带协议,所以除非对端特别支持,而不能当作一般代理使用.

虽然还是没解决,但是还是谢谢楼上,分不多.
初步认为是需要一个socks+SSL的代理服务器.才能接收.