读书人

帮忙翻译如下代码 : Delphi -gt; BCB。

发布时间: 2012-03-12 12:45:33 作者: rapoo

帮忙翻译如下代码 : 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();
}

读书人网 >C++ Builder

热点推荐