C++ 程序中如何操作JAVA窗口组件?


最近做一个视频应用,使用的天敏VC4000 视频采集卡,厂商提供SDK开发包只能针对VB,C# ,VC 的开发,我使用JAVA通过JNI的方式调用C++的DLL本地方法,但是SDK提供的函数中需要传一个窗口句柄,也就是视频显示的窗口的句柄,JAVA 中的窗口组件只能先通过JNI方式获取窗口句柄(是一个long值),然后再将窗口句柄作为参数传给本地方法。这样做的目的是想将视频显示到JAVA窗口中,但测试的时候没有显示,请问,C++ 中能否这样操作JAVA窗口组件呢?

   
  //首先获取父窗口的句柄
  

// initSDK
long frameHwnd = JNIWindowUtilProxy.getWindowHWND(jawtpath,parent);
System.out.println("Frame 窗口句柄是:"+frameHwnd);
//初始化采集卡驱动
boolean ret = initSAA7134(frameHwnd);
// if(!ret){
// //JDialog.
// System.out.println("初始化VC4000采集卡驱动失败");
// return;
// }


//获取视频设备的个数
int devNum = getDeviceNum();
System.out.println("当前设备数:"+devNum);
int hwnd = JNIWindowUtilProxy.getWindowHWND(jawtpath, parent);
//打开视频设备预览
if(!start(hwnd,0)){
throw new RuntimeException(" start captureDevice faild!");
}

java jni

sailkob 12 years, 3 months ago

可以吧窗口句柄保存为long类型的数据,但是在往jni中传递的时候,在jni内部通过强制类型转化,再转化成窗口句柄。这个方法initSAA7134应该就是你的jni函数吧?
但是人家VC中的窗口句柄,是用来调用windows的API的,java中操作这些东西,我估计应该不行。

肉嘎嘎思密达 answered 12 years, 3 months ago

Your Answer