[AccessD] 32/64 bit app; Getting closer
Bill Benson
bensonforums at gmail.com
Tue Feb 12 17:10:08 CST 2019
Might get some more ideas to watch out for here:
https://docs.microsoft.com/en-us/previous-versions/office/developer/office-2010/ff965871(v=office.14)#DataProgrammingWithAccess2010_using32vs64ace
On Tue, Feb 12, 2019 at 2:26 PM Rocky Smolin <rockysmolin at bchacc.com> wrote:
>
> Dear List:
>
> Got the open file dialog box working in both 32 and 64 bit environments.
> However, the app compiles in 32 bit, and can create an accde, which is
> necessary as the app is being distributed to customers. However, the app
> will not compile in 64 bit Access. I’m not sure how the app is running in
> 64 bit at all – my experience is that if there’s a compile error the app
> breaks on startup.
>
> The code for this function – EnumFontNames is posted below.
>
> The error is: Type Mismatch and it occurs in the line .lngType =
> lngType.
>
> If I comment that line out the next compile error is: Type Mismatch Array
> or
> User Defined Type Expected. And the line where the compile error occurs is
> .lngSizeCount = adhRemoveDups(malngSizes) where malngSizes is highlighted.
>
> If I comment out that line, the next line to produce a compile error says:
> Can’t assign to array, and the line where the compile error occurs is
> .alngSizes = malngSizes where .alngSizes is highlighted.
>
> I stopped commenting out lines at that point.
>
> I am not the primary programmer for this app any more but I’m trying to
> help
> them find a solution as the primary programmer is on a crash project to
> convert this whole app to a different platform.
>
> So. Does anyone see the problem, here? I’m trying not to go to
> conditional
> compile if possible, but find code that will work in both environments.
>
> MTIA
>
> Rocky Smolin
> Beach Access Software
> 760-683-5777
> www.bchacc.com
> www.e-z-mrp.com
> Skype: rocky.smolin
>
> Friend Function EnumFontNames(lf As LOGFONT, tm As TEXTMETRIC, _
> ByVal lngType As LongPtr, lngParam As LongPtr) As LongPtr
>
> ' From Access 2000 Developer's Handbook, Volume I
> ' by Getz, Litwin, and Gilbert. (Sybex)
> ' Copyright 1999. All rights reserved.
> '
> ' This function is declared as "friend" so that
> ' if you move it to an ActiveX DLL, this function
> ' won't be available outside the project.
> On Error GoTo HandleErrors
>
> Const RASTER_FONTTYPE = &H1
>
> If lngParam = 0 Then
> ' If passed a 1, we're only counting
> ' sizes, not doing anything with them.
> mintFontCount = mintFontCount + 1
> Else
> ' lngParam contains LOGPIXELSY value.
> With mafiFonts(mintItems)
> .lngType = lngType
> .strFaceName = adhTrimNull(StrConv(lf.lfFaceName, vbUnicode))
> .fIsRasterFont = _
> ((.lngType And RASTER_FONTTYPE) = RASTER_FONTTYPE)
> If .fIsRasterFont Then
> lf.lfCharSet = DEFAULT_CHARSET
> mlngSizeCount = 0
> ' Get the number of fonts (passing
> ' 0 for the final parameter tells the
> ' callback that you only want to count
> ' sizes, not enumerate them.
> Call EnumFontFamilies(mhDC, .strFaceName, _
> AddressOf EnumFontSizesProc, 0)
> ' Now mlngSizeCount should contain
> ' the number of items.
> Dim mlngSizeCountTemp As Integer
> mlngSizeCountTemp = mlngSizeCount
> ReDim malngSizes(0 To mlngSizeCount)
> mintFont = 0
> ' Fill in the array of font sizes. The final
> ' parameter contains the twips/pixel ratio,
> ' and by virtue of being non-zero indicates
> ' to the callback procedure that you want
> ' to enumerate the sizes.
> Call EnumFontFamilies(mhDC, .strFaceName, _
> AddressOf EnumFontSizesProc, lngParam)
> ' Sort the array of font sizes.
> Call adhQuickSort(malngSizes)
> ' Remove duplicate font sizes (and there
> ' will be duplicates) and store the number
> ' of different sizes in lngSizeCount.
> .lngSizeCount = adhRemoveDups(malngSizes)
>
> ' Return the array of sizes itself.
> .alngSizes = malngSizes
> Else
> ' For TrueType fonts, return -1
> ' for the number of sizes.
> .lngSizeCount = -1
> End If
> End With
> End If
> mintItems = mintItems + 1
>
> ExitHere:
> ' Return some non-zero value.
> EnumFontNames = True
> Exit Function
>
> HandleErrors:
> Select Case Err.Number
> Case Else
> ' Stop enumerating. Something's wrong!
> mintItems = False
> Resume ExitHere
> End Select
> End Function
>
>
>
>
> --
> AccessD mailing list
> AccessD at databaseadvisors.com
> http://databaseadvisors.com/mailman/listinfo/accessd
> Website: http://www.databaseadvisors.com
>
More information about the AccessD
mailing list