在bcb6中如何获得窗口句柄?

时间:2021-10-15 09:07:24
我在VC中调用一个函数可以这样
fun(this->m_hWnd);

但是在bcb6里this没找到m_hWnd啊!!
我该怎么得到这个HWND啊??

从来没用过bcb,今天有个项目非要用这个~郁闷啊~~~~~

10 个解决方案

#1


this->Handle

#2


Form的Handle就是HWND,其它的也类似

#3


引用 2 楼 cczlp 的回复:
Form的Handle就是HWND,其它的也类似


bool aa =  pSE->OpenFaultManageWindow(this->Handle);
       if(!aa)
       {
             MessageBox(NULL,"调用失败","",MB_OK);
       }
       else
       {
             MessageBox(NULL,"调用成功","",MB_OK);
       }

提示调用成功,但是没有弹出窗口。我这个函数是调用一个外部程序的一个窗口。
现在提示调用成功,但是没有弹出的窗体!是否说明还是传的窗口句柄有问题?
 


















































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































#4


关键是你这段代码写在什么地方了?只在写在Form类的成员函数中时,这个this才代表当前窗体。

#5


妖哥说的是关键,这个this可不一定就是你的当前窗体呀.

#6



//---------------------------------------------------------------------------

#include <clx.h>
#pragma hdrstop

#include "Unit1.h"

//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.xfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------


void __fastcall TForm1::Button1Click(TObject *Sender)
{
        //MessageBox(NULL,"Hello world!","",MB_OK );
        //HWND hwnd = this->Handle;

       bool aa =  pSE->OpenFaultManageWindow(this->Handle);
       if(aa)
       {
             MessageBox(NULL,"调用成功","",MB_OK);
       }
       else
       {
             MessageBox(NULL,"调用失败","",MB_OK);
       }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
        pSE = new_TSEApi();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
        delete_TSEApi(pSE);
}
//---------------------------------------------------------------------------

这是全部代码,我就是在一个窗体中加了一个按钮,然后在按钮的事件中调用pSE->OpenFaultManageWindow函数,这个函数的参数是传入一个HWND,使其能在当前程序中调出一个窗口。

那我该怎么用这个this啊?

#7



void CwwwDlg::OnBnClickedButton2()
{
// TODO: 在此添加控件通知处理程序代码
pSE->OpenFaultManageWindow(this->m_hWnd);
SetTimer(1,500,NULL);
//pSE->OpenFaultManageWindow();
}

我在VC中这样调用没问题~~

#8


clx?你这不是VCL的工程?

#9


引用 8 楼 ccrun 的回复:
clx?你这不是VCL的工程?


饿……………………………………
今天头一次接触bcb,我创建了一个vcl就能实现了~~~

#10


引用 8 楼 ccrun 的回复:
clx?你这不是VCL的工程?

谢谢大家啊~~

#1


this->Handle

#2


Form的Handle就是HWND,其它的也类似

#3


引用 2 楼 cczlp 的回复:
Form的Handle就是HWND,其它的也类似


bool aa =  pSE->OpenFaultManageWindow(this->Handle);
       if(!aa)
       {
             MessageBox(NULL,"调用失败","",MB_OK);
       }
       else
       {
             MessageBox(NULL,"调用成功","",MB_OK);
       }

提示调用成功,但是没有弹出窗口。我这个函数是调用一个外部程序的一个窗口。
现在提示调用成功,但是没有弹出的窗体!是否说明还是传的窗口句柄有问题?
 


















































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































#4


关键是你这段代码写在什么地方了?只在写在Form类的成员函数中时,这个this才代表当前窗体。

#5


妖哥说的是关键,这个this可不一定就是你的当前窗体呀.

#6



//---------------------------------------------------------------------------

#include <clx.h>
#pragma hdrstop

#include "Unit1.h"

//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.xfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------


void __fastcall TForm1::Button1Click(TObject *Sender)
{
        //MessageBox(NULL,"Hello world!","",MB_OK );
        //HWND hwnd = this->Handle;

       bool aa =  pSE->OpenFaultManageWindow(this->Handle);
       if(aa)
       {
             MessageBox(NULL,"调用成功","",MB_OK);
       }
       else
       {
             MessageBox(NULL,"调用失败","",MB_OK);
       }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
        pSE = new_TSEApi();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
        delete_TSEApi(pSE);
}
//---------------------------------------------------------------------------

这是全部代码,我就是在一个窗体中加了一个按钮,然后在按钮的事件中调用pSE->OpenFaultManageWindow函数,这个函数的参数是传入一个HWND,使其能在当前程序中调出一个窗口。

那我该怎么用这个this啊?

#7



void CwwwDlg::OnBnClickedButton2()
{
// TODO: 在此添加控件通知处理程序代码
pSE->OpenFaultManageWindow(this->m_hWnd);
SetTimer(1,500,NULL);
//pSE->OpenFaultManageWindow();
}

我在VC中这样调用没问题~~

#8


clx?你这不是VCL的工程?

#9


引用 8 楼 ccrun 的回复:
clx?你这不是VCL的工程?


饿……………………………………
今天头一次接触bcb,我创建了一个vcl就能实现了~~~

#10


引用 8 楼 ccrun 的回复:
clx?你这不是VCL的工程?

谢谢大家啊~~