I'm not using mfc.
I make my own list-view (to shown data in table)
hListView = CreateWindowEx(0, WC_LISTVIEW, NULL, WS_CHILD | WS_VISIBLE | LVS_REPORT |
LVS_EDITLABELS, 0, 0, h_rcl.right - h_rcl.left, h_rcl.bottom - h_rcl.top,
hwnd_main, (HMENU)1000, hInstance, NULL);
But in one of column i want to show data like:
"Text | Text " (ofc as i want to put a img)
So my table would look like:
# | column1 | column 2
1 | "text <img> | text <img>" | text
Best Regards
Hahaha:D Right...
How to draw this images with this text?
I dont think that it is possible with:
ListView_SetItemText(hListView, items_num, 1, "test");
You can either:
enable the LVS_EX_SUBITEMIMAGES window style and then specify a per-item per-column image index into an ImageList that you associate with the ListView.
custom-draw the ListView items.
Related
How can I change the size of a dialog box to be 512 x 424 pixels? I know that MapDialogRect() converts from Dialog units to pixels but there is no API to do it in reverse? How will I fix the size of the dialog to what I want in pixels? As I am a beginner in programing, any code would be helpful. Thank you.
This is the resource from the Kinect 2 SDK Depth Basics ,
IDD_APP DIALOGEX 0, 0, 512, 436
STYLE DS_SETFONT | DS_FIXEDSYS | WS_MINIMIZEBOX | WS_CLIPCHILDREN | WS_CAPTION | WS_SYSMENU
EXSTYLE WS_EX_CONTROLPARENT | WS_EX_APPWINDOW
CAPTION "Sample"
CLASS "DepthBasicsAppDlgWndClass"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
CONTROL "",IDC_VIDEOVIEW,"Static",SS_BLACKFRAME,0,0,512,424
LTEXT "",IDC_STATUS,0,425,412,11,SS_SUNKEN,0
DEFPUSHBUTTON "Screenshot",IDC_BUTTON_SCREENSHOT,422,424,90,12
END
I am trying to set transparent background to a QWebView element.
+---------------------------+
| x | Window title | <<< Hidden borders and title bar
+---------------------------+ view->setWindowFlags(Qt::FramelessWindowHint);
| |
| ****************** |
| ********************<--|------- This is the HTML side (a rectangle with
| ****************** | rounded corners)
| <-|-- with transparent background that must
+---------------------------+ remain transparent for the desktop window
I searched about how can I set the transparent background for the webview and I found this code on all places:
QPalette pal = view->palette();
pal.setBrush(QPalette::Base, Qt::transparent);
view->page()->setPalette(pal);
view->setAttribute(Qt::WA_OpaquePaintEvent, false);
The code above doesn't work properly. This is how my window does look:
So, the issue is that the gray part MUST be transparent. How can I solve this?
I use the following code to undecorate the window.
view->setWindowFlags(Qt::FramelessWindowHint);
This works for me :
view->setStyleSheet("background:transparent");
view->setAttribute(Qt::WA_TranslucentBackground);
I'm using win32 to create a list view with downloaded icons, however, the text is abbreviated at approximately 19 characters (as about size 12 font, Segoe UI). I have included the CreateWindow and item creation code I'm using for it.
Any advice would be appreciated.
HWND airlinelist = CreateWindow(WC_LISTVIEW,L"",WS_CHILD | LVS_LIST | WS_TABSTOP | WS_BORDER,18,104,323,74,hwnd,(HMENU)3,hinst,NULL);
LVITEM newi;
ZeroMemory(&newi,sizeof(LVITEM));
const wchar_t* n = L"Client Website Name, website.com"
newi.pszText = newc;
newi.mask = LVIF_TEXT | LVIF_IMAGE;
newi.iImage = 0;
ListView_InsertItem(airlinelist,&newi);
The above would create a list view with the icon and something to the effect of "Client Website Nam..." despite it only taking up half of the list view's width.
I'll assume you're using LVS_LIST mode because the style is shown in your code sample. You can use the LVM_SETCOLUMNWIDTH message to adjust the column size once you've added items to the list control. You can also use the ListView_SetColumnWidth macro. E.g.:
SendMessage(airlinelist, LVM_SETCOLUMNWIDTH, 0, 300);
This would set the columns to 300 pixels wide. If you're actually using LVS_REPORT mode you would need to set the width for each column individually.
I'm trying to create a dialog in MFC that contains a CListCtrl to display a list of items with associated images. However, the images are being displayed as blank white squares. They are there, or at least, there is a space where they should be.
I am trying to load the bitmap from a file (although I have also tried loading from a resource ID which has the same effect) and I am storing it in a CImageList. This image list is then given to the CListCtrl. I'm fairly certain that the bitmap is being correctly loaded as I have managed to load the same bitmap successfully elsewhere in my project using the same code.
I'm not sure whether this is important, but this is part of a context menu shell extension and the dialog is raised when the user clicks on one of the items in the explorer context menu. Also, I'm relatively new to MFC so apologies if I've just missed something really obvious.
The following is my code for initialising the CListCtrl in report view with two columns and one item which should have the image in the first column and some text in the second:
// Get reference to list control
CListCtrl m_list_control = (CListCtrl*)GetDlgItem(IDC_LISTCONTROL);
// Create image list
CImageList image_list;
image_list.Create(32, 32, ILC_COLOR4, 0, 3);
HANDLE hBitMap = ::LoadImage(0, L"E:\pathtomybitmap\bitmap1.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
CBitmap bitmap;
bitmap.Attach((HBITMAP)hBitMap);
image_list.Add(&bitmap, RGB(255, 0, 255));
// Add the image list to the list control
// (LVSIL_NORMAL didn't seem to show anything at all)
m_list_control->SetImageList(&image_list, LVSIL_SMALL);
// Add columns
LVCOLUMN column;
column.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_IMAGE;
column.fmt = LVCFMT_LEFT | LVCFMT_IMAGE;
column.cx = 100;
column.pszText = (LPWSTR)&L"Image";
column.iImage = 0;
m_list_control->InsertColumn(0, &column);
m_list_control->InsertColumn(1, _T("Text"), LVCFMT_LEFT, 100);
int index = m_list_control->InsertItem(0, _T(""), 0);
m_list_control->SetItemText(0, 1, _T("My text"));
Any idea what I'm doing wrong?
Try changing create statement so that the size you put is smaller than the image size
image_list.Create(31, 31, ILC_COLOR4, 0, 3);
Try setting the mask argument of insert item to:
InsertItem(LVIF_TEXT | LVIF_IMAGE,...
I have successfully created a combobox with HSROLL as follows :
HWND find = CreateWindowEx(0, WC_COMBOBOX, _T(""), CBS_DROPDOWN | WS_VISIBLE | WS_CHILD |
CBS_AUTOHSCROLL | WS_HSCROLL | WS_VSCROLL,0, 1, 100 30,
hwndToolbar, (HMENU)0, ghinst, NULL);
SendMessage(find, CB_SETHORIZONTALEXTENT, (WPARAM)1000, 0);
But it also gives the VSCROLL, even if there are only 2 items. This is very ugly. If I drop the WS_VSCROLL, it solves the problem.
On the other hand, I also used :
SendMessage(find, CB_SETMINVISIBLE, (WPARAM)20, 0);
to show 20 items only, other items are showed by VSCROLL. The VScroll bar will appear only if there are more than 20 items. So I can not drop WS_VSCROLL.
Do you have any idea about how to use 'CB_SETHORIZONTALEXTENT' without VSCROLL bar when there are fewer items ?
It seems the height of the combo box is too small to accommodate the number of items. As many items will be shown on drop down, as the height specified. If items cannot fit into this height, then the vertical scroll bar will appear.