Jaký je rozdíl mezi WNDPROC a DLGPROC? – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Jaký je rozdíl mezi WNDPROC a DLGPROC? – C / C++ – Fórum – Programujte.comJaký je rozdíl mezi WNDPROC a DLGPROC? – C / C++ – Fórum – Programujte.com

 

oxidián0
Grafoman
11. 7. 2015   #1
-
0
-

Mohl by mi někdo objasnit jaký je rozdíl mezi těmito dvěma procedurama? V jednom kódu se WNDPROC používá na proceduru přiřazenou editboxu, v jiném kódu je DLGPROC přiřazený stránce Property Sheet page. Rozdíl?

Nahlásit jako SPAM
IP: 78.45.87.–
Radek Chalupa
~ Redaktor
+1
Super člen
11. 7. 2015   #2
-
0
-

#1 oxidián
Především v  návratové hodnotě, ve windowproc musíš pro výchozí zpracování vrátit výsledek volání DefWindowProc, zatímco v dlgproc vracíš 1 nebo 0 podle toho zda jsi zprávu zpracoval. Viz. dokumentace Windows SDK. Samozřejmě i u dialogu můžeš tookno subclassovat, abys mohl např. měnit parametry přijaté zprávy před jejím předáním o výchozího zpracování.

Radek Chalupa
- individuální konzultace, školení programování (C/C++, WinAPI, COM, ActiveX, ATL, C#, NET Framework, MFC)
- vývoj software na zakázku
http://www.radekchalupa.cz

Nahlásit jako SPAM
IP: 89.177.51.–
oxidián0
Grafoman
11. 7. 2015   #3
-
0
-

Včera večer jsem se pokoušel zjistit jak bych mohl zjistit aktuální stránku přímo z hlavní dialogové procedury. Zjistil jsem, že tam klasický hlavní procedura okna vůbec není, místo toho je tam hlavní procedura dialogového okna Property Sheet. Bohužel jsem si nevšiml že jsem během pokusu něco rozladil, ale na to jsem přišel až ráno, takže nevím co je příčinou problému. Jde o to, že při kliknutí na Property Sheet buttons se nezobrazují stránky. Je zobrazna jen ta první. Během pokusu o debug jsem zjistil, že program nespustí dialogové procedury (callbacky) které jsou přiřazeny jednotlivým stránkám, ale zaboha nemohu přijít nato proč. Prošel jsem snad všechny handles a vypadají že jsou nastaveny správně. V programu ale není procedura na zachtávání oken, všechny procedury se týkají Property sheet nebo dialogových oken. Prosím vás tedy o radu jak postupovat, abych to mohl odladit, nebo sem přiložím i diagram programu a linky na soubory.

Připojen obrázek.

Hlavní soubor programu aokts.cpp:

http://paste.ofcode.org/7zksRqzxf3rhsqSiDdzgUD

je to trochu redukované, ale většina věcí se stejně includuje v aokts.h

několik nedůležitých dlgProc....

http://paste.ofcode.org/PnZ2d2jqSnm3v8kAZHFq5m

editorsDlgProc deklaruje všechny procedury modulů (stránek sheetu).

http://paste.ofcode.org/5JZei8nNatXPvzLFyRkXvj

makewindows.cpp vytváří Property Page Sheet, stránky a definuje odkazy na dialogové procesy (procs)

http://paste.ofcode.org/xwuu9E6y4NNebpwDYKaiCy

Chyba by zřejmě měla být někde v aokts.cpp/.h nebo main_propsheet_dlgProc.cpp/.h.

Nahlásit jako SPAM
IP: 78.45.87.–
oxidián0
Grafoman
12. 7. 2015   #4
-
0
-

Tak jsem to vyřešil. Přeci jen jsem měl jednu zálohu a porovnáním dvou souborů jsem zjistil, že ve funkci MainPropertySheetDlgProc mám navíc:

    case WM_NOTIFY:    
    break;
a tento příkaz způsobí, že přestanou fungovat ty taby.

Nahlásit jako SPAM
IP: 78.45.87.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 50 hostů

Podobná vlákna

Rozdíl mezi == a is — založil Ahoj3

Rozdíl mezi C, C++ a C# — založil Murmand

Rozdíl mezi zápisy — založil Tomas

Rozdil mezi class a id — založil Václav Žitek

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý