小编Lih*_*ihO的帖子

影响ListView标头的Windows主题

我用一个包含ListView的简单表单创建了新的Windows窗体应用程序(C#).然后我将View Property更改为Details并增加了此ListView中使用的字体的大小,结果如下:

这是它在Windows XP上使用Windows经典主题的外观:
在此输入图像描述

这是Windows XP主题的结果:
在此输入图像描述

我可以通过删除Application.EnableVisualStyles()调用或更改以下内容 来阻止我的应用程序的外观受Visual Styles影响Application.VisualStyleState: 在此输入图像描述
虽然此更改使ListView具有所需的外观,但它也会影响其他控件的外观.我希望我的ListView是唯一不受Visual Styles影响的控件.

我也发现了类似的问题试图解决它:
你可以关闭只有一个窗口控件的视觉样式/主题吗?
如何仅为一个控件而不是其子控件禁用视觉样式?

不幸的是,没有提到的解决方案有效 看起来标题本身将由一些受视觉样式影响的控件组成,即使禁用了ListView控件的可视样式也是如此.

任何阻止视觉样式影响ListView标题外观的C#解决方案都将受到赞赏.

c# listview windows-xp visual-c++ winforms

10
推荐指数
1
解决办法
2910
查看次数

如何只更新Yii中活动记录的特定字段?

我有一个模型(ActiveRecord)有5个属性(DB列).
我获取特定记录并填充包含3个字段的表单(不应更新其他两个字段).
然后我更改特定字段并按保存.

如何更新记录,而不是触及不在表单中的字段?

php activerecord model yii sql-update

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

OpenCV图像从RGB转换为HSV

当我在样本图像(RGB)上运行以下代码,然后处理它以显示转换的HSV图像时,两者看起来都不同......

谁能解释为什么会这样?
或者
你可以建议一个解决方案,这不会发生...因为它毕竟是相同的图像

Mat img_hsv,img_rgb,red_blob,blue_blob;
img_rgb = imread("pic.png",1);
cvtColor(img_rgb,img_hsv,CV_RGB2HSV);
namedWindow("win1", CV_WINDOW_AUTOSIZE);
imshow("win1", img_hsv);
Run Code Online (Sandbox Code Playgroud)

c++ opencv image image-processing visual-c++

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

STL算法使用多核吗?

C++ STL算法是否在引擎盖下使用多核CPU 以提高性能?如果没有,是否有任何推荐的库可以执行STL的功能,但是使用多个内核,比如使用OpenMP?或者是否有任何开关可以在编译期间指定gcc指示STL使用多个内核

编辑:我在Ubuntu 10.10和gcc 4.4上使用Intel Core i7 960处理器

c++ multithreading stl

9
推荐指数
1
解决办法
1156
查看次数

为什么浮动变量通过以奇怪的方式在点之后切割数字来节省值?

我有这个简单的代码行:

float val = 123456.123456;
Run Code Online (Sandbox Code Playgroud)

当我打印此val或查看范围时,它存储值123456.13

好吧,没关系,它不能在4个字节之后存储所有那些数字,但为什么它在点之后产生13?不应该是12吗?

(在win32上使用vc ++ 2010 express)

c++ floating-point digits ieee-754 floating-point-precision

9
推荐指数
3
解决办法
910
查看次数

无法将char*[2]类型的数组地址传递给char***函数

我的XCode(默认编译器应该是clang?)向我展示了这段代码的警告:

Incompatible pointer types passing 'char *(*)[2]' to parameter of type 'char ***' (当调用func时)

void func (char ***arrayref, register size_t size) {
    /// ...
}

int main()
{
    char *array[2] = {"string", "value"};
    func(&array, 2);
}
Run Code Online (Sandbox Code Playgroud)

而这段代码没问题(=没有警告):

void func (char **arrayref, register size_t size) {
    /// ...
}

int main()
{
    char *array[2] = {"string", "value"};
    func(array, 2);
}
Run Code Online (Sandbox Code Playgroud)

虽然这消除了警告

func((char***)&array, 2);
Run Code Online (Sandbox Code Playgroud)

我仍然不知道为什么第一个发出警告,而后者不发出警告.

另外,当第一个出现问题时,我也希望第一个发出警告,如:

Incompatible pointer types passing 'char *[2]' to parameter of type 'char **'

c arrays pointers parameter-passing pass-by-reference

9
推荐指数
2
解决办法
6130
查看次数

何时使用unsigned char指针

unsigned char指针有什么用?我已经在许多地方看到它指针被指定为指向我们unsinged char为什么这样做?

我们收到一个指针int,然后输入它unsigned char*.但是如果我们尝试使用cout在该数组中打印元素,它就不会打印任何内容.为什么?我不明白.我是c ++的新手.

编辑下面的示例代码

int Stash::add(void* element)
{
    if(next >= quantity)
    // Enough space left?
        inflate(increment);

    // Copy element into storage, starting at next empty space:
    int startBytes = next * size; 
    unsigned char* e = (unsigned char*)element;
    for(int i = 0; i < size; i++)
        storage[startBytes + i] = e[i];
    next++;
    return(next - 1); // Index number
}
Run Code Online (Sandbox Code Playgroud)

c++ pointers

8
推荐指数
2
解决办法
2万
查看次数

在为所有枚举值定义case之后,编译器仍然说:"控制到达非void函数的结尾"

写一个简单的评估我遇到了一个有趣的问题.

鉴于代码:

enum node_type {LEAF, NODE};

struct tree_elm_t {
  enum node_type type;
  union {
    struct tree_node_t node;
    struct tree_leaf_t leaf;
  } datum;
};

int parse_leaf(struct tree_leaf_t leaf);
int parse_node( struct tree_node_t node );
int parse_tree( struct tree_elm_t* tree );

....

int parse_tree( struct tree_elm_t* tree ) {
  switch( tree->type ) {
  case NODE: return parse_node(tree->datum.node);
  case LEAF: return parse_leaf(tree->datum.leaf);
  }  
}
Run Code Online (Sandbox Code Playgroud)

我很惊讶地看到gcc抱怨缺少控制流选项:

example.c: In function 'parse_tree':
example.c:54: warning: control reaches end of non-void function
Run Code Online (Sandbox Code Playgroud)

通过将返回值存储在如下变量中可以解决流问题:

int parse_tree( struct tree_elm_t* tree …
Run Code Online (Sandbox Code Playgroud)

c enums gcc static-analysis switch-statement

8
推荐指数
1
解决办法
1236
查看次数

如何使用std :: getline()将文本文件读入C++中的字符串数组?

我试图std::getline()在我的项目中使用将文本文件读入字符串数组.

这是我的代码:

ifstream ifs ( path );
string * in_file;
int count = 0;
while ( !ifs.eof() )
{
    ++count;
    if ( count == 1 )
    {
        in_file = new string[1];
    }
    else
    {
            // Dynamically allocate another space in the stack
    string *old_in_file = in_file;
    in_file = new string[count];
            // Copy over values
    for ( int i = 0 ; i < ( count - 1 ) ; i++ )
    {
        in_file[i] = old_in_file[i];
    }
    delete[] old_in_file; …
Run Code Online (Sandbox Code Playgroud)

c++ arrays file-io fstream dynamic-arrays

8
推荐指数
2
解决办法
2万
查看次数

函数返回BYTE数组

我希望我的函数返回一个BYTE数组.功能如下.

BYTE sendRecieveData(BYTE control, unsigned int value){

//Open connection to LAC
HANDLE LACOutpipe;
HANDLE LACInpipe;
LACOutpipe=openConnection(MP_WRITE);
LACInpipe=openConnection(MP_READ);

//declare variables
BYTE bufDataOut[3];
BYTE bufDataIn[3];
DWORD bufInProcess;
DWORD bufOutProcess;


//sets CONTROL
bufDataOut[0]=control;

//sets DATA to be sent to LAC
BYTE low_byte = 0xff & value;
BYTE high_byte = value >> 8;
bufDataOut[1]=low_byte;
bufDataOut[2]=high_byte;

MPUSBWrite(LACOutpipe,bufDataOut,3,&bufOutProcess,1000);
MPUSBRead(LACInpipe,bufDataIn,3,&bufInProcess,1000);
MPUSBClose(LACOutpipe);
MPUSBClose(LACInpipe);

return bufDataIn[3];
}
Run Code Online (Sandbox Code Playgroud)

它不返回一个字节数组,当我BYTE改为BYTE[]BYTE[3]它给我一个错误.

c++ return bytearray return-value visual-c++

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