LabView의 기능중에 컴파일 기능이 있다.

이중 DLL 만들기가 있다.

랩뷰가 생성되는 파일은 M$에서 사용되는 COFF 파일이다.
VCL에서는 OMF 형식으로 되니까.. 이부분을 변환해 줘야 된다고 생각하고 정적으로 불러왔으나 되지 않는다.

혹시나 해서 동적으로 불러보니 잘 된다.. ㅠㅠ(하루 까먹었다..)

우선 형을 정의해 주고..
typedef double (__stdcall *TTempTest)(double);

DLL을 인스턴스로 선언해주고..
HINSTANCE  Dll;

동적으로 생성할  함수형도 미리 선언
TTempTest DLLFunc;

사용하고자 하는 곳에서... (또는 생성부에서...) DLL 로드
둘 중 편한대로 사용..(2000과 XP 모두에서 사용할려면 아래 방식으로 해야 된다고 한다.. 2000 시스템이 없어서 확인 못함... XP는 사용가능)
 Dll = LoadLibrary("Temp.dll");
 Dll = LoadLibraryEx("Temp.dll", NULL, LOAD_LIBRARY_AS_DATAFILE_EXCLUSIVE);

이제 동적으로 불러오고.... 실행...
 DLLFunc = (TTempTest)GetProcAddress(Dll, "TempTest");
 if(DLLFunc)
 {
       DLLFunc(8);
 }

참고로... 화면을 불러오고자 할때에는...

VI 설정화면에서  윈도우 동작을 플로팅으로 해야 한다..
기본으로 할 경우에는 화면이 동작하지 않는다.
그리고 호출시 프런트패널을 보일것인지.. 로드시 보일것인지도 판단하도록 하고..

그리고 While문을 사용할경우에도 주의..하자.. 
그래프나 차트랑 연동될경우..
하나의 창만 나타날수도 있다.

블록다이어그램에서 인보크노드에서 설정해도 된다..

그리고.. 함수의 입출력 부분을 커넥트 처리를 꼭하자.. 이거 안하면 함수의 인자나 반환값을 받을수가 없다.



VCL을 사용하다가 보면 알람이나 에러메시지를 만나면 간단한것들은 그냥 해결이 가능하나 어떤것들은 모호할때가 있다. 이럴때를 대비해서 Codegear에서 제공하는 메뉴얼을 참조해 하나씩 번역할려고 한다..

그런데, 언제 끝날지 모른다.. 번역기의 도움과 어설픈 영어해석으로 말이 안 맞을수도 있다.
그러나 대충 뜻은 알아 들을수 있을것이다. (예전에 컴파일시 나타나는 에러 메시지를 한글화 했으나. 업데이트 할때마다 이 파일을 자꾸 건들려야 해서.. 이제부터는 아예 이런식으로 정리할려고 한다. 추후 시간이 되면 기존에 하던 작업도 업데이트 해야겠다.)

문서는 100 단위씩 나누어서 작업할 예정..

작업환경 : RAD STUDIO (C++ Builder 2007)
참고문서 : 24682_rad_studio_2007_help_c_reference_help
번역기 : http://translation.infoseek.co.jp/ - 일한번역기가 따로 없어서 인터넷이 될때만 한다.

'1.소프트웨어 이야기 > 10.번역 작업' 카테고리의 다른 글

VCL 에러메시지 2200 ~ 2299  (0) 2008.01.25
VCL 에러메시지 2100 ~ 2199  (0) 2008.01.25
VCL 에러메시지 2000 ~ 2099  (0) 2008.01.25
Virtual Tree View 테스트 프로그램..

참고 문서를 보고 작성해 봄..

Ini 파일을 섹터별로 읽을수 있도록 함.
(우선은 Setup.ini 파일만 읽을수 있음.. 추후.. 파일을 불러서 읽을수 있도록 변경 예정)

Add-on으로 제공되는 VirtualIniTree를 사용하지 않음.. (몇가지 조건이 달라서... 추후 이 컴포넌트도 테스트 예정)

밑의 INI Generator 파일의 생성시 검사 해보기 위해 작성함...



사용자 삽입 이미지





'1.소프트웨어 이야기 > devkyy.My Develope Program' 카테고리의 다른 글

CSV File to C++ Source & Ini File Generator  (2) 2009.05.22
Code Generator 업데이트  (1) 2008.01.11
GUI TEST  (0) 2007.12.27
이전에 만들었던 프로그램 수정본..

프로그램에서 불러서 저장하기 전에 미리 ini 파일을 미리 만들어 볼수 있도록 추가..
ini파일 작성시 설명 부분과 변수 설정 부분을 추가로 만들수 있도록 함.



사용자 삽입 이미지


CODEGene.zip





'1.소프트웨어 이야기 > devkyy.My Develope Program' 카테고리의 다른 글

Virtual Tree Test 프로그램..  (1) 2008.01.11
GUI TEST  (0) 2007.12.27
간단한 TCP/IP 테스트  (0) 2007.12.06

