小编tob*_*obi的帖子

结构冗余

我想从更有经验的程序员那里得到一些意见.我有一个像这样的结构:

struct Position {
    int x;
    int y;
};
Run Code Online (Sandbox Code Playgroud)

但我需要在一个结构中存储例如经度,例如:

struct Longitude {
    int from;
    int to;
};
Run Code Online (Sandbox Code Playgroud)

两者实际上是具有不同名称相同,但xy在的情况下,具有误导性Longitude.你会使用一些typedef Position Longitude而不是定义Longitude结构(但那时我们有x/y ......)?或者使用其他名称创建相同的冗余结构?或许还有其他选择?

c++

5
推荐指数
1
解决办法
161
查看次数

鼠标挂钩 - 限制和性能

我有一些关于WH_MOUSE的问题.根据我的阅读,通过将钩子放入DLL中,它会注入进程.这是否意味着捕获鼠标也可以在我的桌面,菜单启动等工作?那应用程序的标题栏呢?我在互联网上看到过一些有这些问题的帖子,但不知道他们是否因某些事情而失败或有某种限制(或其他方法).

我还有一个关于WH_MOUSE和WH_MOUSE_LL之间性能的问题.我发现某个地方WM_MOUSE比WH_MOUSE_LL快,但它真的很明显吗?如果是这样,在什么情况下它可以减慢系统的速度,我们可以注意到这一点?如果我只想记录鼠标和键盘的点击,WH_MOUSE_LL会有效吗?

谢谢!

c++ performance hook winapi

4
推荐指数
1
解决办法
1823
查看次数

哪个列是按QTableWidget排序的数据

如何获取一些值来指定数据排序的列(以及它是升序还是降序)QTableWidget?我在文档中找不到任何关于它的内容,只是关于以编程方式排序.

c++ qt qtableview

4
推荐指数
1
解决办法
3212
查看次数

GET_X_LPARAM给出负值

我已经为鼠标创建了一个钩子.我想获得鼠标点击坐标,但GET_X_LPARAM()给我负值(点击不同的地方时总是一样).GetCursorPos()解决了我的问题,但我想知道它为什么不能使用GET_X_LPARAM/GET_Y_LPARAM.这是代码:

LRESULT CALLBACK Recorder::mouseHook( int code, WPARAM wParam, LPARAM lParam ) {
 if( code < 0 )
     return CallNextHookEx( m_mouseHook, code, wParam, lParam );   

 switch( wParam ) {
    case WM_LBUTTONDOWN:{
        int _hereIsANegativeNumber = GET_X_LPARAM( lParam );
        break;}
 }

 return CallNextHookEx( 0, code, wParam, lParam );
}
Run Code Online (Sandbox Code Playgroud)

这是我设置钩子的方式:

m_mouseHook = SetWindowsHookEx( WH_MOUSE_LL, &mouseHook, GetModuleHandle( NULL ), 0 );
Run Code Online (Sandbox Code Playgroud)

c++ windows hook winapi

4
推荐指数
1
解决办法
1192
查看次数

时差 - 奇怪的结果

我有非常简单的代码,可以计算两次之间的差异:

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.GregorianCalendar;

public class JavaApplication8 {
    private static final SimpleDateFormat timeFormat = new SimpleDateFormat("hh:mm:ss.SSS");

    public static void main(String[] args) throws InterruptedException {
        Date start = GregorianCalendar.getInstance().getTime();
        Thread.sleep(100);
        Date end   = GregorianCalendar.getInstance().getTime();

        long diff = end.getTime() - start.getTime();
        System.out.println(timeFormat.format(diff));
    }
}
Run Code Online (Sandbox Code Playgroud)

但它打印01:00:00.100而不是00:00:00.100,为什么?

java time date

4
推荐指数
1
解决办法
166
查看次数

单击按钮中的()信号

Qt 4.8.0中的按钮信号有问题.我在Qt Designer中使用vs 2010.我在Designer中使用playButton名称创建了一个按钮.但之后我尝试将clicked()信号(在vs中)与CRenderArea中的函数连接(以启动计时器),但似乎它不起作用(函数start()在我把它放在构造函数中时起作用,所以这不是代码本身的问题).代码正在编译,程序正在执行,但是在单击按钮后 - 没有任何反应(它应该移动一行).

