|
Please enlighten us so that others may benefit.
|
|
|
|
|
|
Clickety!
"Do unto others as you would have them do unto you." - Jesus
"An eye for an eye only makes the whole world blind." - Mahatma Gandhi
|
|
|
|
|
When I resize column by click and drag column header, so that... client area of ListView control look like need to redraw immediately (paint disorderly), but I dont know how to instruct it to do this
help me
I create ListView control and add item to ListView by following code:
<br />
HWND CreateListView (HWND hWndParent)<br />
{<br />
hWndList = CreateWindowEx( 0L,<br />
WC_LISTVIEW,
STR_NULL,
WS_CHILD | WS_BORDER | WS_EX_CLIENTEDGE<br />
| LVS_REPORT | LVS_SINGLESEL|LVS_SHOWSELALWAYS|LVS_AUTOARRANGE ,<br />
0+10,110, 572,180,<br />
hWndParent,<br />
(HMENU) IDC_TIME_LVW_CONTENT,<br />
hInst,<br />
NULL );<br />
<br />
lvC.iSubItem=0;<br />
strcpy(szText,LVW_TIME_ALERT);<br />
ListView_InsertColumn(hWndList,0,&lvC);<br />
lvC.iSubItem=1;<br />
strcpy(szText,LVW_TIME_RUN);<br />
ListView_InsertColumn(hWndList,1,&lvC);<br />
lvC.iSubItem=2;<br />
strcpy(szText,LVW_TIME_PATH);<br />
ListView_InsertColumn(hWndList,2,&lvC);<br />
lvC.iSubItem=3;<br />
strcpy(szText,LVW_TIME_MESSAGE);<br />
ListView_InsertColumn(hWndList,3,&lvC);<br />
<br />
return hWndList;<br />
}<br />
<br />
<br />
<br />
InsertItemToListView(LPSTR lpszTime, LPSTR lpszRun, LPSTR lpszPath, LPSTR lpszMessage)<br />
{<br />
<br />
INT nCount=SendMessage(hWndLvwContent_Time,LVM_GETITEMCOUNT,0,0);<br />
LVITEM lvI;<br />
<br />
lvI.mask = LVIF_TEXT;<br />
lvI.iItem = nCount;<br />
lvI.iSubItem = 0;<br />
lvI.pszText = lpszTime;<br />
lvI.cchTextMax = sizeof(lpszTime);<br />
ListView_SetItemState(hWndLvwContent_Time,<br />
ListView_InsertItem(hWndLvwContent_Time,&lvI),<br />
LVIS_SELECTED,LVIS_SELECTED);<br />
<br />
ListView_SetItemText(hWndLvwContent_Time,nCount,1,lpszRun);<br />
ListView_SetItemText(hWndLvwContent_Time,nCount,2,lpszPath);<br />
ListView_SetItemText(hWndLvwContent_Time,nCount,3,lpszMessage);<br />
return TRUE;<br />
}
|
|
|
|
|
_skidrow_vn_ wrote:
lvI.cchTextMax = sizeof(lpszTime);
This is not going to return the expected result. lpszTime is a pointer, thus 4 will be returned rather than the actual size of the buffer it points to.
_skidrow_vn_ wrote:
ListView_SetItemState(hWndLvwContent_Time,
ListView_InsertItem(hWndLvwContent_Time,&lvI),
LVIS_SELECTED,LVIS_SELECTED);
Why are you not checking the return value of ListView_InsertItem()? This can have undesirable results when subsequently calling ListView_SetItemText(). Do this instead:
item = ListView_InsertItem(hWndLvwContent_Time,&lvI)<br />
if (-1 != item)<br />
{<br />
ListView_SetItemState(hWndLvwContent_Time, item, LVIS_SELECTED,LVIS_SELECTED);<br />
<br />
ListView_SetItemText(hWndLvwContent_Time,item,1,lpszRun);<br />
ListView_SetItemText(hWndLvwContent_Time,item,2,lpszPath);<br />
ListView_SetItemText(hWndLvwContent_Time,item,3,lpszMessage);<br />
}
According to the documentation, the LVS_AUTOARRANGE style only applies to the LVS_ICON and LVS_SMALLICON styles. It might just be ignored if not needed but why litter your code with unnecessary stuff?
|
|
|
|
|
return value of ListView_InsertItem() is
"the index of the new item if successful, or -1 otherwise."
thank you for your ideal
i checked it
sizeof(lpszTime) return 4
strlen(lpszTime) return 11 // "11:11:11 AM"
>>so I want how to repaint the client area of ListView (auto when user resize column)?
thanks!!
|
|
|
|
|
If the return value of a function were not important, it would not bother to return a value and be void instead.
|
|
|
|
|
can you tell me the way to auto repaint listview when user resize column?
|
|
|
|
|
I'm not sure I understand exactly what symptom you are describing. When you "grab" the vertical line between the column headings and drag it left or right, the data in the columns should adjust automatically. Are you saying that if a column was too small, and you then widened it, the data in the column would still not be totally visible? If so, I've never seen a list control behave in this fashion.
|
|
|
|
|
before resize
after resize
after resize
how can i detect when I finish resizing column of listview?
I mean: when I finish resize colummns of listview... i will send a message to instruct listview repaint immediately
thanks
|
|
|
|
|
|
Your code compiled fine but when I ran it, clicking OK on the login box caused it to crash.
Have you tried creating just a small, plain project with nothing in it but a list control? Weeding out all the superfluous stuff usually helps!
|
|
|
|
|
crash?????
can you tell me what kind of errors?
I am using WinXPpro
when i login, i dont encounter any error
|
|
|
|
|
The instruction at 0x00400038 referenced memory at 0x00000001. The memory could not be written.
I'm curious why all of the ODBCxxx() functions return TRUE even though I have no SQL stuff on my machine.
|
|
|
|
|
sorry, I am a beginner of Visual C++
I have learnt for about 6 months
I should to do what when return of ODBCxxx function()
thank you
and list view ....can you tell me the way to auto redraw client area of listview???
|
|
|
|
|
ODBCConnectToSource() looks good as it only returns TRUE if all of the SQLxxx() functions succeeded.
ODBCCheckPassword() looks good as it returns FALSE if the passwords do not match.
ODBCSelectDateInCalendar() has many opportunities for failure, yet it always returns TRUE. Same for ODBCAddDateToWndCombo(), ODBCDeleteDiary(), ODBCAddUserNameToDlgCombo(), ODBCInsertToListTable(), ODBCInsertToListTable(), ODBCDeleteRecordInListTable(), ODBCSelectContentFromListTable(), ODBCSelectContentToEdit(), and ODBCUpdateListRecord(). If you are just assuming that all of these functions will always be successful, you are in for a rude awakening.
|
|
|
|
|
thank you very much
and My ListView ??????? how can i fix it to REDRAW auto ?
|
|
|
|
|
Like I already mentioned here, since I've never experienced this problem, I can't offer any solution.
|
|
|
|
|
ODBCConnectToSource() and ODBCCheckPassword() MUST be return FALSE or TRUE and other functions.......First at all, I planed to declare those function as VOID because I dont want return a value, but after that I changed all those function to BOOL and so........I return all to TRUE
so that, there is a difference between VOID function and BOOL function which return TRUE? >> I think it's similar because I dont need results of BOOL function which always return TRUE (expect ODBCConnectToSource() and ODBCCheckPassword())
...... And what you mean when you said
"I'm curious why all of the ODBCxxx() functions return TRUE even though I have no SQL stuff on my machine."
you mean : "you Windows doesn't have ODBC drivers to run My App" ?
Can you give me any your code to learn about Visual C++ ???
thank a lot ?
|
|
|
|
|
_skidrow_vn_ wrote:
there is a difference between VOID function and BOOL function which return TRUE?
In this particular instance, no. If the BOOL functions are all returning TRUE, but you are doing nothing with this value, the effect is the same as a VOID function.
_skidrow_vn_ wrote:
...... And what you mean when you said
"I'm curious why all of the ODBCxxx() functions return TRUE even though I have no SQL stuff on my machine."
you mean : "you Windows doesn't have ODBC drivers to run My App" ?
I do have ODBC drivers, but I have no DSNs. Therefore, when your ODBCxxx() functions are trying to connect to a data source, I would expect an error message of some sort. Instead, those functions all return TRUE and the rest of the code assumes everything is fine.
|
|
|
|
|
Well,I saw my errors when I run my App in Window98
err msg look like this: (when I push OK or CANCEL button)
Error1
Error2
Error3
Error4
but when I ran it in my Window XP professional. It login OKAY
"but I have no DSNs" >> what does you mean
|
|
|
|
|
I am writing an MDI application with MFC in VC++ 6.0. I have a (scroll)view class which plots some graphs using data from the document. When I resize the view it flickers quite a lot. Is there any technique that I can use to avoid this? My code is farily standard, doing all its drawing in OnDraw(). I notice that certain apps e.g. VisualStudio and Excel don't seem to have this problem. Also if I resize the main frame, without maximizing the view, if happens flicker-free. How do I implement this in my view?
Thanks in advance for any help.
|
|
|
|
|
The best solution is to simply implement a class that someone has done which features non-flickering upon resize. Otherwise, one possible solution is to not draw the window until resize is complete.
SetRedraw()
Kuphryn
|
|
|
|
|
|
You need to handle OnEraseBkgnd(), because by default if fills the whole client area before OnDraw() is called (flicker flicker). One solution is to disable background erasing and handle all you drawing in OnDraw().
Note: Even if you use a memory DC to try prevent flickering it will still occur if you do not over-ride OnEraseBkgnd().
Trust in the code Luke. Yea right!
|
|
|
|
|