|
I've done something similar to this a couple of years back. In my case I was doing it from VBA, though (I guess) it shouldn't matter.
I was able to fill the cells in a range with the values contained in a 2D array.
So, rather than 1 call per column it was 1 call for the whole lot.
I'll have a poke around in the morning and see if I still have a copy of the code lying around. (I may very well not, since it was for a project at an old job)
Fantastically articulate post btw.
|
|
|
|
|
Ha! Thanks for the compliment
If you do manage to dig out that old code I'd be much obliged, thanks.
|
|
|
|
|
Pleasure. It's unfriendly to bash the inept - but there's nothing wrong with complimenting those at the opposite end of the spectrum, methinks!
Can't be bothered to find the old code (Gawd knows how many gigs of data I'd have to sift through)
BUT, I can offer you some brand-new freshly written code
Here's something that fills in 100 (iSize*iSize cells) in 1 fell swoop.
Sub test1()
Const iSize = 10
Dim myArray(1 To iSize, 1 To iSize)
Dim iRow As Integer, iCol As Integer
iRow = 1
For iCol = 1 To iSize
myArray(iRow, iCol) = "Column " + CStr(iCol)
Next iCol
curCellNum = 1
For iRow = 2 To iSize
For iCol = 1 To iSize
myArray(iRow, iCol) = curCellNum
curCellNum = curCellNum + 1
Next iCol
Next iRow
Cells.Range(Cells(1, 1), Cells(iSize, iSize)) = myArray
End Sub
Hope that's of some use.
|
|
|
|
|
|
After “doing” MFC for eternity, I finally got puzzled by this.
Using basic MFC wizard to create application I see that the client rectangle of the default view is not the actual size of the rectangle on the screen. It is much smaller.
All the documentation I have ever read on the suject describe the view client are as the entire screen.
So why does GetClientRect comes up with lesser top/ bottom values?
Thanks for reading
Vaclav
|
|
|
|
|
Starting view in maximize way could be an solution ? If not, you can call ResizeParentToFit(...) in CScrollView::OnInitialUpdate() ...
|
|
|
|
|
CScrollView::OnInitialUpdate() ... works only in scroll view. I have tried that in plain CView derivative. VC complier said so.
As far as starting maximized – that was not the question. I said using wizard created default view.
Sorry.
|
|
|
|
|
Perhaps I don't give a reasonable ideea, but you can look where MFC implement CScrollView::ResizeParentToFit(..) and reproduce the code ...
|
|
|
|
|
Vaclav_Sal wrote: So why does GetClientRect comes up with lesser top/ bottom values?
Aside from the top value always being 0 , lesser than what? Unless the window is borderless (e.g., desktop), it can't occupy the entire screen. Things like borders, scroll bars, captions, etc take up room.
"One man's wage rise is another man's price increase." - Harold Wilson
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
"Show me a community that obeys the Ten Commandments and I'll show you a less crowded prison system." - Anonymous
|
|
|
|
|
Sorry, that was suppose to be right dimension.
I know about the frame / border, what I am asking are the right / bottom dimesions not being SAME as the actual view screen client dimensions.
For example - when I build a new window, with frame, in the default view ( parent frame) and use the view client rectange ( of the default view area) to size it - these dimesions are not the same as the actual view area. They are smaller.
I suppose I should get the new window dimesions AFTER it is maximized. Than it should show larger size than when originally sized to the client area.
Vaclav
|
|
|
|
|
Another ideea is to send to the view a menu->window->tile message, and your view will spreadsheet along mainframe ...
|
|
|
|
|
Good idea, but still does not answer the original questio. SOrry.
|
|
|
|
|
It needs to write string to the file.
But it Open file return FALSE, GetLastError() = 3.
m_File2Write.Open(webRes.strLocalFile, CFile::modeCreate | CFile::modeWrite | CFile::shareDenyWrite))
{
DWORD error = GetLastError();
return -1L;
}
The file does not exists, but I think it will create a file. I do not know why Open file falied.
-----------------------------
Now I know why. Because there is the chararcter '-' in the file name. Such as 12-444.html
But if use the explorer to create file 12-444.html, it is ok. Why use CFile, it error?
modified 16-May-12 9:03am.
|
|
|
|
|
WinError.h :
OK the file does not exist and you want to create it, but what about its folder?
Veni, vidi, vici.
|
|
|
|
|
I know 3 means can not find the path, but I donot know why.
|
|
|
|
|
I would check with the debugger the runtime value of webRes.strLocalFile .
Veni, vidi, vici.
|
|
|
|
|
yu-jian wrote: It needs to write string to the file.
Having some Gollum flashbacks, are we?
Seriously, though, what is the value of strLocalFile ?
"One man's wage rise is another man's price increase." - Harold Wilson
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
"Show me a community that obeys the Ten Commandments and I'll show you a less crowded prison system." - Anonymous
|
|
|
|
|
d:\temp\C030FA87-73C4-4989-99A2-CAABEB1F1FE2.html
|
|
|
|
|
You are trying to create a file and a path. Not possible with Open() .
"One man's wage rise is another man's price increase." - Harold Wilson
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
"Show me a community that obeys the Ten Commandments and I'll show you a less crowded prison system." - Anonymous
|
|
|
|
|
In the above code you do not test the return value from Open , so the return value of GetLastError() does not mean anything.
Programming is work, it isn't finger painting. Luc Pattyn
|
|
|
|
|
The full code is as follows:
if (!m_File2Write.Open(webRes.strLocalFile, CFile::modeCreate | CFile::modeWrite | CFile::shareDenyWrite))
{
DWORD error = GetLastError();
return -1L;
}
Just Open return FALSE, it will call GetLastError(), error is the err code.
|
|
|
|
|
Perhaps CFile doesnot support file name with character "-".
|
|
|
|
|
|
Of course it does, Windows would never work if that was the case. Can you show the exact string you are passing to the Open() call, as it exists in your code?
Programming is work, it isn't finger painting. Luc Pattyn
|
|
|
|
|
Certainly,
strLocalFile is a CString type;
strLocalFile = _T("d:\temp\1FC69DCC-3B54-4DE4-8AEB-7094D0B23E01.html");
if (!m_File2Write.Open(webRes.strLocalFile, CFile::modeCreate | CFile::modeWrite | CFile::shareDenyWrite))
{
DWORD error = GetLastError(); // where error is 3
return -1L;
}
|
|
|
|