我真的很感谢你的帮助,开始玩Qt的乐趣.

代码在这里(我希望文件的数量不会吓到你,这些是最简单的代码:)):

main.cpp中

#include "ts_simulator.h"
#include <QtGui/QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    TS_simulator w;
    w.show();
    return a.exec();
}
Run Code Online (Sandbox Code Playgroud)

ts_simulator.cpp:

TS_simulator::TS_simulator(QWidget *parent, Qt::WFlags flags)
    : QMainWindow(parent, flags)
{
    p_map = new CRenderArea();
    ui.setupUi( this );
    p_map->setParent( ui.renderArea );

    // this doesn't work, why?
    connect( ui.playButton, SIGNAL( clicked() ), this, SLOT( p_map->start() ) );
}
Run Code Online (Sandbox Code Playgroud)

CRenderArea.h

#pragma once

#include <QtGui>

class CRenderArea : public QWidget {
    Q_OBJECT // I think it's necessary? …
Run Code Online (Sandbox Code Playgroud)

qt signals

3
推荐指数
1
解决办法
1万
查看次数

字节类型中的负值

我刚开始在C#上挣扎,我有一个问题.

在以下代码中:

byte var = 0;
Console.WriteLine("{0}", ~var);
Run Code Online (Sandbox Code Playgroud)

为什么打印-1?来自http://www.csharp-station.com/Tutorial/CSharp/Lesson02我读过字节范围从0到255而〜(00000000)_2给出(11111111)_2等于(255)_10 .

c#

3
推荐指数
1
解决办法
1845
查看次数

打破构造函数中对象的创建

我班上的构造函数检查某些条件.在某些情况下,它应该打破对象的创建.我应该在那里放置析构函数还是只返回声明?

它是这样的:

代码中的某个地方:

new Obj( string );
Run Code Online (Sandbox Code Playgroud)

和我的构造函数:

Obj::Obj( string ) {
    if( string == "something" ) {
        // should I put this here or only return?
        Obj::~Obj();
        return;
    }
    // ...
}
Run Code Online (Sandbox Code Playgroud)

我知道我可以在创建对象之前检查条件,但我只是想知道它是否正确(如果没有内存泄漏),因为它编译得很好而不会在运行时崩溃.

c++

2
推荐指数
1
解决办法
1449
查看次数

如何在函数中分配2D数组

我有这样的功能:

void QuadTree::alloc( Quad***& pQuadsArray ) {
    const int _quadsCount = 100;

    // allocates memory as one chunk of memory
    Quad** _data = new Quad*[_quadsCount * _quadsCount]; 
    pQuadsArray = new Quad**[_quadsCount];
    for( int i = 0; i < _quadsCount; ++i ) {
            pQuadsArray[i] = _data + i * _quadsCount;
    }
}

// calling like this:
Quad*** test = nullptr;
alloc( test );
Run Code Online (Sandbox Code Playgroud)

它运作良好.但是这个没有,我不知道为什么:

void QuadTree::alloc( Quad**** pQuadsArray ) {
    const int _quadsCount = 100;

    // allocates memory as one chunk …
Run Code Online (Sandbox Code Playgroud)

c++

2
推荐指数
1
解决办法
78
查看次数

使用指针和引用获取对象

让我们假设我们有一个statically(Type mObject;)创建的对象,它通过使用getObject()方法向程序员公开.我想知道以这种方式获取对象有哪些优点和缺点?

Type* SomeClass::getObject() {
    return &mObject;
}

// the programmer types
Type* obj = someClassObj.getObject();
obj->someMethod();
Run Code Online (Sandbox Code Playgroud)

这样:

Type& SomeClass::getObject() {
    return mObject;
}

// the programmer types
Type& obj = someClassObj.getObject();
obj.someMethod();
Run Code Online (Sandbox Code Playgroud)

c++

2
推荐指数
1
解决办法
125
查看次数

标签 统计

c++ ×7

hook ×2

qt ×2

winapi ×2

c# ×1

date ×1

java ×1

performance ×1

qtableview ×1

signals ×1

time ×1

windows ×1