首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 数据库 第二书店 程序员

dychenyi/ 


共539个网摘 [ 1 ... 9  10  11  12  13  14  15  16  17  18 ]  上一页 | 下一页  |  访问dychenyi的个人空间

为什么-1%256等于255???

dychenyi收录,时间:2007-11-5 9:17:27 | 相关网摘我也收藏

文第4版 32页


问题点数:20 回复次数:43 显示所有回复显示星级回复显示楼主回复


yyss620819
saosao
等 级:
发表于:2007-11-01 11:10:571楼 得分:0
求余必须用int型变量 然而int只能存储8位的数据 也就是0~255 如果超出的话,c++会用他的模来进行操作



Turntogo
星光伴月
等 级:
发表于:2007-11-01 11:11:402楼 得分:0
取模运算时,对于负数,应该加上被除数的整数倍,使结果大于或等于0之后,再进行运算.
对于上例:
-1+256=255,然后用255%256,结果就是255.
当然也可以-1+512=511,511%256的结果也是255.




thecorr
边走边唱
等 级:
发表于:2007-11-01 11:13:553楼 得分:0
求余的返回值是0 ~ n-1


很牛的求职经历 - 学不可以己 - CSDNBlog

dychenyi收录,时间:2007-11-2 11:16:47 | 相关网摘我也收藏

时候,诚实最重要。
9、你希望自己5年后是什么样?
  在技术类企业的面试中经常出现,国企有时也会问到。个人认为,尽量避开谈具体的目标,千万不要说“我想5年后做项目经理”、“我想5年后做主管”之类的话,如果你不想被拒的话。以下是我的答案,供大家参考:
(aspen四、五面,联想一面,瞬联二面)
  “因为我本人是学计算机的,所以希望沿着以技术为主线的路走下去。5年以后,我希望自己能够对某一个领域有比较深入的理解,成为某一领域的专家,在某一方面能独挡一面,同时也能够了解其他领域的发展动态。”
   总结一下:这类非技术面试是任何单位都必然有的环节,以上基本已经涵盖了这类面试的绝大部分问题。虽然这些问题都非常常见,但是,要全答好却不是一件容 易的事。在这方面,建议大家要针对具体的问题多下功夫,很多同学面试失败,都是因为这部分没答好。所以,希望大家一定要重视起来,经过一段时间的练习,相 信你也可以做到信心十足的参加非技术面试!
  最后,提醒一下:如果你面的是国企、事业单位、公务员、银行、保险,那么一定要穿正装;如果你面的是管理、营销类职位,更要穿正装。如果是技术公司的技术职位的话,则无所谓。

(七):面试之英文面试篇

本篇介绍面试的第三部分:英文面试。
  英文面试是很多同学最头疼的问题,几乎绝大部分同学都非常惧怕英文面试,甚至到了逢英文面必挂的地步。在这里,把我在英文面试过程中总结出的一些经验给大家分享,希望能对那些惧怕英文面试的同学有所帮助。
  首先要弄清楚,英文面试到底考查的是什么?请大家一定要记住:英文面试考查的,不是你的口语流利不流利,而是你的思路,以及你利用英文来交流的能力。毕竟,英语只是一个工具而已,真正有价值的,是这个工具背后你的思路。
  但是,怎样利用好英语这个工具,把你的思路准确的表达给对方呢?我想,这是绝大部分同学在英文面试时面临的最大的问题,自己是这样想的,但不知道用英文怎么说。这也是攻克英文面试要解决的核心问题。
  结合我的英文面试经历,个人认为,在进行英文面试


求助阿,今天笔试又晕了!!!不会阿!

dychenyi收录,时间:2007-11-2 8:31:04 | 相关网摘我也收藏


return temp;
}


2.return !(n & (n-1));

或者是这样,如有错,请见谅.



已知从1900年1月1日到某天经过了7865284526秒,请帮我想一想怎样根据这个秒数把具体的日期时间求出

dychenyi收录,时间:2007-10-30 8:40:02 | 相关网摘我也收藏

呵,我经常用到这个功能,把自己用得函数贴出来:


CString CMoView::GetLocalTimeXG(time_t t)
{
struct tm *tm;
CString strDateTime;

if (t==0)
t = ::time(NULL);
tm = ::localtime(&t);
strDateTime.Format(_T("%d-%d-%d %d:%d:%d"),
tm- >tm_year+1900, tm- >tm_mon+1, tm- >tm_mday, tm- >tm_hour, tm- >tm_min, tm- >tm_sec);

return strDateTime;
}



xugang_2001
幽明天竹
等 级:
发表于:2007-10-29 12:05:592楼 得分:0
记得给分阿~~~~~~~


获得MAC地址的四个方法 - 风满袖 - 博客园

dychenyi收录,时间:2007-10-26 12:36:55 | 相关网摘我也收藏

1.使用WMI。查询表Win32_NetworkAdapterConfiguration即可获得。

2.使用ARP协议。请看这里。

3.使用Windows命令nbtstat,也就是通过NetBIOS。请看这里。

4.查询SNMP(就是一种用于监视网络设备的协议)的MIB(管理信息数据库)。但这不是一件简单的事情,需要自己创建SNMP包,发送到交换机,然后对返回的响应进行解析。

下面是代碼:



using System;
using System.Diagnostics;
using System.Management;
using System.Net;
using System.Runtime.InteropServices;
using System.Text.RegularExpressions;

namespace MACAddress
{
/**////
/// MainClass 的摘要描述。
///
internal class MainClass
{
/**////
/// 應用程式的主進入點。
///
[STAThread]
private static void Main(string[] args)
{
GetMACByWMI();
IPAddress[] ips = GetLocalIP();
foreach (IPAddress ip in ips)
{
Console.WriteLine(GetMacByARP(ip.ToString()));
string mac = GetRemoteMacByNetBIOS(ip.ToString());
if ( mac.Length != 0 )
Console.WriteLine(mac);
else
Console.WriteLine("Fail to get MACAddress by NetBIOS");
GetMACBySNMP(ip.ToString(),"yourGroupName@yourVlanNumber");
}
Console.ReadLine();
}

By WMI#region By WMI

public static void GetMACByWMI()
{
string query = "select MACAddress from Win32_NetworkAdapterConfiguration where IPEnabled='TRUE'";
ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);
ManagementObjectCollection collection = searcher.Get();
foreach (ManagementObject mo in collection)
{
string mac = mo["MACAddress"].ToString();
Console.WriteLine(" Network card MAC Address is :{0}", mac);
}
}

#endregion

By ARP#region By ARP

[DllImport("Iphlpapi.dll")]
private static extern int SendARP(Int32 dest, Int32 host, ref Int64 mac, ref Int32 length);

[DllImport("Ws2_32.dll")]
private static extern Int32 inet_addr(string ip);

public static string GetMacByARP(string clientIP)
{
string ip = clientIP;
Int32 ldest = inet_addr(ip);
Int64 macinfo = new Int64();
Int32 len = 6;
try
{
SendARP(ldest, 0, ref macinfo, ref len);
}
catch
{
return "";
}
string originalMACAddress = Convert.ToString(macinfo, 16);
if (originalMACAddress.Length < 12)
{
originalMACAddress = originalMACAddress.PadLeft(12, '0');
}
string macAddress;
if (originalMACAddress != "0000" && originalMACAddress.Length == 12)
{
string mac1, mac2, mac3, mac4, mac5, mac6;
mac1 = originalMACAddress.Substring(10, 2);
mac2 = originalMACAddress.Substring(8, 2);
mac3 = originalMACAddress.Substring(6, 2);
mac4 = originalMACAddress.Substring(4, 2);
mac5 = originalMACAddress.Substring(2, 2);
mac6 = originalMACAddress.Substring(0, 2);
macAddress = mac1 + "-" + mac2 + "-" + mac3 + "-" + mac4 + "-" + mac5 + "-" + mac6;
}
else
{
macAddress = "";
}
return macAddress.ToUpper();
}

public static IPAddress[] GetLocalIP()
{
string hostName = Dns.GetHostName();
IPHostEntry ipEntry = Dns.GetHostByName(hostName);
return ipEntry.AddressList;
}

#endregion

By NetBIOS#region By NetBIOS
public static string GetRemoteMacByNetBIOS(string clientIP)
{
string ip = clientIP;
string dirResults = "";
ProcessStartInfo psi = new ProcessStartInfo();
Process proc = new Process();
psi.FileName = "nbtstat.exe";
//psi.RedirectStandardInput = false;
psi.RedirectStandardOutput = true;
psi.RedirectStandardError = true;
psi.Arguments = "-A " + ip;
psi.UseShellExecute = false;
proc = Process.Start(psi);
dirResults = proc.StandardOutput.ReadToEnd();
string error = proc.StandardError.ReadToEnd();
proc.WaitForExit();
dirResults = dirResults.Replace("\r", "").Replace("\n", "").Replace("\t", "");
Regex reg = new Regex("Mac[ ]{0,}Address[ ]{0,}=[ ]{0,}(?((.)*?))__MAC", RegexOptions.IgnoreCase | RegexOptions.Compiled);
Match mc = reg.Match(dirResults + "__MAC");
if (mc.Success)
{
return mc.Groups["key"].Value.ToUpper();
}
else
{
return "";
}
}
#endregion

By SNMP#region By SNMP
public static void GetMACBySNMP(string ip,string vlan)
{
int commLength,mibLength,dataStart,dataLength;
string nextMib,value;
SNMP conn = new SNMP();
string mib = "1.3.6.1.2.1.17.4.3.1.1";
int orgMibLength = mib.Length;
byte[] response = new byte[1024];

nextMib = mib;

while ( true)
{
response = conn.Get("getnext",ip,vlan,nextMib);
commLength = Convert.ToInt16(response[6]);
mibLength = Convert.ToInt16(response[23+commLength]);
dataLength = Convert.ToInt16(response[25+commLength+mibLength]);
dataStart = 26 + commLength + mibLength;
value = BitConverter.ToString(response,dataStart,dataLength);
nextMib = conn.GetNextMIB(response);

if ( !(nextMib.Substring(0,orgMibLength) == mib))
{
break;
}
Console.WriteLine("{0}={1}",nextMib,value);

}
}
#endregion
}
}


SNMP Class



using System;
using System.Net;
using System.Net.Sockets;
using System.Text;

namespace MACAddress
{
/**//**//**////
/// SNMP 的摘要描述。
///
public class SNMP
{
public SNMP()
{
}

public byte[] Get(string request, string host, string community, string mibString)
{
byte[] packet = new byte[1024];
byte[] mib = new byte[1024];
int snmpLen;
int comLen = community.Length;
string[] mibVals = mibString.Split('.');
int mibLen = mibVals.Length;
int cnt = 0;
int temp;
int orgmibLen = mibLen;
int pos = 0;
for (int i = 0; i < orgmibLen; i++)
{
temp = Convert.ToInt16(mibVals[i]);
if (temp > 127)
{
mib[cnt] = Convert.ToByte(128 + (temp / 128));
mib[cnt + 1] = Convert.ToByte(temp - ((temp / 128) * 128));
cnt += 2;
mibLen++;
}
else
{
mib[cnt] = Convert.ToByte(temp);
cnt++;
}
}

snmpLen = 29 + comLen + mibLen - 1;
packet[pos++] = 0x30;
packet[pos++] = Convert.ToByte(snmpLen - 2);

packet[pos++] = 0x02;
packet[pos++] = 0x01;
packet[pos++] = 0x00;

packet[pos++] = 0x04;
packet[pos++] = Convert.ToByte(comLen);
byte[] data = Encoding.ASCII.GetBytes(community);
for (int i = 0; i < data.Length; i++)
{
packet[pos++] = data[i];
}

if (request == "get")
{
packet[pos++] = 0xA0;
}
else
{
packet[pos++] = 0xA1;
}
packet[pos++] = Convert.ToByte(20 + mibLen - 1);

packet[pos++] = 0x02;
packet[pos++] = 0x04;
packet[pos++] = 0x00;
packet[pos++] = 0x00;
packet[pos++] = 0x00;
packet[pos++] = 0x01;

packet[pos++] = 0x02;
packet[pos++] = 0x01;
packet[pos++] = 0x00;

packet[pos++] = 0x02;
packet[pos++] = 0x01;
packet[pos++] = 0x00;

packet[pos++] = 0x30;

packet[pos++] = Convert.ToByte(6 + mibLen - 1);
packet[pos++] = 0x30;
packet[pos++] = Convert.ToByte(6 + mibLen - 1 - 2);
packet[pos++] = 0x06;
packet[pos++] = Convert.ToByte(mibLen - 1);

packet[pos++] = 0x2b;
for (int i = 2; i < mibLen; i++)
{
packet[pos++] = Convert.ToByte(mib[i]);
}
packet[pos++] = 0x05;
packet[pos++] = 0x00;

Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
sock.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReceiveTimeout, 5000);
IPHostEntry ihe = Dns.Resolve(host);
IPEndPoint iep = new IPEndPoint(ihe.AddressList[0], 161);
EndPoint ep = (EndPoint) iep;
sock.SendTo(packet, snmpLen, SocketFlags.None, iep);

try
{
int recv = sock.ReceiveFrom(packet, ref ep);
}
catch (SocketException)
{
packet[0] = 0xff;
}
return packet;
}

public string GetNextMIB(byte[] mibIn)
{
string output = "1.3";
int commLength = mibIn[6];
int mibStart = 6 + commLength + 17;
int mibLength = mibIn[mibStart] - 1;
mibStart += 2;
int mibValue;

for (int i = mibStart; i < mibStart + mibLength; i++)
{
mibValue = Convert.ToInt16(mibIn[i]);
if (mibValue > 128)
{
mibValue = (mibValue / 128) * 128 + Convert.ToInt16(mibIn[i + 1]);
i++;
}
output += "." + mibValue;
}
return output;
}
}
}

