我想从更有经验的程序员那里得到一些意见.我有一个像这样的结构:
struct Position {
int x;
int y;
};
Run Code Online (Sandbox Code Playgroud)
但我需要在一个结构中存储例如经度,例如:
struct Longitude {
int from;
int to;
};
Run Code Online (Sandbox Code Playgroud)
两者实际上是具有不同名称相同,但x与y在的情况下,具有误导性Longitude.你会使用一些typedef Position Longitude而不是定义Longitude结构(但那时我们有x/y ......)?或者使用其他名称创建相同的冗余结构?或许还有其他选择?
我有一些关于WH_MOUSE的问题.根据我的阅读,通过将钩子放入DLL中,它会注入进程.这是否意味着捕获鼠标也可以在我的桌面,菜单启动等工作?那应用程序的标题栏呢?我在互联网上看到过一些有这些问题的帖子,但不知道他们是否因某些事情而失败或有某种限制(或其他方法).
我还有一个关于WH_MOUSE和WH_MOUSE_LL之间性能的问题.我发现某个地方WM_MOUSE比WH_MOUSE_LL快,但它真的很明显吗?如果是这样,在什么情况下它可以减慢系统的速度,我们可以注意到这一点?如果我只想记录鼠标和键盘的点击,WH_MOUSE_LL会有效吗?
谢谢!
如何获取一些值来指定数据排序的列(以及它是升序还是降序)QTableWidget?我在文档中找不到任何关于它的内容,只是关于以编程方式排序.
我已经为鼠标创建了一个钩子.我想获得鼠标点击坐标,但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) 我有非常简单的代码,可以计算两次之间的差异:
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,为什么?
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) 我刚开始在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 .
我班上的构造函数检查某些条件.在某些情况下,它应该打破对象的创建.我应该在那里放置析构函数还是只返回声明?
它是这样的:
代码中的某个地方:
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)
我知道我可以在创建对象之前检查条件,但我只是想知道它是否正确(如果没有内存泄漏),因为它编译得很好而不会在运行时崩溃.
我有这样的功能:
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) 让我们假设我们有一个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)