Soll es zeigen Sie das standard-Farb-dialog (ChooseColor-API in comdlg32.dll).
Für die Bequemlichkeit, hier der code:
Private Type ChooseColorStruct
lStructSize AsLong
hwndOwner AsLong
hInstance AsLong
rgbResult AsLong
lpCustColors AsLong
flags AsLong
lCustData AsLong
lpfnHook AsLong
lpTemplateName AsStringEnd Type
PrivateDeclareFunction ChooseColor Lib"comdlg32.dll"Alias"ChooseColorA" _
(lpChoosecolor As ChooseColorStruct)AsLongPrivateDeclareFunction OleTranslateColor Lib"oleaut32.dll"(ByVal lOleColor _
AsLong,ByVal lHPalette AsLong, lColorRef AsLong)AsLongPrivateConst CC_RGBINIT =&H1&PrivateConst CC_FULLOPEN =&H2&PrivateConst CC_PREVENTFULLOPEN =&H4&PrivateConst CC_SHOWHELP =&H8&PrivateConst CC_ENABLEHOOK =&H10&PrivateConst CC_ENABLETEMPLATE =&H20&PrivateConst CC_ENABLETEMPLATEHANDLE =&H40&PrivateConst CC_SOLIDCOLOR =&H80&PrivateConst CC_ANYCOLOR =&H100&PrivateConst CLR_INVALID =&HFFFF' Show the common dialog for choosing a color.' Return the chosen color, or -1 if the dialog is canceled'' hParent is the handle of the parent form' bFullOpen specifies whether the dialog will be open with the Full style ' (allows to choose many more colors)' InitColor is the color initially selected when the dialog is open' Example:' Dim oleNewColor As OLE_COLOR' oleNewColor = ShowColorsDialog(Me.hwnd, True, vbRed)' If oleNewColor <> -1 Then Me.BackColor = oleNewColorFunction ShowColorDialog(OptionalByVal hParent AsLong, _
OptionalByVal bFullOpen AsBoolean,OptionalByVal InitColor As OLE_COLOR) _
AsLongDim CC As ChooseColorStruct
Dim aColorRef(15)AsLongDim lInitColor AsLong' translate the initial OLE color to a long valueIf InitColor <>0ThenIf OleTranslateColor(InitColor,0, lInitColor)Then
lInitColor = CLR_INVALID
EndIfEndIf'fill the ChooseColorStruct structWith CC
.lStructSize = Len(CC).hwndOwner = hParent
.lpCustColors = VarPtr(aColorRef(0)).rgbResult = lInitColor
.flags = CC_SOLIDCOLOR Or CC_ANYCOLOR Or CC_RGBINIT Or IIf(bFullOpen, _
CC_FULLOPEN,0)EndWith' Show the dialogIf ChooseColor(CC)Then'if not canceled, return the color
ShowColorDialog = CC.rgbResult
Else'else return -1
ShowColorDialog =-1EndIfEndFunction
Ich mag deine Lösung auch - warum nicht in der Tat? Der einzige Unterschied ist, dass bei der Verwendung der Steuern, müssen Sie einen Verweis darauf in das Projekt, und Sie benötigen zur Verteilung der OCX. Beides ist eine große Sache, aber das ist der Unterschied.
Einige Menschen fürchten und verabscheuen OCXs weil Sie nicht verstehen, - Bereitstellung. Die gleichen Leute p&Stöhnen, wenn man Ihnen nicht-trivial-source-code konnten Sie nur "black box", weil "Sie mich nicht unnerstan yer-codes." Sie können nicht gewinnen. Ich halten in der Hoffnung das Skript kiddies wird sich zu bewegen .Net, aber ich warte immer noch.
IMHO VB6 code mit API-Aufrufe behandelt werden muss mit großer Vorsicht, weil es so leicht ist, Fehler zu machen. Ich habe gesehen, buggy VB6-API-code im MSDN Magazine-Artikel und in der Microsoft-KnowledgeBase-Artikel. Persönlich, bevor ich mit jedem API-code, ich schaue mir die API-Dokumentation selbst, was zeitaufwändig. Eine Sache, die zu Gunsten von rskar code ist, es kam von VB2TheMax, die war zuverlässig.
PrivateSub Command1_Click()' Set Cancel to True
CommonDialog1.CancelError =TrueOnErrorGoTo ErrHandler
'Set the Flags property
CommonDialog1.Flags = cdlCCRGBInit
' Display the Color Dialog box
CommonDialog1.ShowColor
' Set the form's background color to selected color
Form1.BackColor = CommonDialog1.Color
ExitSub
ErrHandler:' User pressed the Cancel buttonEndSub
Haben Sie einen Blick auf: http://www.devx.com/vb2themax/Tip/19257
Soll es zeigen Sie das standard-Farb-dialog (ChooseColor-API in comdlg32.dll).
Für die Bequemlichkeit, hier der code:
Es ist ein color-picker integriert in VB6. Das Allgemeine Dialogfeld-Steuerelement kann verwendet werden, wie einen Farbwähler.
Hier ist das code-Beispiel aus der VB6-Handbuch