home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 10 Tools
/
10-Tools.zip
/
celltk7b.zip
/
cell07b.zip
/
doc
/
article.rus
< prev
Wrap
Text File
|
2000-10-25
|
14KB
|
342 lines
Cell Toolkit.
v.06d
Cell Toolkit φΓ« ¡Ñí«½∞Φá∩ í¿í½¿«ΓѬá ñ½∩ π߬«αÑ¡¿∩ ß«ºñá¡¿∩ »α«úαá¼¼
ñ½∩ OS/2 PM. è «ß«íÑ¡¡«ßΓ∩¼ φΓ«⌐ í¿í½¿«ΓѬ¿ ßΓ«¿Γ «Γ¡ÑßΓ¿ ß½ÑñπεΘÑÑ:
- »«ññÑ᪬á Γᬠ¡áºδóáѼδσ 'Split View'
- »«ññÑ᪬á Γπ½íáα«ó ß »áᬫó¬«⌐ ¡á ½εíπε úαá¡¿µπ «¬¡á »α«úαá¼¼δ.
- »«ññÑ᪬á "»πºδα∞¬«ó«⌐" »«ñ߬Ậ¿
- »α«ßΓ«Γá ¿ß»«½∞º«óá¡¿∩
- αÑ὿ºáµ¿∩ ¡á τ¿ßΓ«¼ C, »α¿ φΓ«¼ «¡á ¡«α¼á½∞¡«
¬«¼»¿½¿απÑΓß∩ ó αѪ¿¼Ñ C++
- ¿ß»«½∞º«óá¡¿Ñ Γ«½∞¬« OS/2 PM API
çáτѼ φΓ« óßÑ ¡πª¡«? ÅαѪñÑ óßÑú«, φΓá í¿í½¿«ΓÑ¬á ¡Ñ ÑßΓ∞ ¡ÑτΓ«
óßÑ«íΩѼ½εΘÑÑ. Å«φΓ«¼π ó »Ñαóπε «τÑαÑñ∞ «¡á »α¿ß»«ß«í½Ñ¡á ñ½∩ ß«ºñá¡¿∩
¡Ñí«½∞Φ¿σ »α«úαá¼¼. èα«¼Ñ Γ«ú«, αẼÑαδ ó φΓ«¼ ß½πτáÑ ¿¼ÑεΓ ¡Ñ¼á½«ó᪡«Ñ
º¡áτÑ¡¿Ñ, ¿º-ºá τÑú« «¡á, ß«íßΓóÑ¡¡«, ¿ íδ½á ßñѽá¡á ¡á ú«½«¼ API íѺ
»α¿¼Ñ¡Ñ¡¿∩ τÑú«-Γ« ú«Γ«ó«ú« ó ¬áτÑßΓóÑ íáºδ.
ìπ á ΓÑ»Ñα∞ »« »«α∩ñ¬π. Äß¡«ó¡á∩ ¿ñÑ∩ ½ÑªáΘá∩ ó «ß¡«óÑ Cell Toolkit - Γ«,
τΓ« óß∩¬«Ñ «¬¡« ¼«ª¡« αáºñѽ¿Γ∞ ¡á ñóá, ½¿í« »« ú«α¿º«¡Γ὿, ½¿í« »« óÑαΓ¿¬á½¿.
çáΓѼ ¬ φΓ«⌐ íẫó«⌐ ¿ñÑÑ í뫨 »α¿µÑ»½Ñ¡δ ΦáΦÑτ¬¿ ó ó¿ñÑ ó«º¼«ª¡«ßΓÑ⌐
¿¼ÑΓ∞ ºáñá¡δÑ ºáαá¡ÑÑ »α«»«αµ¿¿ τáßΓÑ⌐ «¬¡á, ß»½¿Γíáα, 󫺼«ª¡«ßΓ∞ Σ¿¬ß¿α«óáΓ∞
αẼÑα »«ñ«¬¡á, ¿ Γ.ñ. çáΓѼ í뫨 ñ«íáó½Ñ¡δ Γπ½íáαδ, ß ó«º¼«ª¡«ßΓ∞ε »áα¬«ó¬¿ ¿σ
¡á ½εíπε úαá¡¿µπ «¬¡á. ìᬫ¡Ñµ, ∩ ¡á»¿ßá½ ¡Ñ߬«½∞¬« »α¿¼Ñα«ó, ¬«Γ«αδÑ,
∩ ¡áñÑεß∞, »«¼«úπΓ αẫíαáΓ∞ß∩ ß í¿í½¿«ΓѬ«⌐.
ùÑú« σ«Γѽ«ß∞ »«½πτ¿Γ∞.
èᬠπªÑ π»«¼¿¡á½«ß∞ óδΦÑ, «ß¡«ó¡á∩ ¿ñÑ∩ - óß∩¬«Ñ «¬¡« ¼«ª¡« αáºñѽ¿Γ∞
¡á ñóá.
ìá»α¿¼Ñα Γá¬:
+---------+
| |
+---------+
| |
+---------+
꽿 Γá¬:
+----+----+
| | |
| | |
| | |
+----+----+
àß½¿ αáºαÑΦ¿Γ∞ ñѽ¿Γ∞ 󽫪ѡδÑ «¬¡á, Γ« ¼«ª¡« »«½πτ¿Γ∞, ¡á»α¿¼Ñα,
ó«Γ Γá¬πε ¬«¡ßΓαπ¬µ¿ε:
+----+----+
| | |
+----+----+
| |
+---------+
Æá¬, ¡á»α¿¼Ñα, óδú½∩ñ¿Γ τ¿Γá½¬á ¡∞εß«ó ó Netscape 2.02.
Ç ó«Γ Γᬠóδú½∩ñ¿Γ PMMail 2.0:
+---+-----+
| | |
| +-----+
| | |
+---+-----+
É¿ß.1
èᬠ¡Ñ Γαπñ¡« ñ«úáñáΓ∞ß∩ φΓ« ¿ ÑßΓ∞ ΓÑ ßá¼δÑ split view.
ÄτÑ¡∞ πñ«í¡« ñ½∩ ¿ß»«½∞º«óá¡¿∩, ¡« ñ«ó«½∞¡« αÑñ¬« αÑ὿ºπѼ«Ñ αÑΦÑ¡¿Ñ.
ò«Γ∩ ¡á ßἫ¼ ñÑ½Ñ ¡¿¬á¬¿σ «ß«íδσ ß½«ª¡«ßΓÑ⌐ ¡ÑΓ. çáú½∩¡Ñ¼ ó«ó¡πΓα∞ ªÑ
Cell Toolkit.
é¡πΓαÑ¡«ßΓ¿ Cell Toolkit.
ü¿í½¿«ΓѬá ß«ßΓ«¿Γ ¿º ñóπσ í«½∞Φ¿σ τáßΓÑ⌐, ñ«ó«½∞¡« »½«Γ¡« »ÑαÑ»½ÑΓÑ¡¡δσ
¼Ñªñπ ß«í«⌐. ÅÑαóá∩ - ß«íßΓóÑ¡¡« »«ññÑ᪬á split view, óΓ«αá∩ - Γπ½íáαδ.
ä½∩ αÑ὿ºáµ¿¿ split view íδ½ óδíαá¡ ß½ÑñπεΘ¿⌐ »«ñσ«ñ. Ĭ¡«, ¬«Γ«α«Ñ
ñ«½ª¡« ß«ñÑαªáΓ∞ split view αáºí¿óáÑΓß∩ ¡á ∩τÑ⌐¬¿, ¡á»α¿¼Ñα ñ½∩ Γᬫú« «¬¡á
¬«Γ«α«Ñ ¿º«íαáªÑ¡« ¡á É¿ß.1 Γá¬á∩ αáºí¿ó¬á óδú½∩ñ¿Γ Γá¬:
+---------+
| | â½áó¡«Ñ «¬¡«
| |
| |
+---------+
/ \
/ \ +-----+ óÑασ¡∩∩ »á¡Ñ½∞
+---+ +---+ / | |
| | | | / +-----+
| | | | \ +-----+ ¡¿ª¡∩∩ »á¡Ñ½∞
| | | | \ | |
+---+ +---+ +-----+
½Ñóá∩ »αáóá∩
»á¡Ñ½∞ »á¡Ñ½∞
èα«¼Ñ Γ«ú«, ¼Ñªñπ »á¡Ñ½∩¼¿ ¡áσ«ñ¿Γß∩ ß»½¿Γíáα, ¬«Γ«αδ⌐ «íÑß»Ñτ¿óáÑΓ
󫺼«ª¡«ßΓ∞ »«½∞º«óáΓÑ½ε ¿º¼Ñ¡∩Γ∞ ß««Γ¡«ΦÑ¡¿Ñ αẼÑα«ó »á¡Ñ½Ñ⌐.
æἿ »á¡Ñ½¿ ¿ ÑßΓ∞ ΓѼ¿ µÑ½Ñó묨 «¬¡á¼¿, ó ¬«Γ«αδσ »α«¿ßσ«ñ¿Γ αÑá½∞¡á∩ αáí«Γá
»«½∞º«óáΓѽ∩: αÑñá¬Γ¿απÑΓß∩ ΓѬßΓ, »α«ß¼áΓα¿óáεΓß∩ ß»¿ß¬¿ ¿ Γ.ñ.
ê߬½ετÑ¡¿Ñ ó ñá¡¡«¼ ß½πτáÑ »αÑñßΓáó½∩ÑΓ ß«í«⌐ »αáóá∩ »á¡Ñ½∞, »«ß¬«½∞¬π
«¡á ∩ó½∩ÑΓß∩ ΣαÑ⌐¼«¼ ñ½∩ 󽫪ѡ«ú« split view. ò«α«Φ« ó¿ñ¡«,
τΓ« óßÑ «¬¡á ¼«ª¡« αáºí¿Γ∞ ¡á ñóá ó¿ñá: ΣαÑ⌐¼δ ¿ ¬«¡Ñτ¡δÑ «¬¡á.
ä½∩ αÑ὿ºáµ¿¿ ΣαÑ⌐¼«ó ¿ß»«½∞ºπÑΓß∩ ñ«ßΓáΓ«τ¡« »α«ßΓá∩ ¿ σ«α«Φ«
ºáαѬ«¼Ñ¡ñ«óáóΦá∩ ßÑí∩ ΓÑσ¡¿¬á subclassing. Æ« ÑßΓ∞, íÑαÑΓß∩
¬á¬«⌐-½¿í« ßΓá¡ñáαΓ¡δ⌐ ¬½áßß ¿ Ñ¼π »«ñ¼Ñ¡∩ÑΓß∩ «íαáí«Γτ¿¬ ß««íΘÑ¡¿⌐
ó αѺπ½∞ΓáΓÑ τÑú« ¼«ª¡« ó¿ñ«¿º¼Ñ¡¿Γ∞ »«óÑñÑ¡¿Ñ Γᬫú« «¬¡á.
ê ñ½∩ ΣαÑ⌐¼«ó, ÑßΓÑßΓóÑ¡¡« ;-) ¡á¿í«½ÑÑ »«ñσ«ñ∩Θ¿¼ ¬á¡ñ¿ñáΓ«¼ ∩ó½∩ÑΓß∩
Frame Window. ùΓ« ¡á¼ «Γ ¡Ñú« ¡πª¡« ó »Ñαóπε «τÑαÑñ∞,
ΓᬠφΓ« »αáó¿½∞¡« αẼÑßΓ¿Γ∞ 󽫪ѡδÑ «¬¡á. ä½∩ φΓ«ú« ñ«ßΓáΓ«τ¡«
»ÑαÑσóáΓ¿Γ∞ ñóá ß««íΘÑ¡¿∩:
WM_QUERYFRAMECTLCOUNT
WM_FORMATFRAME
ÅÑαó«Ñ ß««íΘÑ¡¿Ñ ó«ºóαáΘáÑΓ ¬«½¿τÑßΓó« »«ñτ¿¡Ñ¡¡δσ «¬«¡,
á óΓ«α«Ñ ¡Ñ»«ßαÑñßΓóÑ¡¡« «ΓóÑτáÑΓ ºá π¬½áñ¬π φΓ¿σ φ½Ñ¼Ñ¡Γ«ó »« »½«Θáñ¿ «¬¡á.
Å«ñα«í¡«ßΓ¿ ¼«ª¡« ¡á⌐Γ¿ ó Σπ¡¬µ¿¿ CellProc.
ÄßΓáÑΓß∩ αÑΦ¿Γ∞ ó«»α«ß ß« ß»½¿Γíáα«¼. èᬠ«¬áºá½«ß∞, ßá¼«Ñ »α«ßΓ«Ñ
αÑΦÑ¡¿Ñ φΓ« αÑú¿ßΓαᵿ∩ ß««ΓóÑΓßΓóπεΘÑú« ¬½áßßá ¿ »α¿ ß«ºñá¡¿¿ ΣαÑ⌐¼á
ó ¬áτÑßΓóÑ ¬½áßßá ñ½∩ ¬½¿Ñ¡Γ߬«ú« «¬¡á π¬áºδóáΓ∞ φëà ¬½áßß. ¥Γ« ºá¼ÑΓ¡«
π»α«ΘáÑΓ ª¿º¡∞, »«ß¬«½∞¬π ¼á¡¿»π½∩µ¿∩¼¿ ß φΓ¿¼ «¬¡«¼ ó «ß¡«ó¡«¼ «ºáí«τÑ¡
ßΓáαδ⌐ «íαáí«Γτ¿¬ Frame Window. éßÑ, τΓ« ¡πª¡« - φΓ« »αáó¿½∞¡« πßΓá¡«ó¿Γ∞
αẼÑα ß»½¿Γíáαá »α¿ «íαáí«Γ¬Ñ WM_FORMATFRAME, ¡Ñ ºáíδΓ∞ Ñú« »α«α¿ß«óáΓ∞
¿ »α¿ »α«σ«ªñÑ¡¿¿ ¬παß«αá ¼δΦ¿ ¡áñ ß»½¿Γíáα«¼ ¡Ñ ºáíδΓ∞ »«¼Ñ¡∩Γ∞ Σ«α¼π
¬παß«αá. àßΓ∞ ÑΘÑ «ñ¡á óÑΘ∞, ºá ¬«Γ«απε Γ«ªÑ «ΓóÑτáÑΓ ß»½¿Γíáα: ¿º¼Ñ¡Ñ¡¿Ñ
αẼÑα«ó »á¡Ñ½Ñ⌐. äÑΓ὿ φΓ¿σ ñÑ⌐ßΓó¿⌐ ¼«ª¡« ¡á⌐Γ¿ ó Σπ¡¬µ¿¿ CellClientProc.
ÆÑ»Ñα∞ ¡Ñ¼¡«ª¬« « Γπ½íáαáσ. ìÑ»«ßαÑñßΓóÑ¡¡« Γπ½íáα - φΓ« Γ«ªÑ ΣαÑ⌐¼,
ó ¬«Γ«α«¼ αáß»«½«ªÑ¡δ ¬¡«»¬¿. è¡«»¬¿ φΓ« «íδτ¡δÑ Push Button. ùÑú«-Γ«
¡Ñ«íδτ¡«ú« ó ¡¿σ ¡ÑΓ, ¬α«¼Ñ, »«ªá½π⌐, "»πºδα∞¬«ó«⌐" »«ñ߬Ậ¿. é»α«τѼ
φΓ« ßñѽᡫ ñ«ßΓáΓ«τ¡« Γαáñ¿µ¿«¡¡δ¼ ß»«ß«í«¼ (subclassing),
á ΓÑσ¡¿¬á ß«ºñá¡¿∩ Γᬫ⌐ »«ñ߬Ậ¿ íδ½á ó ñÑΓá½∩σ «»¿ßá¡á ó «ñ¡«¼ ¿º
óδ»π߬«ó EDM/2.
ä½∩ αÑ὿ºáµ¿¿ 󫺼«ª¡«ßΓ¿ »α¿ß«Ññ¿¡Ñ¡¿∩/«Γß«Ññ¿¡Ñ¡¿∩ Γπ½íáαá ¡Ñ »α¿Φ½«ß∞
»α«ñѽδóáΓ∞ ¬á¬¿σ-Γ« ¡Ñ«íδτ¡δσ Γα嬫ó. Ĭáºá½«ß∞, τΓ« ñ«ßΓáΓ«τ¡« »«¼Ñ¡∩Γ∞
«¬¡«-α«ñ¿Γѽ∞ ñ½∩ Γπ½íáαá ¿ «¡ ¿º τáßΓ¿ «ß¡«ó¡«ú« «¬¡á »αÑóαáΓ¿Γß∩
ó ¡Ñºáó¿ß«¼«Ñ «¬¡« ¿½¿ ¡á«í«α«Γ, ¿º ¡Ñºáó¿ß¿¼«ú« «¬¡á ßΓá¡ÑΓ τáßΓ∞ε «¬¡á
»α«úαá¼¼δ.
ä½∩ ßí«α¬¿ í¿í½¿«ΓѬ¿ ¿ »α¿¼Ñα«ó »«¡áñ«í∩Γß∩:
- ¬«¼»¿½∩Γ«α C (»α«óÑαÑ¡δ VAC++, Watcom C++ 10.0a ¿ 10.6,
Borland C++ 2.0, EMX 0.9c);
- Borland MAKE (¿º ¬«¼»½Ñ¬Γá BC ¿½¿ Tasm) ¿
- grep (»α«óÑαÑ¡δ GNU ¿ Borland);
- mv (GNU file utils).
- makedep (¡á»¿ßá¡á∩ Walter Bright ß ¼«¿¼¿ ¼«ñ¿Σ¿¬áµ¿∩¼¿),
ÑÑ í¿¡áα¡¿¬ óσ«ñ¿Γ ó ¬«¼»½Ñ¬Γ áασ¿óá
- EXEHDR ¿º Toolkit.
æ«íßΓóÑ¡¡«, óß∩ í¿í½¿«ΓѬá (»«¬á) φΓ« «ñ¿¡ .H Σá⌐½ ¿ «ñ¿¡ .C Σá⌐½,
á óßÑ »ÑαÑτ¿ß½Ñ¡«Ñ óδΦÑ ¡πª¡« ñ½∩ ßí«α¬¿ »α¿¼Ñα«ó. ê¼ÑεΘ¿⌐ß∩ ó ¬«¼»½Ñ¬ΓÑ
makefile ú«Γ«ó ¬ π»«ΓαÑí½Ñ¡¿ε ó¼ÑßΓÑ ß Watcom 10.x.
æí«α¬á »«ñ ñαπú¿Ñ ¬«¼»¿½∩Γ«αδ ñѽáÑΓß∩ ó ñóá φΓá»á:
- ºá»π߬áѼ build.cmd, ¬«Γ«αδ⌐ ßΓα«¿Γ makefile
(ñ½∩ ß»αáó«¬ ¼«ª¡« ºá»πßΓ¿Γ∞ build.cmd ß »áαá¼ÑΓα«¼ -?),
- ºá»π߬áѼ make ¿ τÑú« - ¡¿íπñ∞ ¿¼ÑѼ :)
ÆÑ»Ñα∞ ¬«α«Γ¬«Ñ απ¬«ó«ñßΓó« »« ¿ß»«½∞º«óá¡¿ε:
ä½∩ ß«ºñá¡¿∩ «¬¡á ¡Ñ«íσ«ñ¿¼« »«ñú«Γ«ó¿Γ∞ ßΓαπ¬Γπαπ Γ¿»á CellDef (ß¼. cell.h):
typedef struct stCellDef
{
LONG lType;
PSZ pszClass;
PSZ pszName;
ULONG ulStyle;
ULONG ulID;
struct stCellDef* pPanel1;
struct stCellDef* pPanel2;
PFNWP pClassProc;
PFNWP pClientClassProc;
LONG lSize;
} CellDef;
lType: ºáñáÑΓß∩ Γ¿» ¿ Σ½áª¬¿ «ΓóÑτáεΘ¿Ñ ºá αẽ¿τ¡δÑ ó«º¼«ª¡«ßΓ¿ «¬¡á.
π¬áºá¡¿Ñ Σ½áúá CELL_WINDOW «º¡áτáÑΓ, τΓ« φΓ« íπñÑΓ ∩τÑ⌐¬á ß π»αáó½∩εΘ¿¼
φ½á¼Ñ¡Γ«¼ (¬«¡Γα«½«¼), ó »α«Γ¿ó¡«¼ ß½πτáÑ (»α¿ ºáñá¡¿¿ CELL_VSPLIT ¿½¿
CELL_HSPLIT) - φΓ« ¬«¡ΓÑ⌐¡Ñα ñ½∩ ∩τÑѬ.
äαπú¿Ñ Σ½áú¿ «»¿ßá¡δ ¡¿ªÑ.
pszClass: ºáñáÑΓ ¬½áßß «¬¡á, ñ½∩ ßΓá¡ñáαΓ¡δσ ¬«¡Γα«½«ó φΓ« «íδτ¡δÑ ¬«¡ßΓá¡Γδ
¿º ßÑα¿¿ WC_ (WC_BUTTON, WC_MLE, ...). ¥Γ« ¼«úπΓ íδΓ∞ ¿ éáΦ¿
ß«íßΓóÑ¡¡δÑ ¬½áßßδ «¬«¡. ¥Γ«Γ »áαá¼ÑΓα ¿ú¡«α¿απÑΓß∩ ñ½∩ ΣαÑ⌐¼«ó.
é φΓ«¼ ß½πτáÑ óßÑúñá ß«ºñáÑΓß∩ WC_FRAME.
pszName: φëà »áαá¼ÑΓα ßΓá¡«ó¿Γß∩ Window Text ß«ºñáóáѼ«ú« «¬¡á.
àß½¿ íδΓ∞ ß«óßѼ Γ«τ¡δ¼, Γ« «¡á »ÑαÑñáÑΓß∩ íѺ ¿º¼Ñ¡Ñ¡¿⌐ «ñ¡¿¼ ¿º
»áαá¼ÑΓα«ó WinCreateWindow. Äí φΓ«¼ ¼«ª¡« »«τ¿ΓáΓ∞ ó Γπ½¬¿ΓÑ.
ulID : ¿ñÑ¡Γ¿Σ¿¬áΓ«α «¬¡á.
ulStyle: φΓ«, «»∩Γ∞ Γᬿ, Σ½áú¿ ¬«Γ«αδÑ íπñπΓ »ÑαÑñá¡δ ó WinCreateWindow.
æ «ñ¡«⌐ «ú«ó«α¬«⌐: ñ½∩ ¬«¡ΓÑ⌐¡Ñαá ∩τÑѬ φΓ« Σ½áú¿ ¿º ßÑα¿¿ FCF_,
ºáñáεΘ¿Ñ ó¡ÑΦ¡¿⌐ ó¿ñ ¿ »«óÑñÑ¡¿Ñ αἬ¿ «¬¡á.
pPanel1, pPanel2: π¬áºáΓѽ¿ ¡á «»¿ßá¡¿Ñ ∩τÑѬ ß«ñÑαªáΘ¿σß∩ ó ¬«¡ΓÑ⌐¡ÑαÑ. ¥Γ¿
π¬áºáΓѽ¿ íπñπΓ »α«¿ú¡«α¿α«óá¡δ, Ñß½¿ π¬áºá¡ Σ½áú CELL_WINDOW.
pClassProc: φΓ« »α«µÑñπαá, ¬«Γ«αá∩ íπñÑΓ ºá¼Ñ¡∩Γ∞ ßΓá¡ñáαΓ¡πε »α«µÑñπα𠫬¡á.
é φΓ«⌐ »α«µÑñπαÑ ¼«ª¡« »«½πτ¿Γ∞ π¬áºáΓѽ∞ ¡á ßΓá¡ñáαΓ¡δ⌐ «íαáí«Γτ¿¬
ß«íδΓ¿⌐ «¬¡á, ñ«ßΓáó ß »«¼«Θ∞ε WinQueryWindowULong() π¬áºáΓѽ∞ ¡á
ßΓαπ¬Γπαπ. Æ¿» ßΓαπ¬Γπαδ «Γ½¿τáÑΓß∩ ñ½∩ ¬«¡ΓÑ⌐¡Ñαá ∩τÑѬ ¿ ∩τÑѬ.
ä½∩ ∩τÑѬ φΓ« WindowCellCtlData, ñ½∩ «¬«¡ - CellCtlData.
éΓ«αá∩ ßΓαπ¬Γπαá »αÑñ¡áº¡áτÑ¡á ñ½∩ ó¡πΓαÑ¡¡Ñú« ¿ß»«½∞º«óá¡¿∩ ¿ »«
«¬«¡τá¡¿ε «íαáí«Γ¬¿ ß««íΘÑ¡¿∩ ¡Ñ«íσ«ñ¿¼« óδºδóáΓ∞ ¡Ñ ßΓá¡ñáαΓ¡δ⌐
«íαáí«Γτ¿¬ (CellCtlData->pOldProc), á CellProc. é ½εí«¼ ß½πτáÑ, Ñß½¿
éá¼ »«¡áñ«í¿Γß∩ ºá½ÑºáΓ∞ Γᬠú½πí«¬«, Γ« éá¼ »α¿ñÑΓß∩ ñÑΓá½∞¡ÑÑ ß¼«ΓαÑΓ∞
¿ßσ«ñ¡δ⌐ ΓѬßΓ cell.c.
pClientClassProc: φΓ« »α«µÑñπαá, ¬«Γ«αá∩ íπñÑΓ ºá¼Ñ¡∩Γ∞ ßΓá¡ñáαΓ¡δ⌐ «íαáí«Γτ¿¬
ß««íΘÑ¡¿⌐ ¬½¿Ñ¡Γ߬«⌐ τáßΓ¿ «¬¡á ¬«¡ΓÑ⌐¡Ñαá ∩τÑѬ. ü«½ÑÑ ñÑΓá½∞¡«
ß¼«Γα¿ΓÑ ¿ßσ«ñ¡δÑ ΓѬßΓδ cell.c, »α«µÑñπαá CellClientProc.
lSize: ºáñáÑΓ Γ«τ¡δ⌐ αẼÑα «ñ¡«⌐ ¿º ∩τÑѬ. ìá»α¿¼Ñα: ñ½∩ αáºñѽѡ¡«⌐ »«
óÑαΓ¿¬á½¿ »á¡Ñ½¿ φΓ« íπñÑΓ ú«α¿º«¡Γá½∞¡δ⌐ αẼÑα «ñ¡«⌐ ¿º ∩τÑѬ,
ó ºáó¿ß¿¼«ßΓ¿ «Γ Γ«ú«, ¬á¬«⌐ Σ½áú π¬áºá¡ ó lType. ä½∩ CELL_SIZE1
φΓ« íπñÑΓ αẼÑα ½Ñó«⌐ ∩τÑ⌐¬¿, ñ½∩ CELL_SIZE2 - »αáó«⌐.
ä½∩ αáºñѽѡ¡«⌐ »« ú«α¿º«¡Γ὿ »á¡Ñ½¿ φΓ« íπñÑΓ, ß««ΓóÑΓßΓóÑ¡¡«,
αẼÑα ¡¿ª¡Ñ⌐ ¿ óÑασ¡Ñ⌐ τáßΓÑ⌐.
ö½áú¿ ¿º ßÑα¿¿ CELL_
CELL_WINDOW - ƒτÑ⌐¬á ∩ó½∩ÑΓß∩ «¬¡«¼ (¬«¡Γα«½«¼)
CELL_VSPLIT - è«¡ΓÑ⌐¡Ñα ∩τÑѬ »«ñѽѡ »« óÑαΓ¿¬á½¿
CELL_HSPLIT - è«¡ΓÑ⌐¡Ñα »«ñѽѡ »« ú«α¿º«¡Γ὿
CELL_SPLITBAR - è«¡ΓÑ⌐¡Ñα ß«ñÑαª¿Γ splitbar
CELL_FIXED - ÉẼÑα ¡Ñ½∞º∩ ¿º¼Ñ¡∩Γ∞, ñáªÑ »α¿ ¡á½¿τ¿¿ splitbar
CELL_SIZE1 - Æ«τ¡δ⌐ αẼÑα π¬áºá¡ ñ½∩ »á¡Ñ½¿ 1 (¡¿ª¡∩∩ ¿½¿ ½Ñóá∩)
CELL_SIZE2 - Æ«τ¡δ⌐ αẼÑα π¬áºá¡ ñ½∩ »á¡Ñ½¿ 2 (óÑασ¡∩∩ ¿½¿ »αáóá∩)
CELL_SPLIT10x90 -\
CELL_SPLIT20x80 -|
CELL_SPLIT30x70 -|
CELL_SPLIT40x60 -|
CELL_SPLIT50x50 - > ö½áú¿ ºáñáεΘ¿Ñ ¡áτá½∞¡«Ñ «Γ¡«ΦÑ¡¿Ñ αẼÑα«ó ∩τÑѬ
CELL_SPLIT60x40 -|
CELL_SPLIT70x30 -|
CELL_SPLIT80x20 -|
CELL_SPLIT90x10 -/
ìá»α¿¼Ñα, ßΓαπ¬Γπαá CellDef, ºá»«½¡Ñ¡á∩ Γᬿ¼ «íαẫ¼:
CellDef lPanel =
{
CELL_VSPLIT | CELL_SPLITBAR | CELL_SPLIT70x30,
0,
"",
WS_VISIBLE,
ID_LPANE,
&uPanel,
&dPanel
};
ß«ºñáÑΓ αáºñѽѡ¡πε »« óÑαΓ¿¬á½¿ »á¡Ñ½∞, ß »α«»«µ¿∩¼¿ ½Ñó«⌐ ¿ »αáó«⌐ τáßΓÑ⌐
70 ¬ 30 ¿ ß «»¿ßá¡¿∩¼¿ ó¡πΓαÑ¡¡«ßΓÑ⌐ »á¡Ñ½Ñ⌐ ó ß««ΓóÑΓßΓóπεΘ¿σ ßΓαπ¬Γπαáσ.
Åα¿¼Ñαδ Γᬿσ ßΓαπ¬Γπα éδ ¡á⌐ñÑΓÑ ó multibar.c.
Äñ¿¡ ¿º ¿¡ΓÑαÑß¡δσ »α¿¼Ñα«ó ¿ß»«½∞º«óá¡¿∩ φΓ«⌐ ΓÑσ¡¿¬¿ »α¿óÑñÑ¡ ó nbsample.c.
çáΓѼ ¿ß»«½∞ºπ∩ «»¿ßá¡¡δÑ Γᬿ¼ «íαẫ¼ «¬¡á ¿σ ¼«ª¡« ß«ºñáóáΓ∞ ß »«¼«Θ∞ε
Σπ¡¬µ¿¿ CreateCell. èα«¼Ñ π¬áºáΓѽ∩ ¡á ßΓαπ¬Γπαπ-«»¿ßáΓѽ∞, Ñ⌐ »ÑαÑñáεΓß∩ ñóá
σÑ¡ñ½á «¬«¡: α«ñ¿Γѽ∞ ¿ ó½áñѽѵ. (ä½∩ ΓÑσ, ¬Γ« ÑΘÑ ¡Ñ αẫíαá½ß∩ ó αạ¿µÑ
¼Ñªñπ ¡¿¼¿: α«ñ¿Γѽ∞ - φΓ« Γ« «¬¡«, ¬«Γ«α«Ñ Σ«α¼á½∞¡« ó½áñÑÑΓ «¬¡«¼,
Γ« ÑßΓ∞ «ΓóÑτáÑΓ ºá Ñú« »«½«ªÑ¡¿Ñ ¡á φ¬αá¡Ñ, »«ß¬«½∞¬π ¬««αñ¿¡áΓδ ß«ºñáóáѼ«ú«
«¬¡á «Γßτ¿ΓδóáεΓß∩ «Γ α«ñ¿Γѽ∩, ºá ó¿ñ¿¼«ßΓ∞ ¿ π¡¿τΓ«ªÑ¡¿Ñ. é½áñѽѵ - φΓ« Γ«
«¬¡«, ¬«Γ«α«Ñ íπñÑΓ »«½πτáΓ∞ ß««íΘÑ¡¿∩, Γ«τ¡ÑÑ πóÑñ«¼½Ñ¡¿∩ «Γ ñá¡¡«ú« «¬¡á.
ìá»α¿¼Ñα, ¬¡«»¬á, 𠬫ëα«⌐ α«ñ¿ΓѽѼ π¬áºá¡ ñÑß¬Γ«», á ó½áñѽ∞µÑ¼ «¬¡« éáΦÑ⌐
»α«úαá¼¼δ, íπñÑΓ αáß»«½áúáΓ∞ß∩ ¡á ñÑß¬Γ«»Ñ, ¡« ß««íΘÑ¡¿∩ « ÑÑ ¡áªáΓ¿¿ íπñÑΓ
»«½πτáΓ∞ »α«µÑñπαá «íαáí«Γ¬¿ ß««íΘÑ¡¿⌐ «¬¡á ó éáΦÑ⌐ »α«úαá¼¼Ñ).
ä½∩ ú½áó¡«ú« «¬¡á «íδτ¡« π¬áºδóáεΓ α«ñ¿Γ¿½Ñ¼ HWND_DESKTOP, á ó½áñѽ∞µÑ¼ 0.
äÑΓ὿ ß«ºñá¡¿∩ ∩τÑѬ ¼«ª¡« »«ß¼«ΓαÑΓ∞ ó cell.c, »α«µÑñπαá CreateCell.
ìѼ¡«ª¬« « ß«ºñá¡¿¿ Γπ½íáα«ó.
ä½∩ ß«ºñá¡¿∩ Γπ½íáαá, ¡Ñ«íσ«ñ¿¼« ºá»«½¡¿Γ∞ ßΓαπ¬Γπαπ TbDef. Ä¡á ßπΘÑßΓóÑ¡¡«
»α«ΘÑ ¿ ß«ñÑαª¿Γ óßÑú« Γα¿ »«½∩:
typedef struct
{
LONG lType; // Toolbar flags
ULONG ulID; // Toolbar window ID
ULONG *tbItems;
} TbDef;
lType : Σ½áú¿.
ulID : ¿ñÑ¡Γ¿Σ¿¬áΓ«α Γπ½íáαá.
tbItems: π¬áºáΓѽ∞ ¡á «»¿ßá¡¿Ñ ¬¡«»«¬.
TB_BUBBLE - Æπ½íáα ¿¼ÑÑΓ »πºδα∞¬«óπε »«ñ߬Ậπ
TB_VERTICAL - Éáß»«½«ªÑ¡ óÑαΓ¿¬á½∞¡«
TB_FLOATING - ìÑ »α¿ß«Ññ¿¡Ñ¡ ¬ «¬¡π.
TB_ATTACHED_LT - Åα¿ß«Ññ¿¡Ñ¡ ß½Ñóá
TB_ATTACHED_TP - -//-//-//-- ßóÑασπ
TB_ATTACHED_RT - -//-//-//-- ß»αáóá
TB_ATTACHED_BT - -//-//-//-- ß¡¿ºπ
Ä»¿ßá¡¿Ñ ¬¡«»«¬ - φΓ« ¼áßß¿ó ULONG-«ó, ¬áªñδ⌐ ¿º ¬«Γ«αδσ ºáñáÑΓ ID ¬¡«»¬¿, ¿
ºáóÑαΦáÑΓß∩ 0. æ»Ñµ¿á½∞¡δ⌐ ID TB_SEPARATOR ºáñáÑΓ αáºñѽ¿Γѽ∞ ¼Ñªñπ ¬¡«»¬á¼¿
¡á »á¡Ñ½¿. ä½∩ ¬áªñ«⌐ ¬¡«»¬¿ ó Σá⌐½Ñ αÑßπαß«ó ñ«½ªÑ¡ íδΓ∞ »α¿»áßÑ¡ í¿Γ¼á»
ß Γᬿ¼ ªÑ ID (ß¼«Γα¿ΓÑ »α¿¼Ñαδ »α«úαá¼¼). ä½∩ TB_SEPARATOR αÑßπαß ¡Ñ ¡πªÑ¡.
àß½¿ ñ½∩ Γπ½íáαá π¬áºá¡ Σ½áú TB_BUBBLE, Γ« «í∩ºáΓѽ∞¡« ¡á½¿τ¿Ñ ó Σá⌐½Ñ
αÑßπαß«ó αÑßπαßá Γ¿»á STRINGTABLE, ¿ ß««ΓóÑΓßΓóπεΘ¿¼¿ ID.
Æπ½íáα ß«ºñáÑΓß∩ ß »«¼«Θ∞ε ó맮óá CreateToolbar ¿ ßΓá¡«ó¿Γß∩ τáßΓ∞ε «¬¡á.
Åáαá σ¿¡Γ«ó:
¡Ñ»α¿ß«Ññ¿¡Ñ¡¡δ⌐ Γπ½íáα ¼«ª¡« »ÑαѬ½ετáΓ∞ óÑαΓ¿¬á½∞¡δ⌐ / ú«α¿º«¡Γá½∞¡δ⌐
»πΓѼ ñó«⌐¡«ú« ¬½¿¬á ½Ñó«⌐ ¬¡«»¬«⌐ ¼δΦ¬¿ ¡á "απτ¬Ñ".
»πºδα∞¬«óπε »«ñß¬áº¬π ¼«ª¡« ó¬½ετáΓ∞/ó䬽ετáΓ∞ (Ñß½¿ «¡á íδ½á »αÑñπß¼«ΓαÑ¡á)
»πΓѼ ñó«⌐¡«ú« ¬½¿¬á »αáó«⌐ ¬¡«»¬«⌐ ¼δΦ¬¿ ¡á "απτ¬Ñ".
ìÑ߬«½∞¬« ß½«ó ó ºáóÑαΦÑ¡¿Ñ.
ÄτÑó¿ñ¡«, τΓ« ∩ ¡Ñ ¡Ñßπ ¡¿¬á¬«⌐ «ΓóÑΓßΓóÑ¡¡«ßΓ¿ ºá ß¿Ñ τπñ« óαáªñÑí¡«⌐
ΓÑσ¡«½«ú¿¿, ¡Ñß¼«Γα∩ ¡á ¼«Ñ áóΓ«αßΓó« :) ìπ ó«íΘѼ, »«¡∩Γ¡«.
é óÑαß¿¿ 0.6d »«Σ¿¬ßÑ¡ íáú ß »«ΓÑαÑÑ⌐ Γπ½íáα«ó, ñ«ó«½∞¡« ß¿½∞¡« ¿º¼Ñ¡Ñ¡δ
¡Ñ¬«Γ«αδÑ τáßΓ¿ «ΓóÑτáεΘ¿Ñ ºá αáí«Γπ ß Γπ½íáαἿ ¿ ó佫ó½Ñ¡« ¡Ñ¬«Γ«α«Ñ
¬«½¿τÑßΓó« í«½ÑÑ ¼Ñ½¬¿σ íáú«ó.
äá, »«½∞º«óáΓ∞ß∩ Cell Toolkit ¼«ª¡« ß«óÑαΦÑ¡¡« ßó«í«ñ¡«, »α¿ πß½«ó¿¿,
ß«σαá¡Ñ¡¿∩ ¼«Ñú« (æ) ¿ »α¿ πß½«ó¿¿, τΓ« éδ ¡Ñ ºáíπñÑΓÑ »«¼∩¡πΓ∞ ¼Ñ¡∩ ó
credits éáΦÑ⌐ »α«úαá¼¼δ.
éßÑ ºá¼Ñτá¡¿∩, »«ªÑ½á¡¿∩, íáúαÑ»«αΓδ, Σ¿¬ßδ, »¿ó«, ¬«¬π, ñÑ¡∞ú¿ ¿ »α«ßΓ«
«Γ¬αδΓ¬¿ ¼«ª¡« ¡á»αáó½∩Γ∞ ¡á:
e-mail: evsi@naverex.kiev.ua
Sergey I. Yevtushenko.