|
Remove LVS_SINGLESEL - Allows only one item at a time to be selected. By default, multiple items can be selected.
Regards,
Paresh.
|
|
|
|
|
Everybody here knows how to do it with the mouse and the Ctrl Key or using the UP/DOWN arrow Keys.
Do you want to do this through your code? If yes then iterate through the items in the list control and use
m_myListControl.SetItemState( m_IndexToBeMarkedAsSelected/*item to be marked as selected*/, LVIS_SELECTED, LVIS_SELECTED );
Do remember to remove the single selection property.
Somethings seem HARD to do, until we know how to do them.
_AnShUmAn_
|
|
|
|
|
hero1995 wrote: how can select more than 1 record in a list control
You mean items/rows, isn't it ?
By default you can select more than one items. Have a look at LVS_SINGLESEL style. This make list control to allow selection of single item.
If you are using list control from resource editor, make sure property single selection is not checked.
Prasad
MS MVP - VC++
|
|
|
|
|
Do you want to read selected records? I ask because your question is wonderful
|
|
|
|
|
WhiteSky wrote: your question is wonderful
Somethings seem HARD to do, until we know how to do them.
_AnShUmAn_
|
|
|
|
|
really? you are funny, hehe
yes, i want to copy selected records into another database.
|
|
|
|
|
i didn't select single selection. but i can only select more than 1 record if they are next to each other.i can not select random records
|
|
|
|
|
Programmatically, or via the keyboard/mouse?
"A good athlete is the result of a good and worthy opponent." - David Crow
"To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne
|
|
|
|
|
|
Then you must use the Ctrl or Shift keys along with the mouse?
"A good athlete is the result of a good and worthy opponent." - David Crow
"To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne
|
|
|
|
|
hello...........
i want to display progress bar on list view under column name "PROGRESS" without using MFC
when i select a file , the details of file come under its named columns like
name of file come under "NAME" column , location come under column "LOCATION" etc
in the same way progress bar should come under column "PROGRESS" .
thanks
|
|
|
|
|
In an DLL im having 2 functions.
//This Function serializes(Store) the ProjectList in the lpszFilename.It works fine
void Save(LPCTSTR lpszFileName, CObList &ProjectList)
{
CFile myFile(lpszFileName, CFile::modeCreate | CFile::modeReadWrite );
CArchive arStore(&myFile, CArchive::store);
ProjectList.Serialize(arStore);
arStore.Close();
myFile.Close();
}
//This function has to serialize(Load) the ProjectList from lpszFileName
//But it displays an meeage box ("C:\myfile.dat contained an unexpedted object");
void Open(LPCTSTR lpszFileName, CObList &ProjectList)
{
CFile myFile(lpszFileName,CFile::modeRead | CFile::shareDenyWrite);
myFile.SeekToBegin();
ProjectList.RemoveAll();
CArchive arLoad(&myFile, CArchive::load);
ProjectList.Serialize(arLoad);
arLoad.Close();
myFile.Close();
}
Could anu one help me 2 find out what is the reason for that.
VIBIN
"Fool's run away,where angle's fear to tread"
|
|
|
|
|
So I guess you have some Project class which in turn overrides CObject::Serialize. Then look for the problem inside that Serialize since in the code shown seems nothing wrong. I also guess your list is CList or CTypedPtrList or so.. then these classes call Serialize method of their items if they inherit from CObject..
--
=====
Arman
|
|
|
|
|
Can you post the code for your ProjectList Serialize() method?
Mark
"Posting a VB.NET question in the C++ forum will end in tears." Chris Maunder
|
|
|
|
|
I am looking for some comments / suggestions on the subjects of CALLBACKs and multithreading..
I have a MFC application that uses audio data as a document.
After studding several waveIn samples here I have some understanding how to accomplish this.
The key is that the MFC main thread creates a new thread for processing.
The CALLBACK waveInProc function passes control to this new thread that waits for data to arrive.
My question - is CALLBACK really a glorified hardware interrupt?
Is creation of the new thread just nice or actually needed because WaitForSingleObject stops the thread in some kind wait loop?
But my main problem is getting the audio data “back” to the MFC.
WM_ messages are useless - won't go “cross thread”.
It seems that the clean way to accomplish this is to go multithreading.
Since my application is not doing anything until the data arrives - maybe I can skip this new thread creation and just wait for data to arrive.
I have looked at using templates and found the method too convoluted.
(Processing structures?)
Do I have any other options?
PS I have posted here to read wider audience and some of the article studied are quite old anyway.
Thanks for reading.
Cheers Vaclav
|
|
|
|
|
Vaclav_Sal wrote: The key is that the MFC main thread creates a new thread for processing.
I'm not sure what you mean here. An MFC app (process) starts with one thread, wrapped by the
CWinApp class.
Vaclav_Sal wrote: The CALLBACK waveInProc function passes control to this new thread that waits for data to arrive.
No. The system is capturing waveform data on another thread. On that thread your callback
function is called.
Vaclav_Sal wrote: My question - is CALLBACK really a glorified hardware interrupt?
No. A CALLBACK is a function/method in your code that is called by the system. This could occur
on any thread, depending on what the callback is being used for (this is always documented).
Vaclav_Sal wrote: WM_ messages are useless - won't go “cross thread”.
Not true. WM_ messages can be sent/posted across threads. There is a difference between sending
and posting - study the docs for SendMessage/PostMessage. Messages to a window on another thread
go to the message queue associated with the thread that the window was created on.
Vaclav_Sal wrote: It seems that the clean way to accomplish this is to go multithreading
The multimedia system does the multithreading for you. All you need to do is put the data
somewhere when you receive notification in your callback. If you are doing something with that
data in another thread during the recording, then you need to synchronize access to the data -
usng thread synchronization objects works best.
Vaclav_Sal wrote: I have looked at using templates and found the method too convoluted.
Using templates for what?
Mark
"Posting a VB.NET question in the C++ forum will end in tears." Chris Maunder
|
|
|
|
|
Mark, thanks for your input.
I think I'll will try PostThreadMessage to notify the main thread.
|
|
|
|
|
That will work too. This is from your waveInProc callback function?
I'm curious why you need to notify another thread of something...
Mark
"Posting a VB.NET question in the C++ forum will end in tears." Chris Maunder
|
|
|
|
|
Mark,
I am making slow progress. I used PostThreadMessage from the "helper thread" with "target" of my app thread.
I tried to intercept the message using ON_THREAD_MESSAGE macro in Main Frame and it did not work.
Using PreTranslateMessage method in Main Frame works. Now I need to notify the document/view to process the data and I am stuck. I tried posting same message in MainFrame (posting to current thread/ queue) and it did not work. (Maybe this all should be done in the app class?)
I know how to retrieve current document - maybe I'll take that route next.
The whole madness is in my need / want to let MFC do the processing and as you pointed out the waveInProc CALLBACK is a trigger for the new thread to do the wait for single object.
Maybe I am missing the main point here - the waveInProc CALLBACK "fires" with WIM_DATA and SetEvent is passed to the "helper " thread?
I managed to copy the data to global variable and now I need to do the processing - basically FFT and then some graphical and numerical displays and statistical analysis. Please correct me if I am wrong but if the helper is waiting for the object how can I do all this graphical stuff in same thread? Does it make sense to go back to main thread with all the view updating going on?
Thanks a lot for all your help.
Vaclav
|
|
|
|
|
Ok, before I attempt to steer you the wrong direction, what does your waveInOpen() call look
like? Specifically, what open flag(s) are you passing?
I've been thinking CALLBACK_FUNCTION, but you are mentioning threads and events, so I want to
make sure I'm following
Mark
"Posting a VB.NET question in the C++ forum will end in tears." Chris Maunder
|
|
|
|
|
Hello everyone,
Wide character and multi-byte character are two popular encoding schemes on Windows. And wide character is using unicode encoding scheme. But each time I feel confused when talking with another team -- codepage -- at the same time.
I am more confused when I saw sometimes we need codepage parameter for wide character conversion, and sometimes we do not need for conversion. Here are two examples,
code page is used in WideCharToMultiByte when dealing with unciode character
int WideCharToMultiByte (
UINT CodePage,
DWORD dwFlags,
LPCWSTR lpWideCharStr,
int cchWideChar,
LPSTR lpMultiByteStr,
int cbMultiByte,
LPCSTR lpDefaultChar,
LPBOOL lpUsedDefaultChar );
code page is not used in wcstombs when dealing with unciode character
size_t wcstombs (
char* mbstr,
const wchar_t* wcstr,
size_t count );
My question is, what is codepage (seems my current understanding is not correct)? Does codepage have anything to do with multi-byte character or only have relationship with wide character? Could anyone explain the meaning and relationship between codepage, wide character and multi-byte character?
thanks in advance,
George
|
|
|
|
|
Code pages map character codes to character glyphs ("The actual shape (bit pattern, outline, and
so forth) of a character image").
Some info: Locales and Code Pages[^]
wcstombs() uses WideCharToMultiByte internally. The codepage wcstombs() uses is based on the CRT
locale settings (see link) which is why you don't have to pass a codepage code.
Mark
-- modified at 13:41 Thursday 3rd May, 2007
"Posting a VB.NET question in the C++ forum will end in tears." Chris Maunder
|
|
|
|
|
Thanks Mark,
The page is very helpful.
Two more questions,
1. In the article, I think codepage has the same meaning of encoding -- mapping table between character and numbers. Is that correct?
2. Differences between multi-byte and wide character? I think they are both characters which are represented by more than one bytes. Why on Windows they are distinguished?
regards,
George
|
|
|
|
|
George_George wrote: 1. In the article, I think codepage has the same meaning of encoding -- mapping table between character and numbers. Is that correct?
If by character, you mean the character we see, and by numbers you mean the character codes, then
yes.
George_George wrote: 2. Differences between multi-byte and wide character? I think they are both characters which are represented by more than one bytes. Why on Windows they are distinguished?
To different ways to encode characters. With unicode, all character codes are 2 bytes (although
I think Unicode can support longer codes, I forget). With MBCS character codes can be one or
more bytes.
Either way, the codes need to be mapped to a character glyph to present the character to the
user. That mapping is done using the code page.
Mark
"Posting a VB.NET question in the C++ forum will end in tears." Chris Maunder
|
|
|
|
|
Thanks Mark!
Previously, I think multibyte character is a specific encoding (codepage). But after discussion with you, I think I am wrong. Multibyte character on Windows is a general term which is used for representing character which could be stored in more than one byte. And several encoding (codepage), like UTF-8, ANSI, ... could be called as multibyte character. Is my understanding correct?
If my understanding is correct, I am wondering what about wide character? Seems wide character on Windows is the same as UTF-16? i.e. wide character == UTF-16 encoding (or UTF-16 codepage).
regards,
George
|
|
|
|