Ĺadny brzuch
Witam.
Mam taki fragment kodu BOOL CListCtrlDlg::OnInitDialog() { CDialog::OnInitDialog(); // Add "About..." menu item to system menu. // IDM_ABOUTBOX must be in the system command range. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) { CString strAboutMenu; strAboutMenu.LoadString(IDS_ABOUTBOX); if (!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); } } CRect rect(7,7,30,30); // Set the icon for this dialog. The framework does this automatically // when the application's main window is not a dialog SetIcon(m_hIcon, FALSE); // Set big icon SetIcon(m_hIcon, TRUE); // Set small icon m_Display->Create(NULL, //nazwa okna NULL, //nazwa WS_CHILD|WS_CLIPSIBLINGS|WS_CLIPCHILDREN|WS_VISIBLE, //rodzaj rect, this, //to okno jest korzeniem 1); // TODO: Add extra initialization here // Make the necessary initializations m_List.SetExtendedStyle(LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT/*|LVS_EX_ONECLICKACTIVATE|LVS_EX_SIMPLESELECTLVS_EX_FLATSB|*/ ); return TRUE; // return TRUE unless you set the focus to a control
Niestety podczas próbie uruchomienia wywala mi błąd. Niby wszystko się kompiluje ale przy poleceniu Create wywala mi "Unhandled exception at 0x00404d87 in ListCtrl.exe: 0xC0000005: Access violation reading location 0xcccccccc." Może macie pomysł jak to poprawić albo chociaż gdzie znaleźć błąd?
Nie wiem cos Ty tam natworzyl, ale masz tu ptzyklad z MSDN'a jak sie tworzy okienka niemodalne:
http://msdn2.microso...y/yhth57kd.aspx
Ok. Tak można to zrobić jeśli klasa która tworzy okno jest oparta na CDialog. Niestety moja klasa dziedziczy po CWnd. Robie to tak ponieważ w przykładzie umiejscowniena OpenGL w oknie konieczne było stworzenie klasy opartej właśnie na CWnd
tak sie sklada, że CDialeg dziedziczy po CWnd :) Zauwaz ze CDialog zawiera metode:
CWnd *GetWindow()
i po klopocie:)
Zainteresuj sie tez polem klasy CDialog m_hWnd :)
//edit
W gwoli scislosci bo sie zle wyslowilem. GetWindow i m_hWnd nie zwierają sie w CDialog tylko w CWnd z ktorego CDialeg dziedziczy i dzieki tem ma do nich dostep.
Użytkownik Rom edytował ten post 01 czerwiec 2006, 16:14
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
Mam taki fragment kodu BOOL CListCtrlDlg::OnInitDialog() { CDialog::OnInitDialog(); // Add "About..." menu item to system menu. // IDM_ABOUTBOX must be in the system command range. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) { CString strAboutMenu; strAboutMenu.LoadString(IDS_ABOUTBOX); if (!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); } } CRect rect(7,7,30,30); // Set the icon for this dialog. The framework does this automatically // when the application's main window is not a dialog SetIcon(m_hIcon, FALSE); // Set big icon SetIcon(m_hIcon, TRUE); // Set small icon m_Display->Create(NULL, //nazwa okna NULL, //nazwa WS_CHILD|WS_CLIPSIBLINGS|WS_CLIPCHILDREN|WS_VISIBLE, //rodzaj rect, this, //to okno jest korzeniem 1); // TODO: Add extra initialization here // Make the necessary initializations m_List.SetExtendedStyle(LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT/*|LVS_EX_ONECLICKACTIVATE|LVS_EX_SIMPLESELECTLVS_EX_FLATSB|*/ ); return TRUE; // return TRUE unless you set the focus to a control
Niestety podczas próbie uruchomienia wywala mi błąd. Niby wszystko się kompiluje ale przy poleceniu Create wywala mi "Unhandled exception at 0x00404d87 in ListCtrl.exe: 0xC0000005: Access violation reading location 0xcccccccc." Może macie pomysł jak to poprawić albo chociaż gdzie znaleźć błąd?
Nie wiem cos Ty tam natworzyl, ale masz tu ptzyklad z MSDN'a jak sie tworzy okienka niemodalne:
http://msdn2.microso...y/yhth57kd.aspx
Ok. Tak można to zrobić jeśli klasa która tworzy okno jest oparta na CDialog. Niestety moja klasa dziedziczy po CWnd. Robie to tak ponieważ w przykładzie umiejscowniena OpenGL w oknie konieczne było stworzenie klasy opartej właśnie na CWnd
tak sie sklada, że CDialeg dziedziczy po CWnd :) Zauwaz ze CDialog zawiera metode:
CWnd *GetWindow()
i po klopocie:)
Zainteresuj sie tez polem klasy CDialog m_hWnd :)
//edit
W gwoli scislosci bo sie zle wyslowilem. GetWindow i m_hWnd nie zwierają sie w CDialog tylko w CWnd z ktorego CDialeg dziedziczy i dzieki tem ma do nich dostep.
Użytkownik Rom edytował ten post 01 czerwiec 2006, 16:14