我正在使用带有 MFC 的 Visual Studio 2010,我试图制作一个矩形,当设备断开连接时为红色,断开时为绿色。我用以下代码制作了矩形:
CRect lConnectStatus;
GetDlgItem( IDC_CONNECT_STATUS ) -> GetClientRect( &lConnectStatus );
GetDlgItem( IDC_CONNECT_STATUS ) -> ClientToScreen( &lConnectStatus );
ScreenToClient( &lConnectStatus );
mConnected.Create( GetSafeHwnd(), 10000 );
mConnected.SetPosition( lConnectStatus.left, lConnectStatus.top, lConnectStatus.Width(), lConnectStatus.Height() );
if( mDevice.IsConnected() ){
mConnected.SetBackgroundColor(0, 255, 0);
}
else{mConnected.SetBackgroundColor(0, 0, 255);}
Run Code Online (Sandbox Code Playgroud)
我将此代码段插入到 OnInitDlg 方法中,并且确实出现了矩形,但在设备连接时它不会变为绿色。无论如何我可以刷新窗口以便再次执行代码并且颜色变为绿色?
我正在阅读 A* 搜索算法的变体,并遇到了动态加权。据我了解,权重应用于搜索方程,随着搜索越来越接近目标节点,权重会减小。我专门看这篇文章:http : //theory.stanford.edu/~amitp/GameProgramming/Variations.html
谁能告诉我这有什么好处?为什么你不在乎你一开始扩展了哪些节点?它是为了帮助不一定具有良好启发式的搜索吗?
谢谢
我有一个程序从系统时钟读取当前时间并将其保存到文本文件.我之前使用过的GetSystemTime函数,但时间并不完全一致,例如:其中一次是32567.789,下一次是32567.780,这是时间倒退.
我正在使用这个程序将时间节省高达每秒10次.我读到GetSystemTimeAsFileTime函数更准确.我的问题是,如何将当前代码转换为使用GetSystemTimeAsFileTime函数?我试图使用FileTimeToSystemTime函数,但有同样的问题.
SYSTEMTIME st;
GetSystemTime(&st);
WORD sec = (st.wHour*3600) + (st.wMinute*60) + st.wSecond; //convert to seconds in a day
lStr.Format( _T("%d %d.%d\n"),GetFrames() ,sec, st.wMilliseconds);
std::wfstream myfile;
myfile.open("time.txt", std::ios::out | std::ios::in | std::ios::app );
if (myfile.is_open())
{
myfile.write((LPCTSTR)lStr, lStr.GetLength());
myfile.close();
}
else {lStr.Format( _T("open file failed: %d"), WSAGetLastError());
}
Run Code Online (Sandbox Code Playgroud)
编辑要添加更多信息,代码会从摄像机捕获图像,该图像每秒运行10次,并节省图像拍摄到文本文件的时间.当我从第二个中减去文本文件的第一个条目,依此类推,例如:条目2-1 3-2 4-3等我得到这个图,其中x轴是条目数,y轴是减去的值.
所有这些都应该在0.12左右,其中大部分都是.但是你可以看到它们中的很多都有所不同,有些甚至是负面的.这不是因为相机,因为相机有自己的内部时钟,没有变化.它与捕获系统时间有关.我想要的是以最高分辨率和尽可能少的噪声提取系统时间的最准确方法.
编辑2我已经接受了您的建议并再次运行程序.这是结果:
你可以看到它比以前好很多但它仍然不对.我觉得奇怪的是它似乎非常增量.我也只绘制了时间,这是结果,其中x是条目,y是时间:
有没有人知道什么可能导致每30帧左右出场的时间?
我正在编写一个程序来逐行读取文本文件,将行值存储在向量中,进行一些处理然后写回新的文本文件.这是文本文件通常的样子:
如您所见,有两列:一列用于帧号,另一列用于时间.我想要的只是第二列(又名时间).文本文件中可能有数百行,如果不是数千行.以前我一直在手动删除我不想做的帧编号列.所以我的问题是:是否有一种简单的方法来编辑我当前的代码,这样当我用getline()它读取文件时会跳过第一个单词而只获得第二个单词?这是我用来读取文本文件的代码.谢谢
ifstream sysfile(sys_time_dir);
//Store lines in a vector
vector<string> sys_times;
string textline;
while (getline(sysfile, textline))
{
sys_times.push_back(textline);
}
Run Code Online (Sandbox Code Playgroud)