|
wtf ?!?
It appears that I only get errors when I try to have a View derived from CListView..
I successfully got the code to work with two CViews.. and a CView and CHTMLView.
|
|
|
|
|
Try to include the document class header in the view header. I got a similar problem before and solved it that way.
#include "MVSampleDoc.h"
.
.
.
|
|
|
|
|
Sir....I am facing one serious problem of memory leakage. I have developed one dialog based application. In that I have made one class named "CListener" derived from CWinThread. In the InitInstance() function of that class, I have added functionality which I want to perform in separate thread. From the dialog class's OnInitDialog() function I have made the following function call to run the thread.
AfxBeginThread(RUNTIME_CLASS(CListener));
All are working fine.....But when I close application Visual C++ IDE show me some memory leackage.....
Whould you please show me the way to escap from this problem....
C.R.Naik
|
|
|
|
|
How are you closing the thread? If you start the thread and close the app while the thread is still running you will get a memory leak.. In UI Threads I try to have the thread terminate it's self.. with a PostQuitMessage(0).
Rob
|
|
|
|
|
I have a Cdialog with a CListCtrl in it that sizes along with the CDialog(MoveWindow). Theres text in the list, plus scrollbars. Whne the user lengthens the CDialog, the scrollbars eventaully vanish. AT this point I want the window to not be able to lengthen any further. How do I find out when the scrollbars have disappeared. I didnt see anything like BOOL ScrollBARsExist() or something like it in MSDN...maybe I need to get the height of the text in the cListctrl but how do I figure out that?
Also theres no OnGEtMinMAxInfo for a CDialog...so what tells it to have a max limit?
|
|
|
|
|
override ::OnSizing(...)
(don't forget to add the ON_WM_SIZING() handler in your message map).
|
|
|
|
|
Thanks! Any hints about detecting the vanishing of the clistctrl scrollbars?
|
|
|
|
|
compare GetScrollPos() and GetScrollLimit().
|
|
|
|
|
WM_GETMINMAXINFO certainly works for dialogs, although it might not appear in the ClassWizard so you'll need to add the message map entries yourself.
--Mike--
The Internet is a place where absolutely nothing happens.
-- Strong Bad
1ClickPicGrabber - Grab & organize pictures from your favorite web pages, with 1 click!
My really out-of-date homepage
Sonork-100.19012 Acid_Helm
|
|
|
|
|
i use courier new or verdana size 9
|
|
|
|
|
I use miriam fixed in .NET and lucida console in VS 6. They are harder to read than courier new, but the lines are closer together so I get more on the screen at a time.
|
|
|
|
|
Hmm.. As usual something that has first appeared obvious to me.. isn't.
I am using a class that sends the view a User Defined Message to notify it of some events that are taking place.
However after setting up the command handlers for the view I realized that the view was not recieving or processing the message.. so I decided to setup a test message.. and it is not working either.. so I must be doing something wrong.. and I just can't figure it out. I setup the test message handler as such.
afx_msg void OnTestMsg(WPARAM wParam, LPARAM lParam);
ON_COMMAND(WM_TESTMSG, OnTestMsg)
void CMyView::OnTestMsg(WPARAM wParam, LPARAM lParam)
{
TRACE("Test Message");
}
defined message in view header as such
#define WM_TESTMSG WM_USER + 5
Created a command ID with the following
SendMessage(WM_TESTMSG);
SendMessage(WM_TESTMSG,0,0);
::SendMessage(GetSafeHwnd(), WM_TESTMSG);
::SendMessage(GetSafeHwnd(), WM_TESTMSG,0,0);
but the message function is never fired..
Anybody see anything obvious that I am doing wrong.
Thank you.
|
|
|
|
|
ON_COMMAND is not used for handling user defined messages. For user define messages you should rather use the macro ON_MESSAGE .
In addition, the handler function for user defined messages, or that should be passed for ON_MESSAGE macro takes the follwing form:
LRESULT OnTestMsg(WPARAM wParam, LPARAM lParam);
Therefore, your code should be like this
#define WM_TESTMSG WM_USER + 5
.
afx_msg LRESULT OnTestMsg(WPARAM wParam, LPARAM lParam);
ON_MESSAGE(WM_TESTMSG, OnTestMsg)
.
.
.
LRESULT CMyView::OnTestMsg(WPARAM wParam, LPARAM lParam)
{
TRACE("Test Message");
}
.
.
.
SendMessage(WM_TESTMSG);
|
|
|
|
|
LOL... Thank you.. first simple solution I have ran across.
Thank you very much for your help
|
|
|
|
|
what code or function can i use to display the files in a directory in a console( but only the file names, none of the detailed stuff like is shown in DIR) and is it possible to transfer a variable in my C++ program to DOS, like if i told them to input the name of the file they want to open, but it needs to be compatable with up to 900 files in the folder(so i can't use switch() ) thanks, not sure if this can be done though
|
|
|
|
|
write your own code to list the files. use FindFirstFile/FindNextFile.
-c
When history comes, it always takes you by surprise.
|
|
|
|
|
moraalg wrote:
what code or function can i use to display the files in a directory in a console( but only the file names, none of the detailed stuff like is shown in DIR)
Have you tried to, at a command prompt, type
dir /?
?
If you had, you should probably have seen a switch "/B". If not, you are using an older OS that won't support this, and have to FindFirstFile&co yourself.
is it possible to transfer a variable in my C++ program to DOS
To DOS?! Are you really sure you are using VC1.52c and really sure you want to "transfer" it to dos???
like if i told them to input the name of the file they want to open, but it needs to be compatable with up to 900 files in the folder(so i can't use switch() )
Um, you want a user to be able to type in from 1 to 900 (!) filenames that you are then to operate on (not that I see how this has anything to do with sending stuff to DOS)?
If you really want the users to type this stuff in, one filename at a time, use cin. If you on the other hand can accept (the more reasonable) argv/argc way of handling this, just loop over argv and "do your thing".
|
|
|
|
|
Hi,
Has anybody had to to sort the contents of a list control by double clicking on the column header? if so pls tell me how to do the same.
Aravindan Premkumar
|
|
|
|
|
There are several solutions. One solution is to remove all items and insert new items in sorted order.
As for the column header, add a handler.
Kuphryn
|
|
|
|
|
Hi kuphryn,
I did that mate. i added a handler for mouse double click but the that traps only the double click on the list control items and not the header. do you know why is that?
|
|
|
|
|
Here is the code, it is desribed in the MSDN, (has been modied, original version was cut/pasted incorrectly)
ON_NOTIFY(LVN_COLUMNCLICK, OnColumnclickList)<br />
<br />
static int CALLBACK CompareCtrlEdit(LPARAM lParam1, LPARAM lParam2, LPARAM lParam)<br />
{<br />
CListCtrlEdit* pListCtrl = (CListCtrlEdit*) lParam<br />
<br />
CString strItem1 = pListCtrl->GetItemText(lParam1, pListCtrl->m_nCol );<br />
String strItem2 = pListCtrl->GetItemText(lParam2, pListCtrl->m_nCol );<br />
return strcmp(strItem2, strItem1);<br />
}<br />
<br />
<br />
void CListCtrlEdit::OnColumnclickList(NMHDR* pNMHDR, LRESULT* pResult) <br />
{<br />
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;<br />
<br />
m_nCol = pNMListView->iSubItem<br />
<br />
ListView_SortItemsEx(GetSafeHwnd(), CompareCtrlEdit, (LPARAM) this);}
If I have seen further it is by standing on the shoulders of Giants. - Isaac Newton 1676
|
|
|
|
|
Theres a sortlistctrl in CP in the listboxes section...its really cool and adaptable...
|
|
|
|
|
I had a look at that, the authors technique is to keep a copy of all the data in the listcontrol as the lParam the MSDN example, which I have corrected, sorry, uses only the data in the control, the trick being to use ListView_SortItemsEx() macro.
If I have seen further it is by standing on the shoulders of Giants. - Isaac Newton 1676
|
|
|
|
|
I tried your solution but I got "'ListView_SortItemsEx' : undeclared identifier" compiler error. I have included "commctrl.h" already. What am I missing? Thanks a lot.
|
|
|
|
|
"Simple" really;) I assumed it was part of Visual C++, it is in commctrl.h BUT on the Nov 2001 SDK.
So either install the SDK, I assume a later one will be just as good, or email me and I will send you a copy of commctrl.h but I can't guarantee that would work as there may be some dependecies I don't know about
If I have seen further it is by standing on the shoulders of Giants. - Isaac Newton 1676
|
|
|
|