빌더(TWx) 님이 쓰신 글 :
: 단단한돌 님이 쓰신 글 :
: : 환경: C++ Builder XE5
: :
: : 프로젝트 옵션에 들어가서 보면 Form 리스트 정보가 나오지 않습니다.
: : (Project -> Project Options -> Forms)
: :
: : Icon을 지정하는 Application 에서도 기존에 지정한 Icon이 보이지가 않습니다.
: : (Project -> Project Options -> Application)
: :
: : 프로젝트 파일이 손상된 것 같은데..
: : 복구할 수 있는 방법은 어떤 것이 있나요?
: :
: : 감사합니다.
: :
: :
:
:
: 답변:
:
:
: RAD Studio 10.2 의 경우를 예로들어서 설명하면 (설치되어 있는 컴파일러가 10.2 밖에 없음)
:
: 프로그램 아이콘은 '디폴트' 버튼을 눌러서 선택하면 .cbproj 프로젝트 파일에 반영되고.
:
: (Project -> Project Options -> Forms)
: 에서의 폼 리스트는...
:
: 예를 들어서... 프로젝트에서
:
: From1(Unit1.cpp/Unit1.h/Unit1.dfm), Form2(Unit2.cpp/Unit2.h/Unit2.dfm)
:
: 위와 같이 2개의 폼이 있는데도 (Project -> Project Options -> Forms) 폼 리스트에 나타나지 않는다면
:
:
: 프로젝트 네임이 Project1.exe 로 되어있다면...
:
: Project1.cpp 파일을 열어서
:
: //---------------------------------------------------------------------------
: USEFORM("Unit1.cpp", Form1);
: USEFORM("Unit2.cpp", Form2);
: //---------------------------------------------------------------------------
: int WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int)
: {
: try
: {
: Application->Initialize();
: Application->MainFormOnTaskBar = true;
: Application->CreateForm(__classid(TForm1), &Form1);
: Application->CreateForm(__classid(TForm2), &Form2);
: Application->Run();
: }
: ...........
:
:
: 위와 같은 식이 되도록
:
: Application->CreateForm(__classid(TForm1), &Form1);
: Application->CreateForm(__classid(TForm2), &Form2);
:
: 코드가 설정되어 있어야 합니다.
:
:
: C++빌더 IDE는 '프로젝트 네임.cpp' 파일을 파싱해서
: 결과를 (Project -> Project Options -> Forms) 폼 리스트에 반영하도록 IDE가 구현되어 있습니다.
:
: 저런 식이 되도록 '프로젝트 네임.cpp' 파일을 수정/저장 해서 (Project -> Project Options -> Forms)
: 폼 리스트를 다시 열어 보세요.
:
//#include
//#pragma hdrstop
#include "Precompile.h" // Precompile header 사용
#include
//------------------
USEFORM("UnitDM.cpp", DM); /* TDataModule: File Type */
USEFORM("UnitMain.cpp", FormMain);
//---------------------------------------------------------------------------
int WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int)
{
HANDLE hMutex = NULL;
try
{
hMutex = CreateMutex(NULL, TRUE, L"Application/XXXMutex");
if ( NULL == hMutex )
throw Exception("Error:CreateMutex failed.");
if ( GetLastError() == ERROR_ALREADY_EXISTS ) {
OutputDebugStringA("Named Mutex already exist. skip Application init..");
CloseHandle(hMutex);
return 0;
}
Application->Initialize();
Application->MainFormOnTaskBar = true;
Application->CreateForm(__classid(TFormMain), &FormMain);
Application->CreateForm(__classid(TDM), &DM);
Application->Run();
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
// do something...
}
위와 같은 코드로 되어 있는데요..
중복 방지를 위한 Mutex 코드가 들어 있는데.. 이 코드를 try{} 구문 밖으로 빼도 마찬가지내요.
이상한 것은 다른 프로젝트에서는 이와 동일한 코드로 구성되어 있는데
프로젝트 옵션에 폼리스트가 잘 보입니다.
(다른 점이라면 이 프로젝트는 Precompile Header를 만들어서 Include했다는 것이고,
다른 프로젝트는 Precompile Header 없이 사용하는 것입니다. 이 차이일까요? )