我正在为现有程序添加新功能。它基本上是一个保存/加载工作区功能,用户可以在其中保存窗口的位置,然后通过选择菜单项随时加载所述位置。为了实现这一点,我创建了代码来提取窗口的屏幕坐标并将它们写入文件(如下):
void CMainFrame::SaveWorkspace()
{
RECT ctrlsize;
m_pDialog->GetWindowRect((LPRECT)&ctrlsize); //obtains location for window
ofstream Workspace("saveone", ios::out);
Workspace << ctrlsize.left << "," << ctrlsize.top << "," << ctrlsize.right << "," << ctrlsize.bottom;
}
这(应该)加载工作区:
void CMainFrame::LoadWorkspace()
{
//Read in the data from the file
int data[3][4];
int r=0;
int a=0;
int b=0;
ifstream infile;
infile.open("saveone");
for(a = 0; a< 3; a++)
{
for(b = 0;b<4;b++)
{
infile >> data[a][b];
cout << data[a][b];
}
}
infile.close();
//Now, assign the extracted values
RECT ctrlset;
ctrlset.top = data[0][1];
ctrlset.left = data[0][0];
ctrlset.right = data[2][0];
ctrlset.bottom = data[0][3];
// Finally, reassign the window positions
m_pDialog->SetWindowPos(NULL, ctrlset.left, ctrlset.top, (ctrlset.right - ctrlset.left), (ctrlset.bottom - ctrlset.top), SWP_SHOWWINDOW);
}
问题:
1) SaveWorkspace 功能零星工作;通常,它不会创建文件。2) LoadWorkspace 功能不起作用。具体来说,只有 data[0][0] 坐标被保存到数组中(文件中的第一个值)。
这似乎是一件相当容易的事情,我有点尴尬,它给我带来了这么多麻烦......
编辑:我已经解决了问题 #1。现在我只需要弄清楚为什么我的阵列不工作。