Kylix Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
카일릭스 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
자유게시판
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

카일릭스 Q&A
[15] C++Builder 6로 QT API 프로그래밍을 하려면?
김백일 [cedar] 2823 읽음    2002-07-02 15:00
Kylix Tip'N Trick 10번에 이갑연님이 올리신 글의
http://www.borlandforum.com/impboard/impboard.dll?action=read&db=kylix_tip&no=10
링크를 보고
http://community.borland.com/article/0,1410,27231,00.html
C++Builder 6에서 가능할 것 같아 해봤는데,
컴파일까지 잘 되지만, 실행시키면 런타임 에러(Stack Overflow)가 나네요.

원문에 있는 Kylix/Delphi 소스는 다음과 같고요,

Program Project1;

uses
  Qt,
  QForms,
  SysUtils;

var
  App : QApplicationH; // QApplication handle
  MainWnd : QWidgetH;  // Main window
  Button : QWidgetH;   // Button handle
  MainForm : TForm;    // Main application form
  Caption : WideString;

begin
  // initializes application and stores handle in App
  Application.Initialize;
  App := Application.Handle;

  // creates main window
  MainForm := TForm.Create(nil);
  Caption := 'Minimum CLX Application';
  MainWnd := MainForm.Handle;

  // set window caption and size
  QWidget_setCaption(MainWnd,@Caption);
  QWidget_setGeometry(MainWnd, 100,100,200,100);

  // creates the button
  Caption := 'Close App';
  Button := QPushButton_create(@Caption, MainWnd, PChar('Button'));

  // sets button size
  QWidget_setGeometry(Button,20,20,160,160);

  // sets application main widget
  QApplication_setMainWidget(App,MainWnd);

  // shows widget and enters application loop
  QWidget_show(MainWnd);
  QApplication_exec(App);
end.

제가 빌더6용으로 변환한 소스는 다음과 같습니다.
물론 Console Wizard에서 [Use CLX] 만 선택하고 [Console Application]은 선택하지 않았습니다.

#include <clx.h>
#include <QForms.hpp>

WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
  // initializes application and stores handle in App
  Application->Initialize();
  QApplicationH *App = Application->Handle;

  // creates main window
  TForm *MainForm = new TForm(Application);
  WideString *MainWndCaption = new WideString("Minimum CLX Application");
  QWidgetH *MainWnd = MainForm->Handle;

  // set window caption and size
  QWidget_setCaption(MainWnd, MainWndCaption); // 여기서 Stack Overflow가 납니다.
  QWidget_setGeometry(MainWnd, 100, 100, 200, 100);

  // creates the button
  WideString *ButtonCaption = new WideString("Close App");
  QWidgetH *Button =
      QPushButton_create(ButtonCaption, MainWnd, "Button");

  // sets button size
  QWidget_setGeometry(Button, 20, 20, 160, 160);

  // sets application main widget
  QApplication_setMainWidget(App, MainWnd);

  // shows widget and enters application loop
  QWidget_show(MainWnd);
  QApplication_exec(App);

  delete MainForm;
  delete MainWndCaption; delete ButtonCaption;

  return 0;
}

도데체 어디에 문제가 있는걸까요?

+ -

관련 글 리스트
15 C++Builder 6로 QT API 프로그래밍을 하려면? 김백일 2823 2002/07/02
18     Re:C++Builder 6로 QT API 프로그래밍을 하려면? 이갑연.에릭 2510 2002/07/08
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.