如果还有其它方法,请告诉我。


posted on 2005-07-13 13:17 风满袖 阅读(5994) 评论(16) 编辑 收藏 所属分类: C#


评论
#1楼 2005-07-13 14:53 gooshoose [未注册用户]
public class MACAddress
{
public MACAddress()
{
//
// TODO: 在此处添加构造函数逻辑
//
}

[DllImport("Iphlpapi.dll")]
private static extern int SendARP(Int32 dest,Int32 host,ref Int64 mac,ref Int32 length);
[DllImport("Ws2_32.dll")]
private static extern Int32 inet_addr(string ip);

public static string GetRemoteMAC(string remoteIP)
{
string ReturnValue="";

ProcessStartInfo psi = new ProcessStartInfo();
psi.FileName = "nbtstat.exe";
psi.RedirectStandardInput = false;
psi.RedirectStandardOutput = true;
psi.Arguments = "-A " + remoteIP;
psi.UseShellExecute = false;
Process ps = Process.Start(psi);
string strEnd = ps.StandardOutput.ReadToEnd();
ps.WaitForExit();
string[] strs = strEnd.Split('\n');
foreach(string s in strs)
{
if(s.Trim().ToLower().IndexOf("mac address") != -1)
{
ReturnValue= s.Substring(s.IndexOf("Address =") + 10,17);
break;
}
}

return ReturnValue;


获得局域网中计算机的列表(包括计算机名,IP和MAC)的方法

dychenyi收录,时间:2007-10-26 11:55:31 | 相关网摘我也收藏

获得局域网中计算机的列表(包括计算机名,IP和MAC)的方法
有的时候需要根据MAC来限定登录的计算机,为此查找了不少资料(有来自博客堂和CSDN),下面是获得远程计算机的MAC和局域网中计算机列表的方法。

需要引用的命名空间

using System;

using System.Collections;

using System.Diagnostics;

using System.Management;

using System.Net;

using System.DirectoryServices;

using System.Runtime.InteropServices;

using System.Text.RegularExpressions;

获得本机的MAC地址

public static string GetLocalMac()

{

string strMac = string.Empty;

ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");

ManagementObjectCollection moc = mc.GetInstances();

foreach(ManagementObject mo in moc)

{

if ((bool)mo["IPEnabled"] == true)

strMac += mo["MacAddress"].ToString() ;



}

return strMac.ToUpper();

}

获得远程计算机的MAC地址

方法一:使用API,利用ARP协议,只能获得同网段计算机的MAC

[DllImport("Iphlpapi.dll")]

private static extern int SendARP(Int32 dest,Int32 host,ref Int64 mac,ref Int32 length);

[DllImport("Ws2_32.dll")]

private static extern Int32 inet_addr(string ip);

public static string GetRemoteMac(string clientIP)

{

string ip = clientIP;

if ( ip == "127.0.0.1")

ip = GetLocalIP()[0];

Int32 ldest=inet_addr(ip);

Int64 macinfo=new Int64();

Int32 len=6;

try

{

SendARP(ldest,0,ref macinfo,ref len);

}

catch

{

return "";

}

string originalMACAddress = Convert.ToString(macinfo,16);

if (originalMACAddress.Length<12)

{

originalMACAddress = originalMACAddress.PadLeft(12,'0');

}

string macAddress;

if(originalMACAddress!="0000" && originalMACAddress.Length==12)

{

string mac1,mac2,mac3,mac4,mac5,mac6;

mac1=originalMACAddress.Substring(10,2);

mac2=originalMACAddress.Substring(8,2);

mac3=originalMACAddress.Substring(6,2);

mac4=originalMACAddress.Substring(4,2);

mac5=originalMACAddress.Substring(2,2);

mac6=originalMACAddress.Substring(0,2);

macAddress=mac1+"-"+mac2+"-"+mac3+"-"+mac4+"-"+mac5+"-"+mac6;

}

else

{

macAddress="";

}

return macAddress.ToUpper();

}



方法二:使用windows的命令nbtstat



public static string GetRemoteMacByNetBIOS(string clientIP)

{

string ip = clientIP;

if ( ip == "127.0.0.1")

ip = GetLocalIP()[0];

string dirResults="";

ProcessStartInfo psi = new ProcessStartInfo();

Process proc = new Process();

psi.FileName = "nbtstat.exe";

//psi.RedirectStandardInput = false;

psi.RedirectStandardOutput = true;psi.RedirectStandardError=true;

psi.Arguments = "-A " + ip;

psi.UseShellExecute = false;

proc = Process.Start(psi);

dirResults = proc.StandardOutput.ReadToEnd();

string error = proc.StandardError.ReadToEnd();

proc.WaitForExit();

dirResults=dirResults.Replace("\r","").Replace("\n","").Replace("\t","");



Regex reg=new Regex("Mac[ ]{0,}Address[ ]{0,}=[ ]{0,}(?((.)*?))__MAC",RegexOptions.IgnoreCase|RegexOptions.Compiled);

Match mc=reg.Match(dirResults+"__MAC");



if(mc.Success)

{

return mc.Groups["key"].Value.ToUpper();

}

else

{

return "";

}

}

使用此方法需要足够的操作系统的权限。在Web中,可以将ASP.net用户加入管理员组。

对于上面两个地方都用到的GetLocalIP是一个获取本机IP的方法:

public static string[] GetLocalIP()

{

string hostName = Dns.GetHostName();

IPHostEntry ipEntry=Dns.GetHostByName(hostName);

IPAddress[] arr=ipEntry.AddressList;

string[] result = new string[arr.Length];

for(int i=0;i

{

result[i] = arr[i].ToString();

}

return result;

}



获得局域网内计算机的列表

方法一:使用逐个IP地址扫描的方式

利用多线程来对每个IP逐个扫描。

ComputerAddressInfo cai = new ComputerAddressInfo("192.168.1",42,53);

Thread thScan = new Thread(new ThreadStart(cai.ScanComputers));

thScan.Start();

//...

public class ComputerAddressInfo

{

private int startIP = 0;

private int endIP = 0;

private string ipPrefix = "";

private ArrayList computerList = null;



public ComputerAddressInfo(string ipPrefix,int startIP,int endIP)

{

this.startIP = startIP;

this.endIP = endIP;

this.ipPrefix = ipPrefix;

computerList = new ArrayList();

}








public void ScanComputers()

{

for(int i=startIP;i<=endIP;i++)

{

string scanIP = ipPrefix +"."+i.ToString();

IPAddress myScanIP = IPAddress.Parse(scanIP);

IPHostEntry myScanHost = null;

string[] arr = new string[2];

try

{

myScanHost = Dns.GetHostByAddress(myScanIP);

}

catch

{

continue;

}

if (myScanHost != null)

{

arr[0] = myScanHost.HostName;

arr[1] = scanIP;

computerList.Add(arr);

}

}

}

}



此方法速度比较慢。

方法二:使用Active Directory

public static ArrayList GetComputerList()

{

ArrayList list = new ArrayList();

//or use "WinNT://your_domain_name"

DirectoryEntry root = new DirectoryEntry("WinNT:");

DirectoryEntries domains = root.Children;

domains.SchemaFilter.Add("domain");

foreach (DirectoryEntry domain in domains)

{

DirectoryEntries computers = domain.Children;

computers.SchemaFilter.Add("computer");

foreach (DirectoryEntry computer in computers)

{

object[] arr = new string[3];

IPHostEntry iphe = null;

try

{

iphe = Dns.GetHostByName(computer.Name);

}

catch

{

continue;

}

arr[0] = domain.Name;

arr[1] = computer.Name;

if ( iphe != null && iphe.AddressList.Length >0 )

{

for ( int i=0;i

arr[2] += iphe.AddressList[i].ToString()+",";

arr[2] = arr[2].ToString().Remove(arr[2].ToString().Length-1,1);

}

else

arr[2] = "";

list.Add(arr);

}

}

return list;

}



此方法速度也比较慢。

后记

上面两个获得局域网内的计算机列表的方法都很费时,目前还没有找到更好的办法。



已知进程abc.exe 发送消息 。

dychenyi收录,时间:2007-10-24 11:36:44 | 相关网摘我也收藏


//定义全局的结构和函数
#include
struct FindParm
{
HWND FindHwnd;
LPCTSTR MoudeName;
};
BOOL CALLBACK EnumWindowsProc(HWND hwnd,
LPARAM lParam
)
{
FindParm *fp=(FindParm*)lParam;
DWORD ProcssID;
GetWindowThreadProcessId(hwnd,&ProcssID);
HANDLE hTS=CreateToolhelp32Snapshot(TH32CS_SNAPMODULE,ProcssID);
MODULEENTRY32 ma;
ZeroMemory(&ma,sizeof(ma));
ma.dwSize=sizeof(ma);
bool bFound=false;
for (bool fOK=Module32First(hTS,&ma);fOK;fOK=Module32Next(hTS,&ma))
{

bFound=lstrcmpi(ma.szModule,fp->MoudeName);
if (!bFound)
{
fp->FindHwnd=hwnd;

return false;
}

}

return TRUE;
}
HWND MyFind(LPCTSTR MoudeName)
{
FindParm pa;
pa.FindHwnd=NULL;
pa.MoudeName=MoudeName;
EnumWindows(EnumWindowsProc,(LPARAM)&pa);
return pa.FindHwnd;

}
//而后程序中使用
void CMyDlg::OnButton1()
{

if(HWND findhwnd=MyFind(TEXT("abc.exe")))
{

::PostMessage(findhwnd,WM_KEYDOWN,VK_F5,0);
::PostMessage(findhwnd,WM_KEYUP,VK_F5,0);

}

}








dychenyi

等 级:
发表于:2007-10-24 11:33:516楼 得分:0

这个是找窗口标题的方法, 参考 。

C/C++ code
char caption[256];
CString strcaption;
hWndWindow=::GetWindow(hWndWindow,GW_HWNDFIRST);
do
{
::GetWindowText(hWndWindow,caption,256);


strcaption.Format("%s",caption);
//MessageBox(strcaption);
BarOne=NULL;
BarOne = strstr(strcaption,_T("Data required to print"));
if (BarOne != NULL) //找到
{
//SetDlgItemText(IDC_EDIT_STATUS,"Get Handle OK!");
showMessage(0);
break;
}

}
while((hWndWindow=::GetWindow(hWndWindow,GW_HWNDNEXT))!=NULL);




帮我一个画图的简单的问题,今天结帖!!!!!!!!!!!!!!!!!!!!(我是新手)

dychenyi收录,时间:2007-10-24 10:53:51 | 相关网摘我也收藏


//(1)初始化,我只列出部分关键的代码哦
unsigned char rgb_buf[100*40*3] ; //这个内存区呢,里面有很多位图r,g,b值,格式是bgrbgrbgrbgr....
CDC * cur_dc ;
CDC * mem_dc ;
CBitmap * mem_bmp ;

cur_dc = GetDC() ; //获得显示设备信息
if(mem_dc != NULL) delete mem_dc ;
mem_dc = new CDC ;
if(mem_bmp != NULL) delete mem_bmp ;
mem_bmp = new CBitmap ;

mem_dc- >CreateCompatibleDC(cur_dc) ;
mem_bmp- >CreateCompatibleBitmap(cur_dc, 100, 40) ;
mem_dc- >SelectObject(mem_bmp) ;

//(2)我要做的呢,就是读出rgb_buf的数据,把他显示到屏幕上,刚好是100*40的大小,我是这么做的
for(i = 0 ; i < 40; i++) {
for(j = 0 ; j < 100 ; j++) {
mem_dc- >SetPixel(j, i, RGB(rgb_buf[k],rgb_buf[k+1],rgb_buf[k+2])) ;
k += 3 ;
}
} //以像素为 Xidth * Height大小的区域替换完毕
cur_dc- >BitBlt(0,0,
img_width, img_height,
mem_dc,
0,0,
SRCCOPY) ;


String ^tempString; 是什么意思 ?

dychenyi收录,时间:2007-10-18 9:23:31 | 相关网摘我也收藏

dychenyi

等 级:
发表于:2007-10-18 08:42:19 楼主
.net2005 下的程式 。
String ^tempString;
tempString = gcnew String(temp.c_str());
if(tempString- >Equals(""))
{
MessageBox::Show("XXXXXXX!");
return false;

}

我不太懂这个String ^tempString;是什么意思, 和 String tempString;有什么区别 ? 谢谢
PS :我不太懂 。net2005 ,我现在还是用vc6 。


问题点数:50 回复次数:3 显示所有回复显示星级回复显示楼主回复


leechiyang
逮老鼠的狗算不算好猫?
等 级:
发表于:2007-10-18 08:49:491楼 得分:50
String ^tempString; 是定义一个追踪句柄,可以指向托管的对象。
String *tempString; 是定义一个指针,指向非托管对象。

由于托管代码受垃圾回收器的管理,对象在内存中会被搬移,所以不能用指针指向托管对象。
对象被搬移后,追踪句柄指向对象新的位置。



dychenyi

等 级:
发表于:2007-10-18 09:02:372楼 得分:0
嘿嘿 也就是 这个和new不一样的地方就是gcnew自己管理回收 ? 哈哈



dychenyi

等 级:
发表于:2007-10-18 09:14:533楼 得分:0
http://tech.ccidnet.com/art/1081/20060407/500373_1.html
http://dev.yesky.com/msdn/494/2030994.shtml

自己收藏 嘿嘿


一道笔试题

dychenyi收录,时间:2007-7-25 15:27:02 | 相关网摘我也收藏

Trilogy公司的笔试题

如果n为偶数,则将它除以2,
如果n为奇数,则将它加1或者减1。
问对于一个给定的n,怎样才能用最少的步骤将它变到1。


用new和delete时的问题

dychenyi收录,时间:2007-7-25 15:11:54 | 相关网摘我也收藏

delete 释放内存只是告诉操作系统,该内存可以回收了,操作系统在回收内存之后其实对内存并没有作什么处理,只是再遇到动态内存申请的时候操作系统可以再次分配这块内存给程序,但是如果恰好这是并没有其他程序用到这块内存,那么“m_CellLayerOne[100]=33”这句不会出问题,但是这只是一种特殊情况,如果这块内存被操作系统已经分配给其他程序,这个赋值语句将可能引起不可预知的情况,程序也许会崩溃。



共539个网摘 [ 1 ... 9  10  11  12  13  14  15  16  17  18 ]  上一页 | 下一页

dychenyi/相关标签



网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
Copyright © 2000-2008, CSDN.NET, All Rights Reserved