| | zài windows zhōng, jù bǐng shì yī gè xì tǒng nèi bù shù jù jié gòu de yǐn yòng。 lì rú, dāng nǐ cāo zuò yī gè chuāng kǒu, huò shuō shì yī gè delphi chuāng tǐ shí, xì tǒng huì gěi nǐ yī gè gāi chuāng kǒu de jù bǐng, xì tǒng huì tōng zhī nǐ: nǐ zhèng zài cāo zuò 142 hào chuāng kǒu, jiù cǐ, nǐ de yìng yòng chéng xù jiù néng yào qiú xì tǒng duì 142 hào chuāng kǒu jìn xíng cāo zuò héng héng yí dòng chuāng kǒu、 gǎi biàn chuāng kǒu dà xiǎo、 bǎ chuāng kǒu jí xiǎo huà wéi tú biāo, děng děng。 shí jì shàng xǔ duō windowsapi hán shù bǎ jù bǐng zuò wéi tā de dì yī gè cān shù, rú gdi( tú xíng shè bèi jiē kǒu) jù bǐng、 cài dān jù bǐng、 shí lì jù bǐng、 wèi tú jù bǐng děng děng, bù jǐn jǐn jú xiàn yú chuāng kǒu hán shù。
huàn jù huà shuō, jù bǐng shì yī zhǒng nèi bù dài mǎ, tōng guò tā néng yǐn yòng shòu xì tǒng kòng zhì de tè shū yuán sù, rú chuāng kǒu、 wèi tú、 tú biāo、 nèi cún kuài、 guāng biāo、 zì tǐ、 cài dān děng děng。
àn lì: huò qǔ chuāng kǒu jù bǐng
àn lì shuō míng
běn lì shí xiàn chuāng kǒu jù bǐng de huò qǔ。
shí xiàn guò chéng
privatedeclarefunctiongetwindowlonglib"user32"alias"getwindowlonga"(byvalhwndaslong,byvalnindexaslong)aslong
privatedeclarefunctionsetwindowlonglib"user32"alias"setwindowlonga"(byvalhwndaslong,byvalnindexaslong,byvaldwnewlongaslong)aslong
privatedeclarefunctionsetlayeredwindowattributeslib"user32"(byvalhwndaslong,byvalcrkeyaslong,byvalbalphaasbyte,byvaldwflagsaslong)aslong
privateconstws_ex_layered=&h80000
privateconstgwl_exstyle=(-20)
privateconstlwa_alpha=&h2
privatesubform_activate()
onerrorresumenext
fori=0to150step2.5
setlayeredwindowattributesme.hwnd,0,i,lwa_alpha
doevents
nexti
endsub
privatesubform_load()
dimrtnaslong
rtn=getwindowlong(me.hwnd,gwl_exstyle)
rtn=rtnorws_ex_layered
setwindowlongme.hwnd,gwl_exstyle,rtn
setlayeredwindowattributesme.hwnd,0,0,lwa_alpha
endsub | | zài Windows zhōng, jù bǐng shì yī gè xì tǒng nèi bù shù jù jié gòu de yǐn yòng。 lì rú, dāng nǐ cāo zuò yī gè chuāng kǒu, huò shuō shì yī gè Delphi chuāng tǐ shí, xì tǒng huì gěi nǐ yī gè gāi chuāng kǒu de jù bǐng, xì tǒng huì tōng zhī nǐ: nǐ zhèng zài cāo zuò 142 hào chuāng kǒu, jiù cǐ, nǐ de yìng yòng chéng xù jiù néng yào qiú xì tǒng duì 142 hào chuāng kǒu jìn xíng cāo zuò héng héng yí dòng chuāng kǒu、 gǎi biàn chuāng kǒu dà xiǎo、 bǎ chuāng kǒu jí xiǎo huà wéi tú biāo, děng děng。 shí jì shàng xǔ duō WindowsAPI hán shù bǎ jù bǐng zuò wéi tā de dì yī gè cān shù, rú GDI( tú xíng shè bèi jiē kǒu) jù bǐng、 cài dān jù bǐng、 shí lì jù bǐng、 wèi tú jù bǐng děng děng, bù jǐn jǐn jú xiàn yú chuāng kǒu hán shù。
huàn jù huà shuō, jù bǐng shì yī zhǒng nèi bù dài mǎ, tōng guò tā néng yǐn yòng shòu xì tǒng kòng zhì de tè shū yuán sù, rú chuāng kǒu、 wèi tú、 tú biāo、 nèi cún kuài、 guāng biāo、 zì tǐ、 cài dān děng děng。
àn lì: huò qǔ chuāng kǒu jù bǐng
àn lì shuō míng
běn lì shí xiàn chuāng kǒu jù bǐng de huò qǔ。
shí xiàn guò chéng
PrivateDeclareFunctionGetWindowLongLib"user32"Alias"GetWindowLongA"(ByValhwndAsLong,ByValnIndexAsLong)AsLong
PrivateDeclareFunctionSetWindowLongLib"user32"Alias"SetWindowLongA"(ByValhwndAsLong,ByValnIndexAsLong,ByValdwNewLongAsLong)AsLong
PrivateDeclareFunctionSetLayeredWindowAttributesLib"user32"(ByValhwndAsLong,ByValcrKeyAsLong,ByValbAlphaAsByte,ByValdwFlagsAsLong)AsLong
PrivateConstWS_EX_LAYERED=&H80000
PrivateConstGWL_EXSTYLE=(-20)
PrivateConstLWA_ALPHA=&H2
PrivateSubForm_Activate()
OnErrorResumeNext
Fori=0To150Step2.5
SetLayeredWindowAttributesMe.hwnd,0,i,LWA_ALPHA
DoEvents
Nexti
EndSub
PrivateSubForm_load()
DimrtnAsLong
rtn=GetWindowLong(Me.hwnd,GWL_EXSTYLE)
rtn=rtnOrWS_EX_LAYERED
SetWindowLongMe.hwnd,GWL_EXSTYLE,rtn
SetLayeredWindowAttributesMe.hwnd,0,0,LWA_ALPHA
EndSub
dān cóng gài niàn shàng jiǎng, jù bǐng zhǐ yī gè duì xiàng de biāozhì, ér zhǐ zhēn shì yī gè duì xiàng de shǒu dì zhǐ。 cóng shí jì chǔlǐ de jiǎo dù jiǎng, jí kě yǐ bǎ jù bǐng dìng yì wéi zhǐ zhēn, yòu kě yǐ bǎ tā dìng yì wéi tóng lèi duì xiàng shù zǔ de suǒ yǐn, zhè liǎng zhǒng chǔlǐ fāng fǎ dōuyòu yōu quē diǎn, zhì yú xuǎn yòng nǎ zhǒng fāng shì, wán quán yīnggāi kàn shí jì xū yào, zhè kě yǐ shuō shì yī zhǒng chéng xù shè jì shàng de jì qiǎo。 nà zhǒng dān chún rèn wéi jù bǐng shì zhǐ zhēn huò suǒ yǐn de xiǎng fǎ dōushì jī xiè de、 bù què qiē de。
qí shí, zài Windows zhōng lèi shìde chǔlǐ shì hěn duō de、 hěn líng huó de。 zài jù gè xiāng sì de lì zǐ:
wǒ men zhī dào, zài Windows zhōng yòu gè hán shù jiào zuò CallWindowProc。 gù míng sī yì, tā de zuò yòng jiù shì xiàng zhǐ dìng de chuāng kǒu guò chéng chuán dì yī gè xiāo xī。 nǐ yě xǔ huì xiǎng, jì rán wǒ yǐ jīng yòu liǎo chuāng kǒu guò chéng de zhǐ zhēn, wèishénme wǒ bù kě yǐ zhí jiē tōng guò zhè gè zhǐ zhēn diào yòng gāi hán shù( zhè shì C yǔ yán de nèi jiàn gōng néng)? shì shí shàng, zài Win16 zhōng què shí kě yǐ zhè me zuò, yīn wéi GetWindowLong fǎn huí díquè shí shì gāi hán shù de zhǐ zhēn。 dàn zài Win32 xià, GetWindowLong fǎn huí de bìng bù shì gāi hán shù de zhǐ zhēn, ér shì yī gè bāo hán hán shù zhǐ zhēn de shù jù jié gòu de zhǐ zhēn( MSDN shàng shuō fǎn huí de shì yī gè chuāng kǒu hán shù dì zhǐ huò tā de jù bǐng, jiù shì zhǐ de zhè zhǒng qíng kuàng)。 gāi shù jù jié gòu shì kě biàn de, dàn zhǐ yào nǐ shǐ yòng CallWindowProc lái diào yòng de huà shì bù huì chū cuò de。 zhè lǐ wǒ men yòu kàn dào shǐ yòng jù bǐng chǔlǐ dài lái de hǎo chù。( bǔ chōng shuō míng yī diǎn: wēi ruǎn zài zhè lǐ zhī suǒ yǐ zhè me chǔlǐ, shì wéi liǎo jiě jué 16 wèi /32 wèi yǐ jí ANSI/UNICODE de zhuǎn huà wèn tí)
1. jù bǐng shì shénme?
zài windows zhōng, jù bǐng shì hé duì xiàng yī yī duì yìng de 32 wèi wú fú hào zhěng shù zhí。 duì xiàng kě yǐ yìng shè dào wéi
yī de jù bǐng, jù bǐng yě kě yǐ yìng shè dào wéi yī de duì xiàng。
2. wèishénme wǒ men xū yào jù bǐng?
gèng zhǔn què dì shuō, shì windows xū yào jù bǐng。 windows xū yào xiàng chéng xù yuán tí gōng bì yào dì biān chéng jiē kǒu
, zài zhè xiē jiē kǒu zhōng, yǔn xǔ chéng xù yuán fǎng wèn、 chuàng jiàn hé xiāo huǐ duì xiàng。 dàn shì, chū yú fēng zhuāng dì kǎo lǜ, wi
ndows bìng bù xiǎng xiàng chéng xù yuán fǎn huí zhǐ zhēn。 zhǐ zhēn bāo hán liǎo tài duō de xìn xī。 shǒu xiān zhǐ zhēn gěi chū liǎo duì xiàng cún chǔ
díquè qiē wèi zhì; qí cì, yào cāo zuò yī gè zhǐ zhēn, chéng xù yuán bì xū zhī dào zhǐ zhēn suǒ zhǐ duì xiàng de nèi bù jié gòu tè
zhēng, yě jí, windows bì xū xiàng chéng xù yuán bào lù xiāng yìng de shù jù jié gòu, ér zhè xiē shù jù jié gòu yě xǔ shì cāo zuò
xì tǒng xiǎng xiàng chéng xù yuán yǐn cáng de。
rú guǒ shuō COM jì shù xiàng yòng hù yǐn cáng liǎo shù jù, zhǐ bào lù liǎo jiē kǒu bìng zhǐ yǔn xǔ 'àn jiē kǒu dìng yì de fāng fǎ cāo
zuò shù jù de huà, jù bǐng zhè zhǒng fāng shì zé yǔn xǔ nǐ 'àn zì jǐ de fāng shì zhí jiē cāo zuò shù jù, dàn windows yòu bù xiàng
nǐ zhí jiē bào lù shù jù。 zhí jiē cāo zuò shù jù shì chéng xù yuán xū yào de, bù bào lù shù jù shì windows suǒ xū yào de,
jù bǐng fēng zhuāng fāng shì shí xiàn liǎo gè qǔ suǒ xū。
3. jù bǐng rú hé yǔ duì xiàng yìng shè?
fēng zhuāng bèi hòu, bì xū yòu yī gè dì fāng kě yǐ shí xiàn jiě mǎ, yǐ shí xiàn jù bǐng hé duì xiàng de xiāng hù zhuǎn huàn。 zài
windows zhōng, cún zài liǎng zhǒng yìng shè fāng shì:
a. quán děng yìng shè。 yě jí, jù bǐng běn shēn jiù shì yī gè zhǐ zhēn。 yìng shè zài zhè lǐ zhǐ shì lèi xíng zhuǎn huàn 'ér yǐ。
zhè zhǒng qíng kuàng yòu, jìn chéng shí lì jù bǐng huò mó kuài jù bǐng, yǐ jí zī yuán jù bǐng děng děng。
b. jī yú biǎo gé de yìng shè。 zhè shì duì xiàng zhǐ zhēn yǔ jù bǐng zhī jiān zuì pǔ tōng de yìng shè jī zhì。 cāo zuò xì tǒng chuàng
jiàn biǎo gé, bìng bǎo cún suǒ yòu yào kǎo lǜ de duì xiàng。 xū yào chuàng jiàn xīn duì xiàng shí, yào xiān zài biǎo gé zhōng zhǎo dào kōng rù kǒu
, rán hòu bǎ biǎo shì duì xiàng de shù jù tiān rù qí zhōng。 dāng duì xiàng bèi shān chú shí, tā de shù jù chéng yuán hé qí zài biǎo zhōng de
rù kǒu bèi shì fàng。
4. jù bǐng de dìng yì hé shí xiàn
wǒ men yǐ GDI duì xiàng wéi lì jìn xíng tǎo lùn。 chuàng jiàn liǎo GDI duì xiàng, jiù huì dé dào gāi duì xiàng de jù bǐng。 jù bǐng
de duì xiàng kě néng shì HBRUSH、 HPEN、 HFONT huò HDC zhōng de yī zhǒng, zhè yǐ lài yú nǐ chuàng jiàn de GDI duì xiàng lèi
xíng。 dàn shì zuì pǔ tōng de GDI duì xiàng lèi xíng shì HGDIOBJ。 HGDIOBJ bèi dìng yì chéng kōng zhǐ zhēn。
HPEN de shí jì biān yì lèi xíng dìng yì suí biān yì shí jiān hóng STRICT de bù tóng 'ér bù tóng。 rú guǒ STRCIT yǐ jīng
bèi dìng yì liǎo, HPEN shì zhè yàng de:
structHPEN__{intunused};
typedefstructHPEN__*HPEN;
rú guǒ STRICT méi yòu dìng yì, HPEN shì zhè yàng dìng yì de:
typedefvoid*HANDLE;
typedefHANDLEHPEN;
shàng miàn zhè duàn dài mǎ shì yī gè zhù zhòng xì jié de chéng xù yuán zuì jiē jìn jù bǐng de dì fāng, yīn cǐ wǒ men zhòng diǎn fēn xī
yī xià。 zhè lǐ yòu yī diǎn diǎn jì qiǎo。 rú guǒ dìng yì liǎo STRICT hóng, HPEN shì zhǐ xiàng yòu dān gè wèi shǐ yòng zì duàn de
jié gòu de zhǐ zhēn, fǒu zé HPEN shì kōng zhǐ zhēn。 C/C++ biān yì qì yǔn xǔ bǎ rèn hé lèi xíng de zhǐ zhēn zuò wéi kōng zhǐ shí chuán
dì, fǎn zhī zé bù kě yǐ。 liǎng gè bù tóng lèi xíng de fēi kōng zhǐ zhēn shì hù bù jiān róng de。 zài STRICT bǎn běn zhōng, biān
yì duì GDI duì xiàng jù bǐng de bù zhèng què hùn yòng jiāng gěi chū jǐng gào, duì yú fēi GDI jù bǐng, rú HWND、 HMENU de bù zhèng
què hùn yòng yě huì gěi chū jǐng gào, cóng 'ér shǐ chéng xù zài biān yì qì dé dào gèng STRICT de jiǎn chá。
jiē xià lái de fēn xī kě néng bù nà me lìng nǐ gǎn xīng qù, dàn tā gēngshēn kè dì jiē shì liǎo jù bǐng。 duì GDI jù bǐng lái
shuō, jìn guǎn windows tóu wén jiàn bǎ tā dìng yì chéng zhǐ zhēn, dàn rú guǒ nǐ zǎi xì jiǎn chá zhè xiē jù bǐng de zhí, tā gēn běn
jiù bù xiàng zhǐ zhēn, zhè yě shì wèishénme wǒ shuō tā zhǐ shì yī gè 32 wèi wú fú zhěng shù zhí de yuán yīn。 duì jù bǐng jiù shì zhǐ
zhēn de qíng kuàng, zhè jù huà yě réng rán shì yòng。 ràng wǒ men suí yì dì shēng chéng yī xiē jù bǐng, bǐ rú nǐ yòng GetStockOb
ject() yǐ dé dào yī xiē jù bǐng, nǐ huì fā xiàn, tā men de zhí zǒng zài qū jiān 0x01900011 dào 0xba040389。
qián zhě zhǐ xiàng yòng hù qū zhōng de wèi fēn pèi de wú xiào qū yù, hòu zhě zhǐ xiàng nèi hé dì zhǐ kōng jiān。 lìng wài nǐ kě néng fā xiàn
, liǎng gè jù bǐng zhī jiān de zhí kě néng zhǐ chā shù zhí 1, zhè yě shuō míng GDI jù bǐng bù shì zhǐ zhēn。
hé duō shù rén xiǎng xiàng de bù yī yàng, jù bǐng yě bù shì yī gè dān chún de suǒ yǐn zhí。 duì GDI duì xiàng jù bǐng lái shuō,
GDI jù bǐng yóu 8 wèi、 1 wèi duī duì xiàng biāo jì( biǎo míng duì xiàng shì fǒu chuàng jiàn zài duī zhōng)、 7 wèi duì xiàng lèi xíng xìn xī hé
gāo 4 wèi wéi 0 de 16 wèi suǒ yǐn zǔ chéng, rú tú:
33222222222211111111110000000000
10987654321098765432109876543210
|8 wèi yǐn yòng jì shù | duī | duì xiàng lèi xíng 7|16 wèi suǒ yǐn |
biāo
jì
zài zhè lǐ nǐ kě yǐ kàn dào, duì GDI lái shuō, tā zhǐ shǐ yòng liǎo 16 wèi zuò wéi suǒ yǐn。 zhè yì wèi zhe yī gè jìn chéng zuì duō zhǐ
kě yǐ chuàng jiàn xiǎo yú 64K gè jù bǐng, shí jì shàng shòu qí tā yī xiē xiàn zhì, zhěng gè Windows xì tǒng zhōng dà gài kě yǐ róng nà yuē
16384(0x4000) gè GDI duì xiàng。 | | zhì chuāng kǒu jù bǐng | qǔ chuāng kǒu jù bǐng | qǔ zhù chuāng kǒu jù bǐng | shè bèi chuāng kǒu jù bǐng | yuán jiǎo chuāng kǒu jù bǐng | qǔ shǔ biāo suǒ zài chuāng kǒu jù bǐng | qǔ SC chuāng kǒu jù bǐng | |
|
|
|