⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 3.cpp

📁 unix/linux下面X-Windows的开发示例代码
💻 CPP
字号:
 #include <stdio.h> #include <locale.h>  	 #include <X11/Xlib.h> #include <X11/Xutil.h> #include <X11/Xos.h> #include <X11/Xatom.h>  	 #define DUMP_ERR    printf  	 static void draw(Display *display,Window win,XFontSet fontset,GC gc);  	 int main() {     Display *display;     int     screennum;     int     width;     int     height;     Atom    protocols;     int     i;  	     const char *strdraw = “hello world”;  	     Window      win;     GC          gc;     XFontSet    fontset;  	     //  set the locale     const char *curlocale =setlocale(LC_ALL,”");     if( curlocale == NULL){         DUMP_ERR(”set locale fail\n”);         return 1;     }     DUMP_ERR(”locale is:%s\n”,curlocale);  	     if(!XSupportsLocale()){         DUMP_ERR(”X don’t support current locale\n”);         return 1;     }  	     //  open display for X     display = XOpenDisplay(NULL);     if( !display ){         DUMP_ERR(”call XOpenDisplay(%s) fail\n”,XDisplayName(NULL));         return 1;     }  	     //  get default screen     screennum       = DefaultScreen(display);     width   = DisplayWidth(display,screennum)/2;     height  = DisplayHeight(display,screennum)/2;  	     //  get the fontset     {         char **missing_charset_list_return;         int  missing_charset_count_return;         char *def_string_return;         fontset = XCreateFontSet(display,”8x16,-*-gb2312.1980-0″,                 &missing_charset_list_return,                 &missing_charset_count_return,                 &def_string_return);         if(missing_charset_count_return > 0){             for(i=0;i<missing_charset_count_return;i++){                 DUMP_ERR(”fontset(%s) missing\n”,                         missing_charset_list_return[i]);             }             DUMP_ERR(”def string(%s)\n”,def_string_return);             XFreeStringList(missing_charset_list_return);             XCloseDisplay(display);             return 1;         }     }  	     //  create window     win = XCreateSimpleWindow(display,             RootWindow(display,screennum),             0,0,width,height,3,             BlackPixel(display,screennum),             WhitePixel(display,screennum));  	     protocols = XInternAtom(display, “WM_DELETE_WINDOW”, True);     XSetWMProtocols(display, win, &protocols, 1);   	     //  select event     XSelectInput(display,win,             ExposureMask|KeyPressMask             |ButtonPressMask|StructureNotifyMask);  	     //  create gc     {         unsigned long valuemask = 0;         XGCValues   values;         gc  = XCreateGC(display,win,valuemask,&values);     }  	     //  show window     XMapWindow(display,win);  	     //  event loop     while(1){         XEvent  event;         XNextEvent(display,&event);  	         switch(event.type){             case Expose:    // expose window                 if( event.xexpose.count != 0) break;                 draw(display,win,fontset,gc);                 //XDrawString(display,win,gc,10,10,                 //strdraw,strlen(strdraw));                 break;  	             case ConfigureNotify:   // when the window’s size change                 width   = event.xconfigure.width;                 height  = event.xconfigure.height;                 break;             case ClientMessage :                 if(event.xclient.data.l[0] == protocols){                     DUMP_ERR(”recv destroy notify\n”);                     XFreeFontSet(display,fontset);                     XFreeGC(display,gc);                     XDestroyWindow(display, win);                     XCloseDisplay(display);                 }                 return 0;  	             default:                 break;         }     } }  	 static void draw(Display *display,Window win,XFontSet fontset,GC gc) {     const char* pout = “Helo 你好 ,这是中文显示 i使用mb与wc两种输出”;     wchar_t wbuf[256];     int wlen    = mbstowcs(wbuf,pout,strlen(pout));  	     XmbDrawString(display,win,fontset,gc,10,10,pout,strlen(pout));     XwcDrawString(display,win,fontset,gc,10,50,wbuf,wlen); } 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -