分类 实用技巧 下的文章

MFC的EDIT控件多行显示的问题

    今天没事写个小程序,但竟然遇到各种各样的小问题,看来还是经验不足啊,虽然最后所有的小问题都经过 摸索+搜索 的方式解决了,但有些东西还是有必要写一下。

    其中一个重要的东西就是关于EDIT控件的多行显示问题,通常情况下,要让EDIT控件显示多行文本,只需要将其MultiLine属性设置为True就可以了,然后使用SetDlgItemText函数写入含有\n的文本就可以了,但是我为了让其有水平滚动条,于是将Horizontal Scroll设置为True,结果问题来了,我发现当我用SetDlgItemText函数写入含有\n的字符串的时候,它不换行了,我开始以为是BUG,结果折腾了半天,才发现如果将Horizontal Scroll设置为True,要想其换行,光靠\n不够了,还得加上\r,即是说\r\n一个回车符加一个换行符才行!不知道为什么微软会这么设定,用水平滚动条换行就得加回车符。。。

MFC的EDIT多行显示的问题

巧用mklink命令转移文件夹 - 原来Windows下面也有连接

Windows的命令提示符(CMD)下有个命令 mklink ,就是创建软连接,他和快捷方式有点不同,快捷方式实际上是一个lnk后缀的文件,直接对其编辑只会损坏快捷方式但不会对源文件造成影响,而通过mklink创建的软连接,当对其进行编辑的时候会影响到源文件,这就是快捷方式和mklink创建的连接的不同之处。

MKLINK [[/D] | [/H] | [/J]] Link Target

        /D      创建目录符号链接。默认为文件
                符号链接。
        /H      创建硬链接,而不是符号链接。
        /J      创建目录联接。
        Link    指定新的符号链接名称。
        Target  指定新链接引用的路径
                (相对或绝对)。

这里举两个例子:

mklink D:\B.TXT D:\A.TXT

就在D盘创建了一个名字为B.TXT的连接,他连接的对象是A.TXT,如果对B.TXT进行编辑,实际上就是对A.TXT进行编辑。

mklink /j D:\Windows C:\Windows

/j参数是针对创建文件夹连接的,这个命令在D盘创建了一个名叫Windows的连接,他的源文件夹是C盘下的Windows文件夹,如果对D:\Windows里的内容进行修改,实际上就是对C:\Windows里面的内容进行修改。

既然有这样的功能,那么转移一些文件夹就方便多啦,比如要转移C盘某个用户文件夹A到D盘,就直接在D盘创建一个文件夹B,然后把C盘文件夹A里的文件移动到D盘创建的这个文件夹B里,再删除C盘中的文件夹A,最后再C盘做一个名字和A文件夹一样的连接到D盘文件夹B就OK了!

总之熟悉过Linux下ln命令的童鞋一定能快速上手,如果利用得好,能省下不少硬盘空间呢!

网卡参数设置建议 - 提高你的网卡性能

本文转载自网络,真实性请自己判断。
网卡品牌 参数名称(中英文对照)   设置建议
Realtek EEE   建议关闭
巨型帧/Jumboframe   建议关闭
流控制/FlowControl   建议关闭
大量传送负载/OffloadLargesend   建议关闭
环保节能/GreenEthernet   建议关闭
硬件效验和/OffloadChksum   建议关闭
Intel TCP/IP分载选项 分载接收IP效验和/ChecksumRxIp 建议关闭
分载接收TCP效验和/ChecksumRxTcp 建议关闭
分载传输IP效验和/ChecksumTxIp 建议关闭
分载传输TCP效验和/ChecksumTxTcp 建议关闭
分载TCP分段/TcpSegmentation 建议关闭
流程控制/FlowControl   建议关闭
适应性帧间距调整/AdaptiveIFS   建议关闭
中断节流率/InterruptThrottleRate   建议关闭
巨帧数据包/JumboPacket   建议关闭
Marvell 巨帧包/JumboPacket   建议关闭
卸载 TCP/UDP 校验和 
(IPv4)/TCPUDPChecksumOffloadIPv4
  建议关闭
大量传送负载 (IPv4)/LsoV1IPv4   建议关闭
中断模式/InterruptModeration   建议默认
流控制/FlowControl   建议关闭
能量之星/WakeUpSpeed   建议关闭
Atheros 流控制/Flow Control   建议关闭
中断调整/Interrupt Moderation   建议默认
每秒最大中断/Max IRQ per Second   30000
接收缓冲区/Number of Receive Buffers   512
任务卸载/Task Offload   建议关闭
Broadcom 硬件效验和/ChksumOffload   建议关闭
流控制/FlowControl   建议关闭
大量发送卸载/Large Send Offload   建议关闭

360安全卫士引发的Win7无线共享问题

这几天我用笔记本电脑做的Wifi热点,手机或者MID连接上以后,竟然用不了,只有打开热点后的那几秒能用,然后手机或者MID就访问不了网络了,Wifi并没有断,说明是转发包的问题了或者学校做了限制,但是以前也遇到过类似的事情,后来重装一次系统就好了,就说明不是学校的问题。

 

折腾了半天,无意中发现原来是360的 局域网防护 - 局域网隐身 这个功能造成的共享问题,果断关闭,一切正常了。。。

PAC脚本的编写

本文转载自网络

一个PAC文件其实就是一个文本文件,最简单的格式就是包含一个叫FindProxyForURL的JScript函数,IE通过传入两个变量来调用这个函数,一个是用户浏览的地址URL全路经,一个是这个URL中的主机名部分(host)。

这个FindProxyForURL函数有三种可能的字符串返回值,一是"DIRECT",就是直接连接,不通过代理;二是"PROXY proxyaddr:port",其中proxyaddr和port分别是代理的地址和代理的端口;三是"SOCKS socksaddr:port",其中socksaddr和port分别是socks代理的地址和端口,一个自动代理文件可以是多个选择的组合,其中用分号(;)隔开,如:

function FindProxyForURL(url,host)
{
if (host == "www.mydomain.com")
return "DIRECT";

return "PROXY myproxy:80;
PROXY myotherproxy:8080;
DIRECT";
}

下面是代理脚本可能用到的函数和说明(英文不好的朋友可以直接跳过去看应用): 

PAC Helper Functions

dnsDomainIs(host, domain) Returns true if the host is part of the specified domain, false otherwise.

isInNet(hostname, Resolves the hostname and subnet IP, subnet mask) returns true if the hostname is within the subnet
specified by the IP address and the subnet mask, false otherwise.

isPlainHostName(host) Returns true if there are no dots in the hostname, false otherwise.

isResolvable(host) Internet Explorer tries to resolve the hostname through DNS and returns true if successful, false otherwise.

localHostOrDomainIs Returns true if the host matches (host, domain) the host portion of the domain, or if the host matches the host and domain portions of the domain, false otherwise. (Executed only for URLs in the local domain.)

dnsDomainLevels(host) Returns the number of dots in the hostname.

dnsResolve(host) Returns a string containing the IP address of the specified host.

myIPAddress( ) Returns a string containing the local machine's IP address.

shExpMatch(url, shexp) Returns true if the supplied URL matches the specified shell expression, false otherwise.

dateRange(parmList) Returns true if the current date falls within the dates specified in parmList, false otherwise.

timeRange(parmList) Returns true if the current time falls within the times specified in parmList, false otherwise.

weekdayRange(parmList) Returns true if today is within the days of the week specified in parmList, false otherwise.


下面是各个函数应用的例子: 
a、 isPlainHostName(host),本例演示判断是否为本地主机,如 http://myservername/ 的方式访问,如果是直接连接,否则使用代理
Js代码  


function FindProxyForURL(url, host)  
{  
if (isPlainHostName(host))  
return "DIRECT";  
else  
return "PROXY proxy:80";  
}  
 

b、 dnsDomainIs(host, "")、localHostOrDomainIs(host, ""),本例演示判断访问主机是否属于某个域和某个域名,如果属于.company.com域的主机名,而域名不是company.com和home.company.com的直接连接,否则使用代理访问。
Js代码  


