posts - 1, comments - 3, trackbacks - 0, articles - 0
re: socket悲剧[未登录] VK 2011-08-05 14:10
这东西是怎么出来的?
同端口 bind->listen->connect自己?
//和文件名匹配相似,只支持*和?,无递归
#define FIX_SIZE 1024
bool _match_fix_size(const wchar_t* src, int srcLen, const wchar_t* rule, int ruleLen)
{
// 声明扫描线并确定新长度
bool old_scan[FIX_SIZE + 1];
bool new_scan[FIX_SIZE + 1];
const int rule_max = ruleLen + 1;
const int src_max = srcLen + 1;

//长度不能超过FIX_SIZE
if (rule_max >= FIX_SIZE || src_max >= FIX_SIZE)
return false;

// 复制平移一个位置
wchar_t src_copy[FIX_SIZE + 1];
wchar_t rule_copy[FIX_SIZE + 1];
memcpy(&src_copy[1], src, (srcLen + 1) * sizeof(wchar_t));
memcpy(&rule_copy[1], rule, (ruleLen + 1) * sizeof(wchar_t));

//初始化扫描线
for(int i = 0; i < src_max + 1; ++i)
{
new_scan[i] = false;
old_scan[i] = false;
}

// 初始化启动标记(new_scan无启动标记)
src_copy[0] = 0;
rule_copy[0] = 0;
old_scan[0] = true; // old_scan 以true开始


//1才是开始
for(int i = 1; i < rule_max + 1; ++i)
{
for(int j = 1; j < src_max + 1; ++j)
{
new_scan[j] = false;
if(rule_copy[i - 1] == src_copy[j - 1] && old_scan[j - 1])
new_scan[j] = true;
if(rule_copy[i - 1] == L'?' && old_scan[j - 1])
new_scan[j] = true;

if(rule_copy[i - 1] == L'*')
{
if(new_scan[j - 1])
new_scan[j] = true;
if(old_scan[j])
new_scan[j] = true;
}
}
for(int j = 0; j < src_max + 1; ++j)
old_scan[j] = new_scan[j];
}
return new_scan[src_max];
}

很感谢,我改了个斜45度的。
@陈梓瀚(vczh)
例如,在我做的例子里,我想双击列表中的一项的时候,那一项颜色发生变化,另外,在对话框里有个CEdit控件,用来显示被双击的那一行的内容
@陈梓瀚(vczh)
这个……其实vs自动产生的代码,按钮单击消息是窗口来接收并处理的
与此同时,按钮自身也要做一些动作,比如,更换按钮的样式,让人感觉按钮被按下了
我看到你写了一个自己的代码库,所以如果可以的话,给我点意见,我也不想在2个地方处理一个消息
@foxriver
不会的,因为编译通不过的