比如:
hfont=(HFONT)GetStockObject(ANSI_FIXED_FONT);
SendMessage(hitm,WM_SETFONT,(WPARAM)hfont,(LPARAM)TRUE);
你把它翻成vb就行了

解决方案 »

  1.   

    coowoo(coowoo)同志:你的代码不行啊!
      

  2.   

    yanz(飞燕) 同志:什么意思?
      

  3.   

    如果要简单的区分中英文:
      if AscW(ch)<255 then
        ch是英文
       else
        ch是中文
      end if
      

  4.   

    下面的函数可以将一含中英文混合的字符串(含回车/换行)中的英文即数字全部转换成全角字符,请你尝试调用一下:Private Function SameWidthChar(Str_tmp As String) As String
    Dim I As Integer
    Dim L As Long
      SameWidthChar = ""
      For I = 1 To Len(Str_tmp)
        L = AscW(Mid(Str_tmp, I, 1))
        If L > &H20 And L < &HFF Then L = L - 288
        SameWidthChar = SameWidthChar & ChrW(L)
      Next I
    End Function
      

  5.   

    全角字符的编码应该是Unicode编码,一般的英文和数字,使用的ASCII编码,正好与Unicode编码中的半角字符的编码相同,在Unicode编码中,半角'A'的Unicode编码=0x0041(ASCII编码中是0x41),全角'A'的Unicode编码=0xFF21;所以对一个字符进行AscW()取得的Unicode码,如果小于0xFF,那它一定是半角的,根据全角和半角字符的对应关系,将其转换成全角字符,即可达到与中文字符占相同间距的目的。
      如果不愿意转换成全角字符,判断出是半角英文后再加一个空格,一般也可以和中文占同样的间距,但不一定会比全角字符好看的哦!
      

  6.   

    补充:
      用AscW()取出的Unicode码有可能是负数,那是VB把它当有符号数来处理的,比如:全角'A'的Unicode编码=0xFF21,会得到一个负数;但这没有关系的,如果是负数,那就一定是全角了呗!