普通的方法是ucase、或者是分析keypress或者是Change()事件,
但是较为好的方法是:Option ExplicitPrivate Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Const GWL_STYLE = (-16)
Private Const ES_UPPERCASE = &H8&
Private Sub Form_Load()
Dim style As Long    style = GetWindowLong(Text1.hwnd, GWL_STYLE)
    style = style Or ES_UPPERCASE
    SetWindowLong Text1.hwnd, GWL_STYLE, style
End Sub

解决方案 »

  1.   

    给你段c++怎么样
    HACCEL hAccel;
    ACCEL  acAccel[4]; acAccel[0].fVirt = FCONTROL | FVIRTKEY;
    acAccel[0].key   = ( DWORD )VkKeyScan( ( TCHAR )'a' );
    acAccel[0].cmd   = IDM_TEST1;

    acAccel[1].fVirt = FVIRTKEY;
    acAccel[1].key   = ( DWORD )VkKeyScan( ( TCHAR )'b' );
    acAccel[1].cmd   = IDM_TEST2;

    acAccel[2].fVirt = FSHIFT | FVIRTKEY;
    acAccel[2].key   = ( DWORD )VkKeyScan( ( TCHAR )'C' );
    acAccel[2].cmd   = IDM_TEST3;

    acAccel[3].fVirt = FSHIFT | FVIRTKEY;
    acAccel[3].key   = ( DWORD )VkKeyScan( ( TCHAR )'c' );
    acAccel[3].cmd   = IDM_TEST3;

    hAccel = CreateAcceleratorTable( acAccel, 4 );

    while( ( bRet = GetMessage( &msg, NULL, 0, 0 ) ) != 0 ){
    if( bRet == -1 ){
    break;
    }else{
    if( !TranslateAccelerator( hWnd, hAccel, &msg ) ){
    TranslateMessage( &msg );
    DispatchMessage( &msg );
    }
    }
    }

    DestroyAcceleratorTable( hAccel );

    return msg.wParam;              ___
                 (  ">
                  )(
                 // )  [email protected]
              --//""------------
              -/------   
      

  2.   

    对不起我使用离线浏览器
    一不小心贴错地方了我认为调用api是最直接,最快捷的方法,我支持你的方法,不过就是难度增加了              ___
                 (  ">
                  )(
                 // )  [email protected]
              --//""------------
              -/------