ºìÁªLinuxÃÅ»§
Linux°ïÖú

SWTµÄ¿ÉÊÓ»¯¿Ø¼þµÄX11´°¿Ú¾ä±ú¼ò½é

·¢²¼Ê±¼ä:2006-10-08 11:41:24À´Ô´:ºìÁª×÷Õß:Çñ½¨Ôª
¡¡¡¡SWTÓëAWT±¾ÖÊÉ϶¼ÊÇÒ»Ì×ÒÀÀµÓÚ²Ù×÷ϵͳ¾ßÌåʵÏÖµÄGUI¿â¡£ÓëswingÔÚËùÓвÙ×÷ϵͳÉÏÍâ¹ÛÒ»ÖµÄ×ö·¨²»Í¬£¬awtºÍswtÔÚ²»Í¬µÄ²Ù×÷ϵͳÉϵÄÍâ¹ÛÊǺͱ¾µØ´°¿ÚÒ»ÑùµÄ¡£

¡¡¡¡Ã¿Ò»¸öswtºÍawtµÄ´°¿Ú¶¼¶ÔÓ¦Ò»¸ö±¾µØ´°¿Ú£¨native window£©£¬×ÔȻҲ»áÓÐÒ»¸ö´°¿Ú¾ä±ú¡£¶øswingÔò²»Í¬£¬ÊÇûÓб¾µØ´°¿Ú¾ä±úµÄ¡£ÔÚ»ñµÃ´°¿Ú¾ä±úÖ®ºó£¬¾Í¿ÉÒÔºÍÓÃÆäËûµÄÓïÑÔ£¨±ÈÈçC++£©ÊµÏÖµÄ GUIÓ¦ÓóÌÐò½øÐÐһЩ»¥²Ù×÷¡£±ÈÈçÎÒÃÇ¿ÉÒÔµ÷ÓÃһЩSetParene()Ö®ÀàµÄ·½·¨°ÑÒ»¸ö±¾µØµÄ´°¿ÚǶÈëµ½Ò»¸öSWTµÄ´°¿ÚÀïÀ´£¬·´Ö®ÒàÈ»¡£ÕâÑù¾ÍÌṩÁËÒ»¸ö´´½¨¸ü·á¸»ÃÀ¹ÛµÄ£¬¿ÉÀ©³äÐÔ¸üÇ¿µÄGUIÓ¦ÓóÌÐòµÄÊֶΡ£

¡¡¡¡¹ØÓÚAWTµÄ´°¿Ú¾ä±úÈçºÎ»ñµÃ£¬¾Í²»¶à˵ÁË¡£´ó¼Ò¿ÉÒԲο¼Ò»ÏÂÄãµÄjdkµÄ°²×°Ä¿Â¼µÄinclude×ÓĿ¼£¬¿ÉÒÔ¿´µ½ÀïÃæÓÐÒ»¸öjawt.h£¬ÀïÃæÓÐÒ»¸öºÜÈÝÒ׿´¶®µÄµÃµ½ÏµÍ³µÄwindow handleµÄsample. ÎÒÊÇÓõÄlinuxÉϵÄSUN j2sdk 1.4,ÔÚinclude/linux×ÓĿ¼Àﻹ¿ÉÒÔ¿´µ½jawt_md.h.ÀïÃæ¶¨ÒåÁËÒ»¸östruct£º

[code]typedef struct jawt_X11DrawingSurfaceInfo {
Drawable drawable;
Display* display;
VisualID visualID;
Colormap colormapID;
int depth;
/*
* Since 1.4
* Returns a pixel value from a set of RGB values.
* This is useful for paletted color (256 color) modes.
*/
int (JNICALL *GetAWTColor)(JAWT_DrawingSurface* ds,
int r, int g, int b);
} JAWT_X11DrawingSurfaceInfo;[/code]

¡¡¡¡drawableÕâ¸ö³ÉÔ±Æäʵ¾ÍÊÇX11µÄResource ID.ÔÚjawt.hµÄÄǸösampleÖУ¬Ö»Òª°Ñdsi->platforminfoת»»³É jawt_X11DrawingSurfaceInfoÀàÐÍ£¬¾Í¿ÉÒԵõ½X11µÄresource IDÁË£¬ÊDz»ÊǺÜÈÝÒ×ÄØ¡£

¡¡¡¡ÖÁÓÚSWT£¬ËùÓпؼþºÍ´°¿ÚµÄ¸¸Ààorg.eclipse.swt.widgets.ControlÓÐÒ»¸ö³ÉÔ±±äÁ¿handle.°´ÕÕSWTµÄ¹Ù·½API µÄ˵·¨£ºthe handle to the OS resource (Warning: This field is platform dependent) ¡£Èç¹ûÊÇWin32ƽ̨ÉÏ£¬ÄÇôÕâ¸öhandleÆäʵ¾ÍÊÇWin32 APIÀïµÄÄǸö×î³£¼ûµÄHWND¡£Èç¹ûÓÃspy++µÄ»°¿ÉÒÔºÜÈÝÒ׿´µ½¡£ÔÚlinuxÉϾͲ»ÊÇÕâÑùÁË¡£----ÖÕÓÚ˵µ½ÕýÌâÁË¿´À´ÎÒ»¹ÕæÊÇÄÜÍÏÏ·°¡¡­¡­, hoho £©¡£

¡¡¡¡ÓÉÓÚÔÚLinuxÉÏ£¬swtÊÇ»ùÓÚ²»Í¬µÄ±¾µØ´°¿Ú·ç¸ñÀ´¹¹½¨×Ô¼ºµÄ´°¿ÚµÄ£¬ËùÒÔ¾ÍÓÐÁËMotif°æµÄºÍgtk°æµÄSWT¡£²»ÖªµÀ»á²»»áÓÐQT°æµÄ£¬ºÇºÇ¡£ÎÒÊÇÓõÄgtk°æ±¾µÄSWT£¬ËùÒÔorg.ecllipse.swt.widgets.ControlµÄ³ÉÔ±handle²¢²»ÊÇX11µÄresource ID£¬Í¨¹ý²ì¿´swtµÄsource code·¢ÏÖ£¬Õâ¸öhandleÆäʵÊÇÒ»¸öGtkWidget*ÀàÐ͵ıäÁ¿¡£OK,ÎÒÃǾͿÉÒÔͨ¹ýÀàËÆÕâÑùÒ»¶Î´úÂëÀ´µÃµ½X11µÄresource ID:

[code]JNIEXPORT jlogn JNICALL Java_.......getX11Handle(JNIEnv* env, jobject obj_this, jlong swt_handle)
{
GtkWidget* pWidget = (GtkWidget*)((int)swt_handle);
GdkWindow* pWindow = pWidget->window;
int x11id = GDK_WINDOW_XWINDOW(pWindow);
}[/code]

¡¡¡¡ÕâÑùÎÒÃǾ͵õ½ÁËÕâ¸öswt¿Ø¼þµÄX11 IDÁË¡£
ÎÄÕÂÆÀÂÛ

¹²ÓÐ 0 ÌõÆÀÂÛ