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

  1. 2003.12.14 파일의 버젼 정보 얻기 2
  2. 2003.11.16 TStingList이용해서 텍스트 파일 파싱하기 2
  3. 2003.09.15 Child control 관리 2
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 설치 하기 관련...  (4) 2005.11.23
BCB - StrToHex 함수  (1) 2005.11.06
BCB 6에 DSPack 2.3.4 설치  (6) 2005.09.10
카일릭스 설치 및 일반적인 문제점  (4) 2005.07.10
void pointer 샘플  (2) 2005.07.10
TStingList이용해서 텍스트 파일 파싱하기  (2) 2003.11.16
Effective C++ Second Edition  (139) 2003.10.13
Child control 관리  (2) 2003.09.15
C++ 사이트 모음  (139) 2003.04.08
C와 C++의 name mangling  (139) 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 함수  (1) 2005.11.06
BCB 6에 DSPack 2.3.4 설치  (6) 2005.09.10
카일릭스 설치 및 일반적인 문제점  (4) 2005.07.10
void pointer 샘플  (2) 2005.07.10
파일의 버젼 정보 얻기  (2) 2003.12.14
Effective C++ Second Edition  (139) 2003.10.13
Child control 관리  (2) 2003.09.15
C++ 사이트 모음  (139) 2003.04.08
C와 C++의 name mangling  (139) 2003.03.04
서버 이름을 리스트 박스에 출력하는 샘플(gethostbyaddr() 함수 이용)  (2) 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
,