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;
}
도데체 어디에 문제가 있는걸까요?