void PopulateList( HTREEITEM parent, HWND hwnd, HWND tree ) { TV_INSERTSTRUCT tvi; char title[MAX_PATH]; char classname[MAX_PATH]; char fullname[MAX_PATH]; HWND next; HTREEITEM current; GetWindowText( hwnd, title, MAX_PATH ); GetClassName( hwnd, classname, MAX_PATH ); sprintf( fullname, "%s - {%s}", title, classname ); tvi.hParent = parent; tvi.hInsertAfter = TVI_SORT; tvi.item.mask = TVIF_TEXT | TVIF_PARAM; tvi.item.pszText = fullname; tvi.item.lParam = (LPARAM)hwnd; current = (HTREEITEM)SendMessage( tree, TVM_INSERTITEM, 0, (LPARAM)&tvi ); next = GetWindow( hwnd, GW_CHILD ); if( next ) { PopulateList( current, next, tree ); } next = GetWindow( hwnd, GW_HWNDNEXT ); if( next ) { PopulateList( parent, next, tree ); } return; }
void EditChainsDialog::OnInsert(wxCommandEvent & WXUNUSED(event)) { long item = mList->GetNextItem(-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); if (item == -1) { return; } BatchCommandDialog d(this, wxID_ANY); if (!d.ShowModal()) { return; } if(d.mSelectedCommand != wxT("")) { mBatchCommands.AddToChain(d.mSelectedCommand, d.mSelectedParameters, item); mChanged = true; mSelectedCommand = item + 1; PopulateList(); } }
/// An item in the chains list has been selected. void EditChainsDialog::OnChainSelected(wxListEvent & event) { if (!ChangeOK()) { event.Veto(); return; } int item = event.GetIndex(); mActiveChain = mChains->GetItemText(item); mBatchCommands.ReadChain(mActiveChain); if (mBatchCommands.IsFixed(mActiveChain)) { mRemove->Disable(); mRename->Disable(); mDefaults->Enable(); } else { mRemove->Enable(); mRename->Enable(); mDefaults->Disable(); } PopulateList(); }
/// Creates the dialog and its contents. void EditChainsDialog::Populate() { //------------------------- Main section -------------------- ShuttleGui S(this, eIsCreating); PopulateOrExchange(S); // ----------------------- End of main section -------------- // Get and validate the currently active chain mActiveChain = gPrefs->Read(wxT("/Batch/ActiveChain"), wxT("")); // Go populate the chains list. PopulateChains(); // We have a bare list. We need to add columns and content. PopulateList(); // Layout and set minimum size of window Layout(); Fit(); SetSizeHints(GetSize()); // Size and place window SetSize(wxSystemSettings::GetMetric(wxSYS_SCREEN_X) * 3 / 4, wxSystemSettings::GetMetric(wxSYS_SCREEN_Y) * 4 / 5); Center(); // Set the column size for the chains list. wxSize sz = mChains->GetClientSize(); mChains->SetColumnWidth(0, sz.x); // Size columns properly FitColumns(); }
void CollisionTypeDialog::OnAddType(wxCommandEvent& event) { int numTypes = m_project.GetCollisionTypeCount(); if(numTypes < 8) { u8 bit = 0; //Find gap in bit for(u8 i = 0; i < numTypes && !bit; i++) { if(!m_project.GetCollisionType(i)) { bit = i; } } if(!bit) { //No gap, add new bit = numTypes + 1; } m_project.AddCollisionType(bit); PopulateList(); } }
WidgetDownloadPanel::WidgetDownloadPanel(wxWindow* parent, wxWindowID id, const wxString& /*unused*/, const wxPoint& pos , const wxSize& size , long style ) : wxScrolledWindow (parent, id, pos, size, style, _T("widget-dl") ) { m_splitter = new wxSplitterWindow( this, -1, wxDefaultPosition, wxDefaultSize ); m_main_sizer = new wxBoxSizer ( wxHORIZONTAL ); m_list = new WidgetDownloadListctrl( m_splitter, WidgetDownloadListctrl::WIDGETLISTCTRL_ID ); PopulateList(); m_list->ResetColumnSizes(); Widget dummy; m_info_panel = new WidgetInfoPanel( dummy, m_splitter, ID_PANEL ); m_info_panel->Create(); m_splitter->SplitVertically( m_list, m_info_panel ); m_main_sizer->Add( m_splitter, 1, wxEXPAND|wxALL, 4 ); m_splitter->SetMinimumPaneSize( 400 ); m_splitter->SetSashPosition( sett().GetSashPosition( GetName() ) ); SetSizer( m_main_sizer ); Layout(); m_list->SortList( true ); }
void CWorldsDlg::OnSelchangedDirectory(NMHDR* pNMHDR, LRESULT* pResult) { NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR; // TODO: Add your control notification handler code here // LPPOINT lpPoint=new POINT; // UINT* pnFlags=new UINT; DDirIdent *pIdent; // GetCursorPos(lpPoint); // m_WorldTree.ScreenToClient(lpPoint); // HTREEITEM hItem=m_WorldTree.HitTest(*lpPoint,pnFlags); HTREEITEM hItem=pNMTreeView->itemNew.hItem; if(hItem) { pIdent = (DDirIdent*)m_pTree->GetItemData(hItem); if(pIdent) { m_csCurrentDir = pIdent->m_Filename; m_hCurrentItem = hItem; PopulateList(); } } //cleanup // delete lpPoint; // delete pnFlags; *pResult = 0; }
void CWorldsDlg::OnWorldDelete() { // Figure out which one they want to delete int iIndex = m_WorldList.GetSelectionMark(); if (iIndex < 0) return; // Display a confirmation dialog CString csWorldName = m_WorldList.GetItemText(iIndex, 0); CString csMessage = "Are you sure you want to delete the world " + csWorldName + "?"; if (MessageBox(csMessage, "Confirmation", MB_YESNO | MB_ICONQUESTION) == IDNO) return; // Get the full name of the world DFileIdent *pIdent; pIdent = (DFileIdent*)m_WorldList.GetItemData(iIndex); if(!pIdent) { MessageBox("Internal error deleting world!", "Error", MB_OK | MB_ICONEXCLAMATION); return; } csWorldName = dfm_GetFullFilename(GetFileMgr(), pIdent->m_Filename); // Delete the world if (!DeleteFile(csWorldName)) { MessageBox("Error deleting world", "Error", MB_OK | MB_ICONEXCLAMATION); return; } // Refresh the display list PopulateList(); }
/// Select the empty Command chain. void EditChainsDialog::OnDefaults(wxCommandEvent & WXUNUSED(event)) { mBatchCommands.RestoreChain(mActiveChain); mChanged = true; PopulateList(); }
BOOL CHTTPStatusCodeFilterDlg::OnInitDialog ( HWND hwndFocus, LPARAM lParam ) { m_wndList.Attach(GetDlgItem(IDC_LIST_FILTER_CODES)); m_wndList.SetExtendedListViewStyle(LVS_EX_CHECKBOXES|LVS_EX_FULLROWSELECT|LVS_SINGLESEL); m_wndList.InsertColumn ( 0, _T("Filter"), LVCFMT_LEFT, 40, 0 ); m_wndList.InsertColumn ( 1, _T("Status code"), LVCFMT_LEFT, 70, 1 ); m_wndList.InsertColumn ( 2, _T("Description"), LVCFMT_LEFT, 370, 1 ); PopulateList(); return 1; }
void RotorPosMap::edit(void) { uint id = getValue().toUInt(); QString angle; if (MythPopupBox::showGetTextPopup( GetMythMainWindow(), DeviceTree::tr("Position Index %1").arg(id), DeviceTree::tr("Orbital Position"), angle)) { m_posmap[id] = AngleToFloat(angle); PopulateList(); } }
void Dlg_MemBookmark::ImportFromFile( std::string sFilename ) { FILE* pFile = nullptr; errno_t nErr = fopen_s( &pFile, sFilename.c_str(), "r" ); if ( pFile != nullptr ) { Document doc; doc.ParseStream( FileStream( pFile ) ); if ( !doc.HasParseError() ) { if ( doc.HasMember( "Bookmarks" ) ) { ClearAllBookmarks(); const Value& BookmarksData = doc[ "Bookmarks" ]; for ( SizeType i = 0; i < BookmarksData.Size(); ++i ) { MemBookmark* NewBookmark = new MemBookmark(); wchar_t buffer[ 256 ]; swprintf_s ( buffer, 256, L"%s", Widen( BookmarksData[ i ][ "Description" ].GetString() ).c_str() ); NewBookmark->SetDescription ( buffer ); NewBookmark->SetAddress( BookmarksData[ i ][ "Address" ].GetUint() ); NewBookmark->SetType( BookmarksData[ i ][ "Type" ].GetInt() ); NewBookmark->SetDecimal( BookmarksData[ i ][ "Decimal" ].GetBool() ); NewBookmark->SetValue( GetMemory( NewBookmark->Address(), NewBookmark->Type() ) ); NewBookmark->SetPrevious ( NewBookmark->Value() ); AddBookmark ( NewBookmark ); AddBookmarkMap( NewBookmark ); } if ( m_vBookmarks.size() > 0 ) PopulateList(); } else { ASSERT ( " !Invalid Bookmark File..." ); MessageBox( nullptr, _T("Could not load properly. Invalid Bookmark file."), _T("Error"), MB_OK | MB_ICONERROR ); return; } } fclose( pFile ); } }
int CVICALLBACK mask_folder (int panel, int control, int event, void *callbackData, int eventData1, int eventData2) { switch (event) { case EVENT_COMMIT: DirSelectPopup ("d:\\test", "Masks Folder", 1, 1, mask_path); SetCtrlVal (ERG_panel,ERG_panel_folder_path , mask_path); PopulateList(); break; } return 0; }
BOOL CDbManageDlg::OnInitDialog() { CDialog::OnInitDialog(); int lpiTabs[4]; // lpiTabs[0] = 120; // lpiTabs[1] = 220; // lpiTabs[2] = 300; lpiTabs[0] = 150; lpiTabs[1] = 250; lpiTabs[2] = 300; m_listBox.SetTabStops(3,lpiTabs); // TODO: Add extra initialization here PopulateList(); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE }
void EditChainsDialog::OnDown(wxCommandEvent & WXUNUSED(event)) { long item = mList->GetNextItem(-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); if (item == -1 || item + 2 >= mList->GetItemCount()) { return; } mBatchCommands.AddToChain(mBatchCommands.GetCommand(item), mBatchCommands.GetParams(item), item + 2); mBatchCommands.DeleteFromChain(item); mChanged = true; mSelectedCommand = item + 1; PopulateList(); }
void EditChainsDialog::OnDelete(wxCommandEvent & WXUNUSED(event)) { long item = mList->GetNextItem(-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); if (item == -1 || item + 1 == mList->GetItemCount()) { return; } mBatchCommands.DeleteFromChain(item); mChanged = true; if (item >= (mList->GetItemCount() - 2) && item >= 0) { item--; } mSelectedCommand = item; PopulateList(); }
void CollisionTypeDialog::OnIconChange(wxCommandEvent& event) { u8 collisionTypeBits = GetSelection(); if(collisionTypeBits) { if(CollisionType* collisionType = m_project.GetCollisionType(collisionTypeBits)) { //Open image file wxFileDialog dialogue(this, _("Open Image file"), "", "", "BMP files (*.bmp)|*.bmp", wxFD_OPEN | wxFD_FILE_MUST_EXIST); if(dialogue.ShowModal() == wxID_OK) { wxImage image; if(image.LoadFile(dialogue.GetPath())) { if(image.GetWidth() == sIconWidth && image.GetHeight() == sIconHeight) { //Set icon data const int bytesPerPixel = 3; int imageSize = sIconWidth * sIconHeight * bytesPerPixel; collisionType->iconData.resize(imageSize); unsigned char* imageData = image.GetData(); ion::memory::MemCopy(&collisionType->iconData[0], imageData, imageSize); //Repopulate list and re-select current item to display icons PopulateList(); OnTypeSelected(collisionTypeBits); //Refresh collision types panel m_mainWindow.RedrawPanel(MainWindow::ePanelCollisionTypes); } else { wxMessageBox("Image must be 16x16", "Error", wxOK | wxICON_ERROR); } } } } } }
/// An item in the list has been selected. /// Bring up a dialog to allow its parameters to be edited. void EditChainsDialog::OnCommandActivated(wxListEvent &event) { int item = event.GetIndex(); BatchCommandDialog d(this, wxID_ANY); d.SetCommandAndParams(mBatchCommands.GetCommand(item), mBatchCommands.GetParams(item)); if (!d.ShowModal()) { return; } mBatchCommands.DeleteFromChain(item); mBatchCommands.AddToChain(d.mSelectedCommand, d.mSelectedParameters, item); mChanged = true; mSelectedCommand = item; PopulateList(); }
/*---------------------------------------------------------------------------*/ int main (int argc, char *argv[]) { init_variables(); if (InitCVIRTE (0, argv, 0) == 0) return -1; DisableBreakOnLibraryErrors (); setup_oscillo(); setup_SRS(); start_shaper(); generate_xarray (); if ((Main_pnl_handle = LoadPanel (0, "ERG.uir", ERG_panel)) < 0) return -1; mask_folder(Main_pnl_handle,99,EVENT_COMMIT,0,0,0); PopulateList(); strcpy (mask_filename, "flat"); display_masks(); DisplayPanel (Main_pnl_handle); RunUserInterface (); DiscardPanel (Main_pnl_handle); stop_shaper(); return 0; }
void Dlg_MemBookmark::AddAddress() { if ( g_pCurrentGameData->GetGameID() == 0 ) return; MemBookmark* NewBookmark = new MemBookmark(); // Fetch Memory Address from Memory Inspector TCHAR buffer[ 256 ]; GetDlgItemText( g_MemoryDialog.GetHWND(), IDC_RA_WATCHING, buffer, 256 ); unsigned int nAddr = strtol( Narrow( buffer ).c_str(), nullptr, 16 ); NewBookmark->SetAddress( nAddr ); // Check Data Type if ( SendDlgItemMessage( g_MemoryDialog.GetHWND(), IDC_RA_MEMVIEW8BIT, BM_GETCHECK, 0, 0 ) == BST_CHECKED ) NewBookmark->SetType( 1 ); else if ( SendDlgItemMessage( g_MemoryDialog.GetHWND(), IDC_RA_MEMVIEW16BIT, BM_GETCHECK, 0, 0 ) == BST_CHECKED ) NewBookmark->SetType( 2 ); else NewBookmark->SetType( 3 ); // Get Memory Value NewBookmark->SetValue( GetMemory( nAddr, NewBookmark->Type() ) ); NewBookmark->SetPrevious( NewBookmark->Value() ); // Get Code Note and add as description const CodeNotes::CodeNoteObj* pSavedNote = g_MemoryDialog.Notes().FindCodeNote( nAddr ); if ( ( pSavedNote != nullptr ) && ( pSavedNote->Note().length() > 0 ) ) NewBookmark->SetDescription( Widen( pSavedNote->Note() ).c_str() ); // Add Bookmark to vector and map AddBookmark( NewBookmark ); AddBookmarkMap( NewBookmark ); PopulateList(); }
void CWorldsDlg::OnWorldDecompress() { //first off, we need to get the filename of the selected item CString sInFileName = GetSelectedItemFileName(); int nDotPos = sInFileName.ReverseFind('.'); if(nDotPos == -1) return; CString sExt = sInFileName.Mid(nDotPos + 1); if(sExt.CompareNoCase("ltc") != 0) return; //make sure it is compressed if(CLTAUtil::IsFileCompressed(sInFileName) == false) { //this shouldn't ever happen. The wrong menu item managed to come up ASSERT(false); return; } //make sure that the region we are compressing is not open for editing for(uint32 nCurrRegion = 0; nCurrRegion < GetProjectBar()->m_RegionDocs.GetSize(); nCurrRegion++) { if(sInFileName.CompareNoCase(GetProjectBar()->m_RegionDocs[nCurrRegion]->m_FileName) == 0) { //they are trying to compress a file that is open, we can't allow this, otherwise //when they save, it will save to the wrong filename. Another approach //would be to update the region's filename, but I don't think I'll have enough //time to thoroughly test this to my satisfaction, so I'll go with the error MessageBox( sInFileName + " is currently open for editing.\nYou must close this file before you decompress it", "Cannot Decompress Open File", MB_ICONEXCLAMATION | MB_OK); return; } } CString sOutFileName = ConvertExtension(sInFileName, ".ltc", ".lta"); //see if the file already exists if(DoesFileExist(sOutFileName) == TRUE) { //prompt the user with an overwrite prompt if(MessageBox("The file " + sOutFileName + " already exists.\nWould you like to overwrite this file?", "File already exists", MB_ICONQUESTION | MB_YESNO) == IDNO) { //the user didn't want to overwrite the file return; } } //now we open up the input file, and compress it BeginWaitCursor(); CLTAFile InFile(sInFileName, true, true); //make sure the files opened okay if(InFile.IsValid() == false) { MessageBox( "Unable to open " + sInFileName + " for reading\nDecompression not performed", "Error", MB_ICONEXCLAMATION | MB_OK); return; } CLTAFile OutFile(sOutFileName, false, false); //make sure the files opened okay if(OutFile.IsValid() == false) { MessageBox( "Unable to open " + sOutFileName + " for writing\nDecompression not performed", "Error", MB_ICONEXCLAMATION | MB_OK); return; } //now we just decompress uint8 nByte; while(InFile.ReadByte(nByte)) { if(OutFile.WriteByte(nByte) == false) { MessageBox( "Error while saving to " + sOutFileName + "\nDecompression not performed", "Error", MB_ICONEXCLAMATION | MB_OK); return; } } //close out the files InFile.Close(); OutFile.Close(); //now we need to delete the input file // Delete the world if (!DeleteFile(sInFileName)) { MessageBox("Error deleting world" + sInFileName, "Error", MB_OK | MB_ICONEXCLAMATION); return; } // Refresh the display list PopulateList(); EndWaitCursor(); }
void RotorPosMap::Load(void) { m_posmap = m_rotor.GetPosMap(); PopulateList(); }
void RotorPosMap::del(void) { uint id = getValue().toUInt(); m_posmap.erase(m_posmap.find(id)); PopulateList(); }
LRESULT CALLBACK WindowProc( HWND wnd, DWORD msg, WPARAM wParam, LPARAM lParam ) { switch( msg ) { case WM_CREATE: break; case WM_DESTROY: PostQuitMessage( 0 ); break; case WM_COMMAND: switch( wParam & 0xFFFF ) { case REFRESH_ID: if( wParam >> 16 == BN_CLICKED ) { SendDlgItemMessage( wnd, TREE_ID, TVM_DELETEITEM, 0, (LPARAM)TVI_ROOT ); PopulateList( NULL, GetDesktopWindow(), GetDlgItem( wnd, TREE_ID ) ); } break; case HIGHLIGHT_ID: if( wParam >> 16 == BN_CLICKED ) { if( current != NULL ) { HighlightWindow( current, 0xFF0000 ); } } break; case PULL_ID: if( wParam >> 16 == BN_CLICKED ) { if( current != NULL ) { SetForegroundWindow( current ); } } break; case DESTROY_ID: if( wParam >> 16 == BN_CLICKED ) { if( current != NULL ) { SendMessage( current, WM_DESTROY, 0, 0 ); } } break; case CLOSE_ID: if( wParam >> 16 == BN_CLICKED ) { if( current != NULL ) { SendMessage( current, WM_CLOSE, 0, 0 ); } } break; case KILLPROC_ID: if( wParam >> 16 == BN_CLICKED ) { if( current != NULL ) { KillProcess( current, GetDlgItem( wnd, STATIC_ID ) ); } } break; case EDITMEM_ID: if( wParam >> 16 == BN_CLICKED ) { if( current != NULL ) { EditProcMem( current, GetDlgItem( wnd, STATIC_ID ) ); } } break; case SHOW_ID: if( wParam >> 16 == BN_CLICKED ) { if( current != NULL ) { ShowWindow( current, SW_SHOW ); UpdateWindow( current ); } } break; case HIDE_ID: if( wParam >> 16 == BN_CLICKED ) { if( current != NULL ) { ShowWindow( current, SW_HIDE ); UpdateWindow( current ); } } break; case REDRAW_ID: if( wParam >> 16 == BN_CLICKED ) { if( current != NULL ) { RedrawWindow( current, NULL, NULL, RDW_ERASE | RDW_INVALIDATE ); UpdateWindow( current ); } } break; default: break; } break; case WM_NOTIFY: if( wParam == TREE_ID ) { if( ((NM_TREEVIEW*)lParam)->hdr.code == TVN_SELCHANGED ) { current = (HWND)((NM_TREEVIEW*)lParam)->itemNew.lParam; GetProcInfo( current, GetDlgItem( wnd, STATIC_ID )); } } break; default: return DefWindowProc( wnd, msg, wParam, lParam ); } return 0; }
dword AutoStartPage::OnKey( dword key, dword extKey ) { switch ( key ) { case RKEY_Exit: if ( CanExit() ) Close(); return 0; case RKEY_Mute: // pass Mute to the firmware return key; case RKEY_Menu: { if (menuActivates) { Close(); return key; } Replace(new ConfigPage()); return 0; } case RKEY_PlayList: if ( CanExit() ) Replace(new LoadedTAPPage()); return 0; case RKEY_VolUp: { int index = GetSelectedIndex(); if ( index < (int)m_taps.size()-1 ) { // swap the filenames AutoStartTAP t = m_taps[index]; m_taps[index] = m_taps[index+1]; m_taps[index+1] = t; // move the selection MoveSelection( 1, false ); m_dirty = true; } return 0; } case RKEY_VolDown: { int index = GetSelectedIndex(); if ( index > 0 && index < (int)m_taps.size() ) { // swap the filenames AutoStartTAP t = m_taps[index]; m_taps[index] = m_taps[index-1]; m_taps[index-1] = t; // move the selection MoveSelection( -1, false ); m_dirty = true; } return 0; } case RKEY_NewF1: { // enable/disable TAP int index = GetSelectedIndex(); EnableTAP( index, !m_taps[index].enabled ); return 0; } case RKEY_F2: { int index = GetSelectedIndex(); if ( index < (int)m_taps.size() ) { bool enable = !m_taps[index].enabled; for ( unsigned int i = 0; i < m_taps.size(); ++i ) EnableTAP( i, enable ); } return 0; } // Discard changes case RKEY_Recall: // get rid of the list items, then the DiscardItems(); AddItem(new SimpleTextListItem(this, 0, "", "Loading...")); Draw(); PopulateList(); m_dirty = false; return 0; // Save Changes case RKEY_Record: Save(); Close(); return 0; } ListPage::OnKey( key, extKey ); return 0; }
void AutoStartPage::OnOpen() { ListPage::OnOpen(); PopulateList(); }
DemoCollection::DemoCollection( const std::string &path, const std::string &demoExtension ) : path( path ), demoExtension( demoExtension ), defaultItemName( "" ), numDirectories( 0 ) { PopulateList(); }
CELFSymbolView::CELFSymbolView(HWND hParent, CELF* pELF) : m_pELF(pELF) , m_listView(NULL) { if(!DoesWindowClassExist(CLSNAME)) { WNDCLASSEX wc; memset(&wc, 0, sizeof(WNDCLASSEX)); wc.cbSize = sizeof(WNDCLASSEX); wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.hbrBackground = (HBRUSH)(COLOR_WINDOW); wc.hInstance = GetModuleHandle(NULL); wc.lpszClassName = CLSNAME; wc.lpfnWndProc = CWindow::WndProc; RegisterClassEx(&wc); } Create(NULL, CLSNAME, _T(""), WS_CHILD | WS_DISABLED | WS_CLIPCHILDREN, Framework::Win32::CRect(0, 0, 1, 1), hParent, NULL); SetClassPtr(); m_listView = new Framework::Win32::CListView(m_hWnd, Framework::Win32::CRect(0, 0, 1, 1), LVS_REPORT | LVS_OWNERDATA); m_listView->SetExtendedListViewStyle(m_listView->GetExtendedListViewStyle() | LVS_EX_FULLROWSELECT); LVCOLUMN col; memset(&col, 0, sizeof(LVCOLUMN)); col.pszText = _T("Name"); col.mask = LVCF_TEXT; m_listView->InsertColumn(0, col); memset(&col, 0, sizeof(LVCOLUMN)); col.pszText = _T("Address"); col.mask = LVCF_TEXT; m_listView->InsertColumn(1, col); memset(&col, 0, sizeof(LVCOLUMN)); col.pszText = _T("Size"); col.mask = LVCF_TEXT; m_listView->InsertColumn(2, col); memset(&col, 0, sizeof(LVCOLUMN)); col.pszText = _T("Type"); col.mask = LVCF_TEXT; m_listView->InsertColumn(3, col); memset(&col, 0, sizeof(LVCOLUMN)); col.pszText = _T("Binding"); col.mask = LVCF_TEXT; m_listView->InsertColumn(4, col); memset(&col, 0, sizeof(LVCOLUMN)); col.pszText = _T("Section"); col.mask = LVCF_TEXT; m_listView->InsertColumn(5, col); RefreshLayout(); RECT rc = m_listView->GetClientRect(); m_listView->SetColumnWidth(0, rc.right / 3); m_listView->SetColumnWidth(1, rc.right / 4); m_listView->SetColumnWidth(2, rc.right / 4); m_listView->SetColumnWidth(3, rc.right / 4); m_listView->SetColumnWidth(4, rc.right / 4); m_listView->SetColumnWidth(5, rc.right / 4); PopulateList(); m_listView->Redraw(); }