求解linux下wxwidgets2.8 剪贴板编程疑问

这是wxWidgets论坛的中文版本。在这里,您可以用您的母语汉语讨论上面任一子论坛所涉及的所有关于wxWidgets的话题。欢迎大家参与到对有价值的帖子的中英互译工作中来!
Post Reply
my3world
In need of some credit
In need of some credit
Posts: 1
Joined: Fri Oct 02, 2015 8:35 pm

求解linux下wxwidgets2.8 剪贴板编程疑问

Post by my3world » Fri Oct 02, 2015 9:38 pm

环境:linux mint 17.2+codeblocks+wxwidgets2.8.12
当我建立GUI工程时使用<<使用wxWidgets进行跨平台程序开发>>里面的例子

Code: Select all

    wxClipboardLocker locker;
    if (!locker)
        return;
    if (wxTheClipboard->Open())
    {
        wxTheClipboard->SetData(new wxTextDataObject(_("test")));
        wxTheClipboard->Close();
    }
结果第二个判断总是返回false
去掉

Code: Select all

    wxClipboardLocker locker;
    if (!locker)
        return;
后正常, 这是第一个疑问:locker检测了什么东西,这检测必必要的话,上面的代码该如何改进?
当我像书上面一样使用wxT宏时,运行无错,程序用空字符串冲掉了系统的剪贴板内容.这是BUG吗?
第三个疑问,我该怎么做才能在控制台下使用wxTheClipboard?

Code: Select all

#include </usr/include/wx-2.8/wx/clipbrd.h>
#include </usr/include/wx-2.8/wx/dataobj.h>
#include <wx/intl.h>
#include <iostream>
using namespace std;
int main()
{
    string s;
    if (wxTheClipboard->Open())
    {
        wxTheClipboard->SetData(new wxTextDataObject(_("test")));
        wxTheClipboard->Close();
        cin >> s;
    }
    return 0;
}
代码运行到

Code: Select all

    if (wxTheClipboard->Open())
自动跳出而且程序返回值为0...

Post Reply