首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

帮忙翻译如下代码 : Delphi -> BCB。解决思路

2012-03-12 
帮忙翻译如下代码 : Delphi-- BCB。interface...constCM_RESTOREWM_USER+$1000{自定义的“恢复”消息}WEIW

帮忙翻译如下代码 : Delphi --> BCB。
interface
...
  const
    CM_RESTORE   =   WM_USER   +   $1000;   {自定义的“恢复”消息}
    WEIWEI_APP_NAME   =   'WEIWEI_System ';
...
    type
    TfrmMain   =   class(TForm)
    ...
    public  
        procedure   CreateParams(var   Params:   TCreateParams);   override;
        procedure   RestoreRequest(var   message:   TMessage);   message   CM_RESTORE;
...
implementation
 
procedure   TFrmMain.CreateParams(var   Params:   TCreateParams);
begin
    inherited   CreateParams(Params);
    Params.WinClassName   :=   WEIWEI_APP_NAME;
end;


{处理“恢复”消息}

procedure   TFrmMain.RestoreRequest(var   message:   TMessage);
begin
    if   IsIconic(Application.Handle)   =   True   then     //窗体是否最小化
        Application.Restore     //恢复窗体
    else
        Application.BringToFront;   //提到前面显示
end;

 

上面这段代码请把它放在你的项目的主单元文件中,然后打开.dpr文件添加如下内容:

 

...

const
    CM_RESTORE   =   WM_USER   +   $1000;   {自定义的“恢复”消息}
    WEIWEI_APP_NAME   =   'WEIWEI_System ';

var
    RvHandle:   hWnd;
begin

    RvHandle   :=   FindWindow(WEIWEI_APP_NAME,   nil);   //查找窗体类名来查找窗体
    if   RvHandle   >   0   then   //查找的话
    begin
        PostMessage(RvHandle,   CM_RESTORE,   0,   0);   //给找的窗体发送消息,让它显示在最前面
        Exit;   //退出程序
    end;

    Application.Initialize;
    Application.CreateForm(TfrmMain,   frmMain);
    Application.Run;
end.

[解决办法]
Delphi:
--------------------
const
CM_RESTORE = WM_USER + $1000; {自定义的“恢复”消息}
WEIWEI_APP_NAME = 'WEIWEI_System ';


C++:
--------------------
const DWORD CM_RESTORE = WM_USER + 0x1000; // 自定义的“恢复”消息
const String WEIWEI_APP_NAME = "WEIWEI_System ";


Delphi:
--------------------
type
TfrmMain = class(TForm)
...
public
procedure CreateParams(var Params: TCreateParams); override;
procedure RestoreRequest(var message: TMessage); message CM_RESTORE;
...
implementation

procedure TFrmMain.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.WinClassName := WEIWEI_APP_NAME;
end;


{处理“恢复”消息}

procedure TFrmMain.RestoreRequest(var message: TMessage);
begin
if IsIconic(Application.Handle) = True then //窗体是否最小化
Application.Restore //恢复窗体
else
Application.BringToFront; //提到前面显示
end;


C++:
--------------------
class TfrmMain : TForm
...
public:
virtual void __fastcall CreateParams(TCreateParams &Params);
void __fastcall RestoreRequest(TMessage &Message);
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(CM_RESTORE, TMessage, RestoreRequest);


END_MESSAGE_MAP(TForm);
...
//
void __fastcall TfrmMain::CreateParams(TCreateParams &Params)
{
TForm::CreateParams(Params);
strcpy(Params.WinClassName, WEIWEI_APP_NAME.c_str());
}
// 处理“恢复”消息
void __fastcall TfrmMain::RestoreRequest(TMessage &Message)
{
if(IsIconic(Application-> Handle)) // 窗体是否最小化
Application-> Restore(); // 恢复窗体
else
Application-> BringToFront(); // 提到前面显示
}


Delphi:
--------------------
const
CM_RESTORE = WM_USER + $1000; {自定义的“恢复”消息}
WEIWEI_APP_NAME = 'WEIWEI_System ';

var
RvHandle: hWnd;
begin

RvHandle := FindWindow(WEIWEI_APP_NAME, nil); //查找窗体类名来查找窗体
if RvHandle > 0 then //查找的话
begin
PostMessage(RvHandle, CM_RESTORE, 0, 0); //给找的窗体发送消息,让它显示在最前面
Exit; //退出程序
end;

Application.Initialize;
Application.CreateForm(TfrmMain, frmMain);
Application.Run;
end.


C++:
--------------------
const DWORD CM_RESTORE = WM_USER + 0x1000; // 自定义的“恢复”消息
const String WEIWEI_APP_NAME = "WEIWEI_System ";

WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
HWND RvHandle;
RvHandle = FindWindow(WEIWEI_APP_NAME, NULL); // 查找窗体类名来查找窗体
if(RvHandle) // 查找的话
{
PostMessage(RvHandle, CM_RESTORE, 0, 0); // 给找的窗体发送消息,让它显示在最前面
exit(0); // 退出程序
}
Application-> Initialize();
Application-> CreateForm(__classid(TfrmMain), &frmMain);
Application-> Run();
}

热点排行