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

jni 取得java窗口句柄

2012-08-27 
jni 获得java窗口句柄我们知道C++的每个窗体都对应着一个句柄HWND,通过这个句柄我们可以对这个窗口以及它

jni 获得java窗口句柄

我们知道C++的每个窗体都对应着一个句柄HWND,通过这个句柄我们可以对这个窗口以及它的资源进行各种操作,比如让它前端显示等。那么操作系统给Java编写的窗体(Frame或者JFrame的对象或者子类对象)有没有分配这个唯一的HWND呢。需要使用库文件Java\jdk1.6.0_24\lib\jawt.lib

#include<windows.h> #include"jni.h"#include"jawt_md.h"#include"jni_md.h"HWND GetWndHandle(JNIEnv *env, jobject window){HWND hwnd = NULL;    JAWT_DrawingSurface *ds;    JAWT_DrawingSurfaceInfo *dsi;    JAWT_Win32DrawingSurfaceInfo *win;    JAWT awt;    awt.version = JAWT_VERSION_1_3;    jboolean result = JAWT_GetAWT(env, &awt);    if(result == JNI_TRUE)    {        ds = awt.GetDrawingSurface(env, window);        jint lock = ds -> Lock(ds);        if(lock != JAWT_LOCK_ERROR)        {            dsi = ds -> GetDrawingSurfaceInfo(ds);            win = (JAWT_Win32DrawingSurfaceInfo *) dsi -> platformInfo;                      hwnd = win -> hwnd;            ds -> FreeDrawingSurfaceInfo(dsi);            ds -> Unlock(ds);            awt.FreeDrawingSurface(ds);        }    }    return hwnd;}

热点排行