• 6890阅读
  • 6回复

请高手指教,我需要在程序中使用x11库函数,但是出错 [复制链接]

上一主题 下一主题
离线ljp1205
 
只看楼主 倒序阅读 楼主  发表于: 2008-08-28
— 本帖被 XChinux 执行加亮操作(2008-09-03) —
简单代码如下:
void do_key(Display *display,struct Event *e)
{
  .............
  KeyCode c = XKeysymToKeycode(display, e->val.key.c);
  if(e->val.key.action != KEY_UP)
        XTestFakeKeyEvent(display, c, True, 0);
  ...............................
  ........................
  .........................
}
struct Event是我自己定义的一个结构体变量,KEY_UP也是自己定义的。
我也使用#include <X11/Xlib.h>了
但是现在的问题是在用g++编译都是报错说XTestFakeKeyEvent在此作用域中尚未声明。但是我奇怪的是XKeysymToKeycode这个函数却没有问题,
而且倘若用gcc来编的话同样没问题 。
不晓得在哪个地方得罪g++了
。。。。。。。。。。
请各位高手指点一下吧
离线ljp1205
只看该作者 1楼 发表于: 2008-08-28
我在想是不是x11库是个c库才导致这个问题的出现??
如果是这样的话
想请教该怎么在cpp文件里调用c库的函数
。。。。。。。。。。
离线ljp1205
只看该作者 2楼 发表于: 2008-08-29
额这个问题我自己想了个苯办法给解决了。
由于x11是c库的。
所以我把有关x开头的函数全部放在了.c的文件里,
然后就只剩下怎么在.cpp里调用.c里实现的函数的问题。
这个也好解决
在a.h声明下在b.cpp里要使用的函数,在该函数的头部加上extern 。
然后在b.cpp包含a.h的时候使用这种方式:extern “C”{#include"a.h"}
这样就顺利搞定了
。。。。。。。。。。
PS:x11的东西确实繁,qt自动生成的makefile文件往往找不到正确的x11库,被这个东西快搞死了
。。。。。。。。。。。
离线water_wf

只看该作者 3楼 发表于: 2008-08-29
别怪gcc
man XTestFakeKeyEvent 不就可以了,不比 windows简单?
离线duduqq

只看该作者 4楼 发表于: 2008-08-31
我也要做软键盘这样的东西,你能把你的代码发给我吗,ouyangzy2005@163.com
离线ljp1205
只看该作者 5楼 发表于: 2008-09-01
引用第4楼duduqq于2008-08-31 09:42发表的  :
我也要做软键盘这样的东西,你能把你的代码发给我吗,ouyangzy2005@163.com

呵呵,我正烦这个呢,好象找到的窗口总是得不到输入焦点
。。。。。。。。。
比如说我想输入一个2到一个窗口中但是总是把2输入到命令行里
你找到有解决的方法没?
离线duduqq

只看该作者 6楼 发表于: 2008-09-01
http://www.qt-apps.org/content/show.php/QVKeyboard?content=77983有一个软键盘,是在qtio下运行的,你下来试试
快速回复
限100 字节
 
上一个 下一个