-
1. Data: 2012-02-13 19:36:58
Temat: mfc - propagowanie notyfikacji
Od: Kicer <...@...c>
Witam
Na wstępie zaznaczam, że dopiero zaczynam się uczyć mfc.
Mam program w którym był obiekt klasy dziedziczącej po CWin.
Zawierał on dwa podokna, z czego jednym jest CTreeCtrl.
CTreeCtrl za pomocą WM_NOTIFY daje znać rodzicowy, gdy użytkownik kliknął na
element drzewa.
Chciałbym dodać pomiędzy bieżącego obiektu-rodzica a jego dzieci, obiekt
który będzie zarządzał inteligentnie ich rozmieszczeniem (coś na wzór
layoutów z Qt).
Czyli mam tak: główny rodzic (CWin) -> layout (CWin) -> dzieci (w tym
CTreeCtrl).
Jak zmusić obiekt layoutu, aby wszystkie notyfikacje dzieci (abstrahując
teraz od CTreeCtrl) były propagowane do właściwego rodzica?
Probowałem w MESSAGE_MAP dla layoutu dodać ON_MESSAGE(WM_NOTIFY, foo), tak,
aby następnie wszystkie przychodzące notyfikacje posłać do parenta, ale
funkcja foo w ogóle sie nie woła.
pozdrawiam
--
Michał Walenciak
gmail.com kicer86
http://kicer.sileman.net.pl
gg: 3729519
-
2. Data: 2012-02-13 20:06:13
Temat: Re: mfc - propagowanie notyfikacji
Od: Bronek Kozicki <b...@s...net>
On 13/02/2012 19:36, Kicer wrote:
> Chciałbym dodać pomiędzy bieżącego obiektu-rodzica a jego dzieci, obiekt
> który będzie zarządzał inteligentnie ich rozmieszczeniem (coś na wzór
> layoutów z Qt).
kiedyś używałem tego do zarządzania layout:
http://msdn.microsoft.com/en-us/magazine/cc302145.as
px , nie jest trudne
do zrozumienia.
Możesz też poczytać sobie
http://www.codeproject.com/Articles/116/Layout-Manag
er-for-Dialogs-Formviews-DialogBars-an
i przejrzeć artykuły z
http://www.codeguru.com/cpp/w-d/dislog/resizabledial
ogs/
Sorki że mało konkretna pomoc, ale kilku lat skutecznie udaje mi się
unikać MFC i nie zamiarzam się w tym znowu rozgrzebywać :) Co do samego
WM_NOTIFY, pamiętam że trzeba było ustawić odpowiednie flagi w kontrolce
żeby zostało cokolwiek przekazane rodzicowi.
B.
-
3. Data: 2012-02-13 21:01:40
Temat: Re: mfc - propagowanie notyfikacji
Od: Andrzej Jarzabek <a...@g...com>
On 13/02/2012 19:36, Kicer wrote:
> Witam
>
> Na wstępie zaznaczam, że dopiero zaczynam się uczyć mfc.
> Mam program w którym był obiekt klasy dziedziczącej po CWin.
> Zawierał on dwa podokna, z czego jednym jest CTreeCtrl.
>
> CTreeCtrl za pomocą WM_NOTIFY daje znać rodzicowy, gdy użytkownik kliknął na
> element drzewa.
>
> Chciałbym dodać pomiędzy bieżącego obiektu-rodzica a jego dzieci, obiekt
> który będzie zarządzał inteligentnie ich rozmieszczeniem (coś na wzór
> layoutów z Qt).
>
> Czyli mam tak: główny rodzic (CWin) -> layout (CWin) -> dzieci (w tym
> CTreeCtrl).
Dwa pytanka:
1. Dlaczego nie zrobisz tego, co chiałbyś mieć w tym layoucie, po prostu
z rodzica?
2. Rozważałeś skorzystanie z Document/View?
-
4. Data: 2012-02-13 21:09:03
Temat: Re: mfc - propagowanie notyfikacji
Od: Kicer <...@...c>
Andrzej Jarzabek wrote:
> Dwa pytanka:
> 1. Dlaczego nie zrobisz tego, co chiałbyś mieć w tym layoucie, po prostu
> z rodzica?
hmm w zasadzie mogłbym i od biedy zrobię. Chciałem mieć coś reusable.
> 2. Rozważałeś skorzystanie z Document/View?
Pierwotnie próbowalem, aczkolwiek dokumentacja Microsoftu jest potwornie
nieprzyjazna w tym temacie.
pozdrawiam
--
Michał Walenciak
gmail.com kicer86
http://kicer.sileman.net.pl
gg: 3729519
-
5. Data: 2012-02-13 21:09:26
Temat: Re: mfc - propagowanie notyfikacji
Od: Kicer <...@...c>
Bronek Kozicki wrote:
> On 13/02/2012 19:36, Kicer wrote:
>> Chciałbym dodać pomiędzy bieżącego obiektu-rodzica a jego dzieci, obiekt
>> który będzie zarządzał inteligentnie ich rozmieszczeniem (coś na wzór
>> layoutów z Qt).
>
> kiedyś używałem tego do zarządzania layout:
> http://msdn.microsoft.com/en-us/magazine/cc302145.as
px , nie jest trudne
> do zrozumienia.
>
> Możesz też poczytać sobie
> http://www.codeproject.com/Articles/116/Layout-Manag
er-for-Dialogs-
Formviews-DialogBars-an
> i przejrzeć artykuły z
> http://www.codeguru.com/cpp/w-d/dislog/resizabledial
ogs/
>
> Sorki że mało konkretna pomoc, ale kilku lat skutecznie udaje mi się
> unikać MFC i nie zamiarzam się w tym znowu rozgrzebywać :) Co do samego
> WM_NOTIFY, pamiętam że trzeba było ustawić odpowiednie flagi w kontrolce
> żeby zostało cokolwiek przekazane rodzicowi.
>
Dzięki, poczytam
--
Michał Walenciak
gmail.com kicer86
http://kicer.sileman.net.pl
gg: 3729519
-
6. Data: 2012-02-13 21:28:32
Temat: Re: mfc - propagowanie notyfikacji
Od: Andrzej Jarzabek <a...@g...com>
On 13/02/2012 21:09, Kicer wrote:
> Andrzej Jarzabek wrote:
>
>> Dwa pytanka:
>> 1. Dlaczego nie zrobisz tego, co chiałbyś mieć w tym layoucie, po prostu
>> z rodzica?
>
> hmm w zasadzie mogłbym i od biedy zrobię. Chciałem mieć coś reusable.
Możesz zrobić podklasę CWnd i potem dziedziczyć z niej dalej:
class LayoutWnd: public CWnd {
public:
void onCostamCostam() [...]
[...]
private:
Layout layout;
DECLARE_MESSAGE_MAP()
};
[...]
BEGIN_MESSAGE_MAP(LayoutWnd, CWnd)
[...]
>> 2. Rozważałeś skorzystanie z Document/View?
>
> Pierwotnie próbowalem, aczkolwiek dokumentacja Microsoftu jest potwornie
> nieprzyjazna w tym temacie.
Polecam książkę "Beginning MFC Programming" Ivora Hortona. Tam jest
wszystko fajnie objaśnione (pomijając że jest bardzo stara i opisuje
korzystanie z jakichś wizardów które wywalono z VS za późniego króla
ćwieczka, ale to można przeboleć).
-
7. Data: 2012-02-13 21:49:34
Temat: Re: mfc - propagowanie notyfikacji
Od: Andrzej Jarzabek <a...@g...com>
On 13/02/2012 21:09, Kicer wrote:
> Andrzej Jarzabek wrote:
>
>> 2. Rozważałeś skorzystanie z Document/View?
>
> Pierwotnie próbowalem, aczkolwiek dokumentacja Microsoftu jest potwornie
> nieprzyjazna w tym temacie.
Jeszcze: W sumie nie jest to takie skomplikowane, weź na dzień dobry
stwórzy sobie najprostszą aplikację document/view wizardem, zobaczysz o
co chodzi. Masz tam podklasę CView która obsługuje widok, wizard ci ją
wpakuje w CFrameWnd albo CMDIChildWnd, i swoją podklasę CDocument, w
której trzymasz dane (w tym przypadku może być layout). Framework
routuje ci nieobsłużone WM_COMMANDy z widoku do dokumentu - z innymi
komunikatami zdaje się niestety musisz sam obsłużyć w view i powołać
odpowiednie funkcje na dokumencie.
-
8. Data: 2012-02-15 19:08:25
Temat: Re: mfc - propagowanie notyfikacji
Od: Kicer <...@...c>
Andrzej Jarzabek wrote:
> On 13/02/2012 21:09, Kicer wrote:
>> Andrzej Jarzabek wrote:
>>
>>> 2. Rozważałeś skorzystanie z Document/View?
>>
>> Pierwotnie próbowalem, aczkolwiek dokumentacja Microsoftu jest potwornie
>> nieprzyjazna w tym temacie.
>
> Jeszcze: W sumie nie jest to takie skomplikowane, weź na dzień dobry
> stwórzy sobie najprostszą aplikację document/view wizardem, zobaczysz o
> co chodzi. Masz tam podklasę CView która obsługuje widok, wizard ci ją
> wpakuje w CFrameWnd albo CMDIChildWnd, i swoją podklasę CDocument, w
> której trzymasz dane (w tym przypadku może być layout). Framework
> routuje ci nieobsłużone WM_COMMANDy z widoku do dokumentu - z innymi
> komunikatami zdaje się niestety musisz sam obsłużyć w view i powołać
> odpowiednie funkcje na dokumencie.
dzięki za podpowiedź
pozdrawiam
--
Michał Walenciak
gmail.com kicer86
http://kicer.sileman.net.pl
gg: 3729519
-
9. Data: 2012-02-15 19:08:36
Temat: Re: mfc - propagowanie notyfikacji
Od: Kicer <...@...c>
Andrzej Jarzabek wrote:
> On 13/02/2012 21:09, Kicer wrote:
>> Andrzej Jarzabek wrote:
>>
>>> Dwa pytanka:
>>> 1. Dlaczego nie zrobisz tego, co chiałbyś mieć w tym layoucie, po prostu
>>> z rodzica?
>>
>> hmm w zasadzie mogłbym i od biedy zrobię. Chciałem mieć coś reusable.
>
> Możesz zrobić podklasę CWnd i potem dziedziczyć z niej dalej:
>
> class LayoutWnd: public CWnd {
> public:
> void onCostamCostam() [...]
> [...]
> private:
> Layout layout;
> DECLARE_MESSAGE_MAP()
> };
> [...]
> BEGIN_MESSAGE_MAP(LayoutWnd, CWnd)
> [...]
>
>
>>> 2. Rozważałeś skorzystanie z Document/View?
>>
>> Pierwotnie próbowalem, aczkolwiek dokumentacja Microsoftu jest potwornie
>> nieprzyjazna w tym temacie.
>
> Polecam książkę "Beginning MFC Programming" Ivora Hortona. Tam jest
> wszystko fajnie objaśnione (pomijając że jest bardzo stara i opisuje
> korzystanie z jakichś wizardów które wywalono z VS za późniego króla
> ćwieczka, ale to można przeboleć).
dzięki:)
pozdrawiam
--
Michał Walenciak
gmail.com kicer86
http://kicer.sileman.net.pl
gg: 3729519