편집 컨트롤의 사용자 지정 Wordbreak 기능 제공 방법

기술 자료 번역 기술 자료 번역
기술 자료: 109551 - 이 문서가 적용되는 제품 보기.
모두 확대 | 모두 축소

이 페이지에서

요약

응용 프로그램에서 응용 프로그램 정의 단어 잘림 방지의 함수를 사용하여 기본 단어 잘림 방지를 함수를 바꾸려면 편집 컨트롤을 EM_SETWORDBREAKPROC 메시지를 보냅니다. 기본 단어 잘림 방지를 함수를 공백 문자 다중 행 편집 컨트롤의 (MLE) 회선이. 응용 프로그램에서 이 기능을 변경할 하는 경우 (즉, 일부 공백이 아닌 문자를 중단할 수), 다음 응용 프로그램이 자체 단어 잘림 방지를 (wordbreak) 함수를 제공해야 합니다.

추가 정보

단어 잘림 방지를 함수를 텍스트 표시를 보낼 들어 있는 텍스트 버퍼 검색하여 현재 표시 줄에 맞지 않는 첫 번째 단어를 찾습니다. 단어 잘림 방지를 함수 표시 줄의 시작 부분에 이 단어를 배치합니다.

단어 잘림 방지를 함수는 어떤 Windows 다중 행 편집 컨트롤에 대한 텍스트 줄은 일반적으로 두 단어를 구분하는 공간을 문자에서 중단 합니다 지점을 정의합니다. 이 경우 MLE 줄 모든 문자에서 끊어진 수 있도록 변경할 수 있습니다. EM_SETWORDBREAKPROC 메시지에 대한 자세한 내용은 플랫폼 SDK를 참조하십시오.

다음은 여러 줄 편집 컨트롤을 사용하여 줄 바꿈을 방법을 보여 주는 예제 코드입니다 있는 "~" 일반 공백 대신 (예) (물결표) 문자 ("") 문자.

샘플 코드 편집 컨트롤에 여러 줄 편집 컨트롤을 대화 상자의 자식 컨트롤이 있는지 가정합니다.

예제 코드

   //Prototype the application-defined wordbreakproc.
   int CALLBACK WordBreakProc(LPSTR, int, int, int) ;

   //Install wordbreakproc in the WM_INITDIALOG case.
     case WM_INITDIALOG:

/* 
   For 16 bit applications use the following line to setup your
   CALLBACK function.

       lpWrdBrkProc = MakeProcInstance(WordBreakProc, hInst);

It is not neccessary to use MakeProcInstance in 32-bit applications.
*/ 


       //Send the EM_SETWORDBREAKPROC message to the edit control
       //to install the new wordbreak procedure.
        SendDlgItemMessage(hDlg, ID_EDIT, EM_SETWORDBREAKPROC, 0,
                           (LPARAM)(EDITWORDBREAKPROC)lpWrdBrkProc) ;
        return (TRUE);

   int FAR PASCAL WordBreakProc(LPSTR lpszEditText, int ichCurrent,
                                int cchEditText, int wActionCode)
   {

      char FAR *lpCurrentChar;
      int  nIndex;
      int  nLastAction;

      switch (wActionCode) {

        case WB_ISDELIMITER:

        // Windows sends this code so that the wordbreak function can
        // check to see if the current character is the delimiter.
        // If so, return TRUE. This will cause a line break at the ~
        // character.

         if ( lpszEditText[ichCurrent] == '~' )
            return TRUE;
         else
            return FALSE;

         break;

        // Because we have replaced the default wordbreak procedure, our
        // wordbreak procedure must provide the other standard features in
        // edit controls.

       case WB_LEFT:

        // Windows sends this code when the user enters CTRL+LEFT ARROW.
        // The wordbreak function should scan the text buffer for the
        // beginning of the word from the current position and move the
        // caret to the beginning of the word.

            {
               BOOL bCharFound = FALSE;

               lpCurrentChar = lpszEditText + ichCurrent;
               nIndex = ichCurrent;

               while (nIndex > 0  &&
                     (*(lpCurrentChar-1) != '~' &&
                      *(lpCurrentChar-1) != 0x0A) ||
                     !bCharFound )

              {
                  lpCurrentChar = AnsiPrev(lpszEditText ,lpCurrentChar);
                  nIndex--;

                  if (*(lpCurrentChar) != '~' &&  *(lpCurrentChar) != 0x0A)

                     // We have found the last char in the word. Continue
                     // looking backwards till we find the first char of
                     // the word.
                    {
                      bCharFound = TRUE;

                      // We will consider a CR the start of a word.
                      if (*(lpCurrentChar) == 0x0D)
                          break;
                    }

               }
               return nIndex;

            }
         break;


        case WB_RIGHT:

        //Windows sends this code when the user enters CTRL+RIGHT ARROW.
        //The wordbreak function should scan the text buffer for the
        //beginning of the word from the current position and move the
        //caret to the end of the word.

         for (lpCurrentChar = lpszEditText+ichCurrent, nIndex = ichCurrent;
              nIndex < cchEditText;
              nIndex++, lpCurrentChar=AnsiNext(lpCurrentChar))

          if ( *lpCurrentChar == '~' ) {
         lpCurrentChar=AnsiNext(lpCurrentChar);
            nIndex++;

            while ( *lpCurrentChar == '~' ) {
              lpCurrentChar=AnsiNext(lpCurrentChar);
              nIndex++;
             }

            return nIndex;
          }

          return cchEditText;
          break;


    }
  }

				
위의 단어 잘림 방지를 (wordbreak) 함수는 응용 프로그램의 .DEF 파일을 내보낼 합니다. 함수는 수정하고 응용 프로그램의 요구에 따라 사용자.

속성

기술 자료: 109551 - 마지막 검토: 2005년 7월 11일 월요일 - 수정: 2.2
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft Platform Software Development Kit-January 2000 Edition
키워드:?
kbmt kbctrl kbeditctrl kbhowto KB109551 KbMtko
기계 번역된 문서
중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.

피드백 보내기

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com