Aspect Napisano Listopad 25, 2018 Autor Zgłoś Napisano Listopad 25, 2018 m-rog napisał: 1. W jaki sposób można zmienić kolor tekstu i tła w kontrolkach list,edit i static text??? Służą do tego komunikaty WM_CTLCOLOR..., które muszą być obsłużone przez kontrolkę rodzica. Dostajesz w nim uchwyt do kontekstu urządzenia, w którym będą wyrysowanie kontrolki, więc musisz zmodyfikować po prostu ten kontekst. Cytuj
Riddle Napisano Listopad 25, 2018 Zgłoś Napisano Listopad 25, 2018 Jeśli chodzi o dialogbox. Ten kod nie działa ponieważ odnośi się do sytuacji kiedy jest stworzone okno główne (hwnd) i ono wywołuje OpenFile. A umnie jest tylko jeden Dialogbox, który ma to wywołać!!! Próbowałem zmodyfikować ten kod, ale wciąż nie działa!!! A co do tej klasy...... chodziło mi o to czy ktoś ma swoją własną klase zrobioną przez siebie, która potrafiła by zrobić (prawie) wszystkie operacje na plikach. Cytuj
Parody Napisano Listopad 26, 2018 Zgłoś Napisano Listopad 26, 2018 Czy uchwyt do okna hwnd jest poprawny tzn. czy to okno istnieje (może to twój dialog ale tego nie wiem :) ), jeśli nie to daj zamiast hwnd uchwyt do okna dialog. Druga sprawa jeśli używasz ofn.hInstance=hInst to spróbuj dać taki kod w WM_CREATE albo WM_INITDIALOG: hIns=((LPCREATESTRUCT)lParam) ->hInstance; Osobiście mam to na NULL bo inaczej zawsze wywalało mi błąd :? Cytuj
Riddle Napisano Listopad 26, 2018 Zgłoś Napisano Listopad 26, 2018 Mój program nie ma głównego okna, tylko jest zwykły dialogbox. A w "hwndOwner" mam zapisany jako null a w "hInstance" przypisałem tylko handle dialogbox'u. To co mi podałeś próbowałem zrobić, ale wtedy program nie chciał się skompilować!!! Potrzebuje jakieś linki lub proste programy, w których były by wykorzystane komonikaty tj.: WM_CTLCOLORSTATIC,WM_CTLCOLORDLG,WM_CTLCOLORLISTBOX. Ostatnie pytanie. W jaki sposób wykorzystuje się funkcje DlgDirList w ListBox'ie???? Cytuj
Aspect Napisano Listopad 26, 2018 Autor Zgłoś Napisano Listopad 26, 2018 m-rog napisał: Potrzebuje jakieś linki lub proste programy, w których były by wykorzystane komonikaty tj.: WM_CTLCOLORSTATIC,WM_CTLCOLORDLG,WM_CTLCOLORLISTBOX. Poniższy fragment kodu wklej sobie do funkcji obslugi Twojego dialog boxa: case WM_CTLCOLORSTATIC:{ SetTextColor ((HDC)wParam,RGB(0,0,255)) ; SetBkMode((HDC)wParam,TRANSPARENT); HBRUSH hbrStatic=CreateSolidBrush(RGB(255,0,0)); return (LRESULT) hbrStatic;} Zmienia on kolor tekstu na niebieski i kolor tła na czerwony we WSZYSTKICH staticach będących dziećmi tego dialog boxa. m-rog napisał: Ostatnie pytanie. W jaki sposób wykorzystuje się funkcje DlgDirList w ListBox'ie???? Polecam MSDN, tam są wszystkie funkcje dokładnie opisane. Cytuj
Riddle Napisano Listopad 27, 2018 Zgłoś Napisano Listopad 27, 2018 1. "OpenFileName" -> Czy może mi ktoś powiedzieć w jaki sposób mam poprawnie uzupełnić strukture OPENFILENAME!!! Mój program składa się z jednego dialog boxu, a menu jest wywoływane OpneFileName. W zmiennych: hwndOwner; hInstance; wpisuje poprawnie uchwyty i okno nie chce się pokazywać. Sądze, że trzeba jeszcze uzupełnić zmienne: lpTemplateName, lCustData, ale nie wiem jak. Prosze o pomoc!! 2. Czy jest jakaś funkcja, która usuwa katalog bez względu na to czy jest pusty??? Cytuj
Riddle Napisano Listopad 27, 2018 Zgłoś Napisano Listopad 27, 2018 Kod OpenFile: OPENFILENAME ofn ; //lokalna int x = MAKEINTRESOURCE("DIALOGBOX1"); wm_create: ofn.lStructSize = sizeof(ofn); ofn.hwndOwner = hdwnd1; //pobierane z MSG dialogbox'a ofn.hInstance= hInst2; //handle dialogbox'a ofn.lpTemplateName= x ; ofn.lpstrFile[0] = '\0'; ofn.nMaxFile = sizeof(szFile); ofn.lpstrFilter = "All\0*.*\0"; ofn.nFilterIndex = 1; ofn.lpstrFileTitle = NULL; ofn.nMaxFileTitle = 1; ofn.lpstrInitialDir = NULL; ofn.Flags = OFN_FILEMUSTEXIST; break; Samo wywołanie funkcji NAPEWNO jest dobre. Cytuj
Aspect Napisano Listopad 27, 2018 Autor Zgłoś Napisano Listopad 27, 2018 OPENFILENAME ofn ; //lokalna Jeżeli ta zmienna jest lokalna i nie jest statyczna, to w następnym wywołaniu procedury obsługi wartości, które podałeś w WM_CREATE nie będą już znane. Jeżeli tak samo masz w programie, to dialog OpenFileName nie będzie się otwierał. int x = MAKEINTRESOURCE("DIALOGBOX1"); Tu Ci się po prostu chyba pomyliło, jak przepisywałeś na forum. Makro MAKEINTRESOURCE pobiera identyfikator(liczbowy) kontrolki i zamienia go na ciąg znaków. Ale to nie ma z Twoim głównym problemem żadnego związku raczej. Tak samo jak i punkt następny. ofn.lpTemplateName= x ; To pole i tak jest u Ciebie ignorowane, poniewaz nie dałęś flagi OFN_ENABLETEMPLATE. Cytuj
Riddle Napisano Listopad 30, 2018 Zgłoś Napisano Listopad 30, 2018 Zmienną OPENFILENAME ofn zmieniłem na statyczną i nadal nie chce działać. Jeśli chodzi o MAKEINTRESOURCE i ofn.lpTemplateName to przeczytałem w msdn2003apr ,że do lpTemplateName musze przypisać nazwe otrzymaną z makeintresource, dlatego właśnie tak zrobiłem. Gdyby miał ktoś pomysł jak zrobić aby uruchomić OpenFileName to prosze napisać na forum (bo ja już nie mam pomysłów) !! Cytuj
Aspect Napisano Grudzień 1, 2018 Autor Zgłoś Napisano Grudzień 1, 2018 Wkelj tutaj, albo gdzieś udostępnij, cały kod swojego programu, bo z tego co piszesz to błąd nie wynika ze złego wypełnienia struktury OPENFILENAME, tylko z jakiejś pomyłki, którą popełniłeś w innym miejscu. Tak na "ślepo" trudno jest cokolwiek powiedzieć. Cytuj
Riddle Napisano Grudzień 2, 2018 Zgłoś Napisano Grudzień 2, 2018 Dzięki "Biały" za pomoc, ale już to zrobiłem, i openfilename już mi (wkońcu) działa. Problem polegał na tym, że mój program nie chciał czytać danych z komunikatów WM_INITDIALOG i WM_CREATE. I tylko na tym polegał kłopot. Cytuj
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.