CListCtrl - how to enable multiple selection - c++

I am creating a MFC application for Windows Mobile and don't know how to enable multiple selection for List Control (CListCtrl). In properties panel Single Selection is set to False but still can't select multiple items.
Any idea?

I have never targeted Windows Mobile but you might try the following:
list.ModifyStyle(LVS_SINGLESEL, 0);

ModifyStyle method of CWnd base will work (see post from Diego) if you desire to do this programmatically OR you can define the attribute within the Resource Editor IF your placing the control on a dialog.

All ListView window styles are defined in the CommCtrl.h header file. Check this page on Microsoft's website.
The default setting for a ListView control allows multiple selections. If you need to allow only single selection from the list, then use below code:
m_ListControl.ModifyStyle(NULL, LVS_SINGLESEL, 0);
m_ListControl is the variable for your List Control. You can many other styles mentioned on above page.
Here is another example:
ListView_SetExtendedListViewStyle(::GetDlgItem(m_hWnd, IDC_LIST1), LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);

Related

Change MFC Menu to show all items instead of arrows?

Have an MFC application that uses one of the various styles available that has a CMFCMenuBar and toolbar. For the CMFCMenuBar it only shows the items used, otherwise the double-down arrows have to be clicked to see the rest of the items. How do I set it up so it's just all items all the time, without the arrows having to be used?
TIA!!
It depends on how the menu is created and initialized. Look for the following code in CMainFrame class:
CList<UINT, UINT> lstBasicCommands;
lstBasicCommands.AddTail(ID_FILE_NEW);
lstBasicCommands.AddTail(ID_FILE_OPEN);
...
CMFCToolBar::SetBasicCommands(lstBasicCommands);
If you find it, then remove the call to SetBasicCommands
Or keep SetBasicCommands, and also add all the commands to lstBasicCommands
Try using CMFCMenuBar::SetShowAllCommands method.
According to Microsoft, you should call
CMFCMenuBar::SetShowAllCommands(TRUE);
https://learn.microsoft.com/en-us/cpp/mfc/reference/cmfcmenubar-class?view=vs-2019#setshowallcommands

How to limit numbers in edit box created in VS designer

I have a project in Visual Studio. There is a dialog that I created in the designer view, which results in a bunch of IDs and properties in the .rc file. One of the controls is an edit box with ES_NUMBER set.
How can I set a min and max? All the answers I see are for programmatically created controls where one subclasses CEdit. Is it even possible to spawn a subclassed edit control when using the .rc?
Use a auto-buddy Up-Down control.

Modifying style on creating MFC modelless child dialog

I am creating modelless child dialog.For achieveing tab order, while creating dialog I need to add DS_CONTROL style programmatically.
I have overridden PreSubClassWindow and added the style but it is not working whereas If I set DS_CONTROL in resource properties, tab order is working fine.
As per my requirement (since I am creating custom dialog), I should not set in resource properties.
Please anyone help me to achieve my requirement.

How to make customized widgets take keyboard events like textctrls

Platform Windows
Created a control using windows API: CreateWindowExW and set it's parent to a panel hwnd
But it seems the control does not handle arrow keys, enter keys and tab keys properly.
Is there any flag on wxwidgets give any control created by CreateWindowExW the same ability like edit controls to capture arrow keys, enter keys and tab keys?
The problem might be due to not using WS_EX_CONTROLPARENT for your control when creating it, this style is needed for the built-in tab navigation to work.
And while I don't think it's going to help with your particular problem, I'd still like to say that embedding a native control in an application using wxWidgets is not quite as simple as just giving it the HWND of an existing control as parent, you may want to look at wxNativeWindow (new in wxWidgets 3.1.0) for how to do it correctly.

using SHAutoComplete with CEdit control

I am developing an MFC application, can i use SHAutoComplete with a CEdit control? Also is there any ready made auto complete controls are available? or i need to use write all the code for creating the list box below the edit control as user types in edit control?
Just pass CEdit's m_hwnd member to SHAutoComplete. I don't think that extension warrant another class. The listbox is created by the AutoComplete object created by SHAutoComplete.
SHAutoComplete helps to autocomplete paths (system or URL).
If this is a combo box and you want to use autocomplete for suggesting string contained in the combo, you have to write a code to handle it.
There are samples you can find. One I found (working):
http://www.ucancode.net/Visual_C_MFC_COM_faq/Visual-C-Auto-completion-ComboBox-CComboBox.htm