function FindProxyForURL(url, host)  
{  
if ((isPlainHostName(host) ││  
dnsDomainIs(host, ".company.com")) &&  
!localHostOrDomainIs(host, "www.company.com") &&  
!localHostOrDomainIs(host, "home.company.com"))  
  
return "DIRECT";  
else  
return "PROXY proxy:80";  
}  
 

c、 isResolvable(host),本例演示主机名能否被dns服务器解析,如果能直接访问,否则就通过代理访问。
Js代码  


function FindProxyForURL(url, host)  
{  
if (isResolvable(host))  
return "DIRECT";  
else  
return "PROXY proxy:80";  
}  
 

d、 isInNet(host, "", ""),本例演示访问IP是否在某个子网内,如果是就直接访问,否则就通过代理,例子演示访问清华IP段的主页不用代理。
Js代码  


function FindProxyForURL(url, host)  
{  
if (isInNet(host, "166.111.0.0", "255.255.0.0"))  
return "DIRECT";  
else  
return "PROXY proxy:80";  
}  
 

e、 shExpMatch(host, ""),本例演示根据主机域名来改变连接类型,本地主机、*.edu 、*.com分别用不同的连接方式。
Js代码  


function FindProxyForURL(url, host)  
{  
if (isPlainHostName(host))  
return "DIRECT";  
else if (shExpMatch(host, "*.com"))  
return "PROXY comproxy:80";  
else if (shExpMatch(host, "*.edu"))  
return "PROXY eduproxy:80";  
else  
return "PROXY proxy:80";  
}  
 

f、 url.substring(),本例演示根据不同的协议来选择不同的代理,http、https、ftp、gopher分别使用不同的代理。
Js代码  


function FindProxyForURL(url, host)  
{  
if (url.substring(0, 5) == "http:") {  
return "PROXY proxy:80";  
}  
else if (url.substring(0, 4) == "ftp:") {  
return "PROXY fproxy:80";  
}  
else if (url.substring(0, 7) == "gopher:") {  
return "PROXY gproxy";  
}  
else if (url.substring(0, 6) == "https:") {  
return "PROXY secproxy:8080";  
}  
else {  
return "DIRECT";  
}  
}  
 

g、 dnsResolve(host),本例演示判断访问主机是否某个IP,如果是就使用代理,否则直接连接。
Js代码  


unction FindProxyForURL(url, host)  
{  
if (dnsResolve(host) == "166.111.8.237") {  
return "PROXY secproxy:8080";  
}  
else {  
return "PROXY proxy:80";  
}  
}  
 

h、 myIpAddress(),本例演示判断本地IP是否某个IP,如果是就使用代理,否则直接使用连接。
Js代码  


function FindProxyForURL(url, host)  
{  
if (myIpAddress() == "166.111.8.238") {  
return "PROXY proxy:80";  
}  
else {  
return "DIRECT";  
}  
}  

i、 dnsDomainLevels(host),本例演示访问主机的域名级数是几级,就是域名有几个点如果域名中有点,就通过代理访问,否则直接连接。
Js代码  


function FindProxyForURL(url, host)  
{  
if (dnsDomainLevels(host) > 0) { // if number of dots in host > 0  
return "PROXY proxy:80";  
}  
return "DIRECT";  
}  
 

j、 weekdayRange(),本例演示当前日期的范围来改变使用代理,如果是GMT时间周三到周六,使用代理连接,否则直接连接。
Js代码  


function FindProxyForURL(url, host)  
{  
if(weekdayRange("WED", "SAT", "GMT"))  
return "PROXY proxy:80";  
else  
return "DIRECT";  
}  
 

k、 最后一个例子是演示随机使用代理,这样可以好好利用代理服务器。
Js代码  


function FindProxyForURL(url,host)  
{  
return randomProxy();  
}  
  
function randomProxy()  
{  
switch( Math.floor( Math.random() * 5 ) )  
{  
case 0:  
return "PROXY proxy1:80";  
break;  
case 1:  
return "PROXY proxy2:80";  
break;  
case 2:  
return "PROXY proxy3:80";  
break;  
case 3:  
return "PROXY proxy4:80";  
break;  
case 4:  
return "PROXY proxy5:80";  
break;  
}  
}