사용자 삽입 이미지

일반 폼에서 만들어본.. 화면.. 검정색 부분은 바탕화면임(즉 투명부분...)

영역 지정화면 테스트겸해서 만들어본것...

추후 알림 메시지 박스로 사용하면 될듯함...

---------------------------------------------------------------

#ifndef FormMainH
#define FormMainH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ExtCtrls.hpp>
#include <Buttons.hpp>
#include <ImgList.hpp>
#include "XiPanel.hpp"
#include "LMDPNGImage.hpp"
//---------------------------------------------------------------------------
class TfrmMain : public TForm
{
__published: // IDE-managed Components
 TImageList *ImageListMain;
 TShape *shpTitle;
 TLabel *lblTitle;
 TShape *shpBG;
 TImage *imgExit;
 TShape *Shape1;
 TLabel *Label1;
 void __fastcall shpTitleMouseMove(TObject *Sender, TShiftState Shift, int X,
          int Y);
 void __fastcall shpTitleMouseDown(TObject *Sender, TMouseButton Button,
          TShiftState Shift, int X, int Y);
 void __fastcall shpTitleMouseUp(TObject *Sender, TMouseButton Button,
          TShiftState Shift, int X, int Y);
 void __fastcall imgExitClick(TObject *Sender);
private: // User declarations
public:  // User declarations
 __fastcall TfrmMain(TComponent* Owner);
 BOOL bDragState;
 int nMouseDownX, nMouseDownY;
};

#define TITLE_WIDTH  400
#define MAIN_WIDTH   640
#define TITLE_HEIGHT  20
#define MAIN_HEIGHT   440

#define SYSTEM_WIDTH    300
#define SYSTEM_HEIGHT   20
#define LEFT_MARGIN  5
//---------------------------------------------------------------------------
extern PACKAGE TfrmMain *frmMain;
//---------------------------------------------------------------------------
#endif

.cpp
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "FormMain.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "XiPanel"
#pragma link "LMDPNGImage"
#pragma resource "*.dfm"
TfrmMain *frmMain;
//---------------------------------------------------------------------------
__fastcall TfrmMain::TfrmMain(TComponent* Owner)
 : TForm(Owner)
{
 ////////////////////////////////////////////////////////////////////////////
 HWND hRegionMain, hRegionTitle, hRegionSystem ;

 hRegionTitle = CreateRectRgn(0, 0, TITLE_WIDTH, TITLE_HEIGHT);                   // 영역 지정

 hRegionMain = CreateRectRgn(0, TITLE_HEIGHT, MAIN_WIDTH, TITLE_HEIGHT + MAIN_HEIGHT);

 hRegionSystem = CreateRectRgn(MAIN_WIDTH - SYSTEM_WIDTH,
          TITLE_HEIGHT + MAIN_HEIGHT,
          MAIN_WIDTH,
          TITLE_HEIGHT + MAIN_HEIGHT + SYSTEM_HEIGHT);


 CombineRgn(hRegionMain, hRegionTitle, hRegionMain, RGN_OR);                 // 영역병합
 CombineRgn(hRegionSystem, hRegionMain, hRegionSystem, RGN_OR);                 // 영역병합

 SetWindowRgn(Handle, hRegionSystem, True);                                        // 영역 등록

 Brush->Style = bsClear;                                                       // 브러쉬 스타일 정의..
 //Pen->Style = psSolid;
 ////////////////////////////////////////////////////////////////////////////
 //btnTitle->Glyph = ImageListMain->
   // this->Color = clBlack;
   // ImageListMain->GetBitmap(0, imgExit->Picture->Bitmap);
 //  imgExit->Picture->LoadFromFile(".\\Shutdown.png");
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::shpTitleMouseMove(TObject *Sender, TShiftState Shift,
      int X, int Y)
{
 if(bDragState)
 {
  this->Left = this->Left + X - nMouseDownX;
  this->Top = this->Top + Y - nMouseDownY;
 }
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::shpTitleMouseDown(TObject *Sender, TMouseButton Button,
      TShiftState Shift, int X, int Y)
{
 nMouseDownX = X;
 nMouseDownY = Y;
 bDragState = true;
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::shpTitleMouseUp(TObject *Sender, TMouseButton Button,
      TShiftState Shift, int X, int Y)
{
 bDragState = false;
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::imgExitClick(TObject *Sender)
{
 PostQuitMessage(-1);
}
//---------------------------------------------------------------------------

'1.소프트웨어 이야기 > devkyy.My Develope Program' 카테고리의 다른 글

Code Generator 업데이트  (1) 2008.01.11
간단한 TCP/IP 테스트  (0) 2007.12.06
수치 계산 프로그램  (0) 2007.12.06
소장님이 부탁한 프로그램...
간단히 만든 프로그램이지만..

제작기간 : 0.5 day


test.zip

+ Recent posts