'C++ Builder'에 해당되는 글 11건

  1. 2003.12.14 파일의 버젼 정보 얻기
  2. 2003.11.16 TStingList이용해서 텍스트 파일 파싱하기
  3. 2003.09.15 Child control 관리
About 다이얼로그 만드는 방법
1. GetFileVersionInfoSize 이용해서 버젼 정보 크기 얻는다.

2. 버젼 정보를 저장할 메모리를 할당한 후에 버젼 정보를 얻는다.
   MemHandle = GlobalAlloc(GMEM_MOVEABLE, VerSize);
   MemPtr = GlobalLock(MemHandle);
   GetFileVersionInfo(Path.c_str(), VerInfo, VerSize, MemPtr);

3. VerQueryValue(MemPtr, "\VarFileInfo\Translation", &BufferPtr,&BufferLength); 함수를 이용해서 각 정보를 얻는다.

-실제 소스-
코드:
    struct TransArray
    {
       WORD LanguageID, CharacterSet;
    };

    DWORD VerInfo, VerSize;  
    HANDLE MemHandle;
    LPVOID MemPtr, BufferPtr;
    UINT BufferLength;
    TransArray *Array;
    char QueryBlock[40];

    // Get the product name and version from the
    // applications version information.
    String Path(Application->ExeName); //프로그램 패스 얻어오기
    VerSize = GetFileVersionInfoSize(Path.c_str(), &VerInfo);//버젼 정보 크기 얻어오기
    if (VerSize > 0) {
        MemHandle = GlobalAlloc(GMEM_MOVEABLE, VerSize);
        MemPtr = GlobalLock(MemHandle);
        GetFileVersionInfo(Path.c_str(), VerInfo, VerSize, MemPtr);
        VerQueryValue(MemPtr, "\VarFileInfo\Translation", &BufferPtr,
                      &BufferLength);
        Array = (TransArray *)BufferPtr;

        // Get the product name.
        wsprintf(QueryBlock, "\StringFileInfo\%04x%04x\ProductName",
                 Array[0].LanguageID, Array[0].CharacterSet);
        VerQueryValue(MemPtr, QueryBlock, &BufferPtr, &BufferLength);
        // Set the product name caption.
        ProductName->Caption = (char *)BufferPtr;

        // Get the product version.
        wsprintf(QueryBlock, "\StringFileInfo\%04x%04x\ProductVersion",
                 Array[0].LanguageID, Array[0].CharacterSet);
        VerQueryValue(MemPtr, QueryBlock, &BufferPtr, &BufferLength);
        // Set the version caption.
        Version->Caption = (char *)BufferPtr;

        GlobalUnlock(MemHandle);
        GlobalFree(MemHandle);
    } else {
        ProductName->Caption = "";
        Version->Caption = "";
    }

    Comments->Caption = "Thank you for trying this fabulous product.n"
                        "We hope that you have enjoyed using it.";

'Computer > C++' 카테고리의 다른 글

BCB 6에 Indy 10 설치 하기 관련...  (0) 2005.11.23
BCB - StrToHex 함수  (0) 2005.11.06
BCB 6에 DSPack 2.3.4 설치  (0) 2005.09.10
카일릭스 설치 및 일반적인 문제점  (0) 2005.07.10
void pointer 샘플  (0) 2005.07.10
TStingList이용해서 텍스트 파일 파싱하기  (0) 2003.11.16
Effective C++ Second Edition  (0) 2003.10.13
Child control 관리  (0) 2003.09.15
C++ 사이트 모음  (0) 2003.04.08
C와 C++의 name mangling  (0) 2003.03.04
Posted by Gu Youn
,
1. 개념 : TStringList의 Delimiter / DelimitedText를 이용

2. 소스
  TStringList* list;

  try
  {
    list = new TStringList;
    list->LoadFromFile("test1.mfc");//파일 이름

    int lines = list->Count;
    Memo1->Lines->Add("lines:"+String(lines));

    for(int i=0; i<lines; i++)
    {
      TStringList *temp = new TStringList;
      temp->Delimiter = 't';
      temp->DelimitedText = list->Strings[i];

      for(int j=0; j < temp->Count; j++)
      {
        //Memo1->Lines->Add(String(i)+","+String(j)+" : "+temp->Strings[j]);
      }
      delete temp;
    }

  }
  __finally
  {
    delete list;
  }

'Computer > C++' 카테고리의 다른 글

BCB - StrToHex 함수  (0) 2005.11.06
BCB 6에 DSPack 2.3.4 설치  (0) 2005.09.10
카일릭스 설치 및 일반적인 문제점  (0) 2005.07.10
void pointer 샘플  (0) 2005.07.10
파일의 버젼 정보 얻기  (0) 2003.12.14
Effective C++ Second Edition  (0) 2003.10.13
Child control 관리  (0) 2003.09.15
C++ 사이트 모음  (0) 2003.04.08
C와 C++의 name mangling  (0) 2003.03.04
서버 이름을 리스트 박스에 출력하는 샘플(gethostbyaddr() 함수 이용)  (0) 2002.07.12
Posted by Gu Youn
,

Child control 관리

Computer/C++ 2003. 9. 15. 10:59
개념 : Form과 같은 parent control에는 ControlCount, Controls 프로퍼티가 있으며 이것을 이용해서 child control을 관리 할 수 있다.

controls : parent가 Form인 것들의 리스트
components : owner가 Form인 것들의 리스트

ClassName, ClassNameIs 함수를 이용하면 오브젝트의 타입 스트링을 얻을 수 있음.

소스 :
1. Controls 사용

  //form 에 있는 control 개수 구하기
  int max = StrToInt(Form1->ControlCount);

  //control 개수 만큼 루프 돌면서 각 컨트롤의 tag 값 비교 및 초기화
  for (int i=0;i<max;i++)
  {
    TControl *ChildControl = Form1->Controls[i];
    int tag = ChildControl->Tag;
    if(tag == 1)
    {
      (dynamic_cast<TLabel*>(ChildControl))->Caption = "a";
    }
    else
    {
      (dynamic_cast<TLabel*>(ChildControl))->Caption = "b";
    }
  }

2. Component 사용
  int max = Form1->ComponentCount;
  TComponent *ChildComponent;

  for (int i=0; i<max ; i++)
  {
    ChildComponent = Form1->Components[i];
    String ClassName = String(ChildComponent->ClassName());
  }
Posted by Gu Youn
,