none
lf.lfFaceName箇所でエラー RRS feed

  • 質問

  • VB6からVB2008へ移植をしております
    lf.lfFaceName(0)の箇所でエラーが出ます。
         System.NullReferenceException はハンドルされませんでした。
          Message="オブジェクト参照がオブジェクト インスタンスに設定されていません。"
    対処法を教えて頂けないでしょうか

    素人ですがお願いします。

            Dim hFont, Ret As Integer
            Dim agmf(256) As GLYPHMETRICSFLOAT
            Dim FontType As String
            Dim lf As New VBOpenGL.LOGFONT
            Dim bytBuf() As Byte
    
            lf.lfHeight = -10
            lf.lfWidth = 0
            lf.lfEscapement = 0
            lf.lfOrientation = 0
            lf.lfWeight = VBOpenGL.GDI.FW_NORMAL
            lf.lfItalic = False
            lf.lfUnderline = False
            lf.lfStrikeOut = False
            lf.lfCharSet = VBOpenGL.GDI.SHIFTJIS_CHARSET
            lf.lfOutPrecision = VBOpenGL.GDI.OUT_DEFAULT_PRECIS
            lf.lfClipPrecision = VBOpenGL.GDI.CLIP_DEFAULT_PRECIS
            lf.lfQuality = VBOpenGL.GDI.DEFAULT_QUALITY
            lf.lfPitchAndFamily = VBOpenGL.GDI.DEFAULT_PITCH
            FontType = "MS Pゴシック"
    
            bytBuf = System.Text.UnicodeEncoding.Unicode.GetBytes(FontType)
            Call MoveMemory(lf.lfFaceName(0), bytBuf(0), UBound(bytBuf) + 1)
                           '???????????????
            hFont = CreateFontIndirect(lf)
            SelectObject(ActHDC, hFont)
    
    2009年12月4日 10:19

すべての返信

  • lf.lfFaceName が初期化されていないんだろうなぁ、と想像は付きますが、開示されている情報が少なすぎてそれにコメントはできません。
    ついでに言うとアンマネージコードの呼び出しは色々難しいので素人や初心者と名乗る方にはお勧めできません。

    フォントなら Font クラス を使ってはいかがでしょうか?
    2009年12月4日 10:36