адаптация кода под билдер

Использование и разработка софта (преимущественно на ПЦ)

Moderator: Shaos

User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

Есть у меня один проект - не смог добить... Исходник брал у них: http://www.codeproject.com
Если выложу кусочек - глянешь? Мне кажется я почти всё исправил,
но один момент никак не даётся... прям в ступор ввёл, за что я его, правда,
год назад забросил. :wink:
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Засылай
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Вопрос к Shaos-y

Post by Lavr »

Вопрос к Shaos-y

Вобщем непонятка случилась у меня при адаптации библиотеки CodeMax в свой проект...
CodeMax is a powerful code edit control which supports the following features:

* DLL and ActiveX versions
* Color Syntax Highlighting
* Custom Keystroke Assignments
* Over 120 Separate Edit Commands
* Drag-and-Drop Manipulation
* Support for C++, Java, SQL, Basic, Pascal, and Custom Languages
* Multiple Splitter Views
* Unlimited Undo/Redo
* Persistent Keystroke Macros
* Auto-Indentation
* Bookmarks
* IntelliMouse Support
* Column Selection
* MFC Support
я уже сказал, где я взял пример,
http://www.codeproject.com/KB/wtl/wtled ... lay=Mobile
но нестыковка у меня вышла, помнится здесь:

Code: Select all

Далее, Вам следует объявить образец объекта CodeMaxLibrary и инициализировать его.

BOOL CCodeFile::RegisterClass( HINSTANCE hInstance )
{
  // register the CodeMax edit control
  CMRegisterControl();

  WNDCLASS    wndclass;

  wndclass.style         = 0;
  wndclass.lpfnWndProc   = WndProc;
  wndclass.cbClsExtra    = 0;
  wndclass.cbWndExtra    = 0;
  wndclass.hInstance     = hInstance;
  wndclass.hIcon         = NULL;
  wndclass.hCursor       = LoadCursor( NULL, IDC_ARROW );
  wndclass.hbrBackground = NULL;
  wndclass.lpszMenuName  = NULL;
  wndclass.lpszClassName = CODEFILEWNDCLASS; // "CodeFile"

  return ::RegisterClass( &wndclass );
}

CCodeFile *pCode = new CCodeFile( this );

//--------------------
LRESULT CCodeFile::OnCreate( HWND hWnd, WPARAM wParam, LPARAM lParam )
{
  ASSERT( lParam );
  CREATESTRUCT *pcs = ( CREATESTRUCT * )lParam;
  ASSERT( pcs->lpCreateParams );
  MDICREATESTRUCT *pmcs = ( MDICREATESTRUCT * ) pcs->lpCreateParams;

  // associate the CCodeFile object with the window
  CCodeFile *pCode = ( CCodeFile * ) pmcs->lParam;

  SetWindowLong( hWnd, GWL_USERDATA, ( DWORD ) pCode );

  pCode->Initialize( hWnd );

Что-то не срослось для Билдера в этих строках. И я в упор не понял - что...

Code: Select all

  CCodeFile *pCode = new CCodeFile( this );

  // associate the CCodeFile object with the window
  CCodeFile *pCode = ( CCodeFile * ) pmcs->lParam;
В результате должно получиться что-то типа такого...

Image

Но, видимо, не в Борланд Билдере... :(
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

я думаю, что компилятору не нравится висящее в воздухе new:

CCodeFile *pCode = new CCodeFile( this );

надо заменить на:

CCodeFile *pCode = NULL;

и где-то в теле инициализирующей или создающей функции:

pCode = new CCodeFile( this );
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Shaos wrote:я думаю, что компилятору не нравится висящее в воздухе new:

CCodeFile *pCode = new CCodeFile( this );

надо заменить на:

CCodeFile *pCode = NULL;

и где-то в теле инициализирующей или создающей функции:

pCode = new CCodeFile( this );
а вообще это похоже класс - значит в конструкторе

вообще это по джавовски - члены класса динамически создавать прямо в теле класса - большинство компиляторов это не поймут, а видимо студия мелкомягкая понимает - видимо специально сделали для джавистов, которые случайно на с++ кодят :roll:
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

Shaos wrote:вообще это по джавовски - члены класса динамически создавать прямо в теле класса - большинство компиляторов это не поймут, а видимо студия мелкомягкая понимает - видимо специально сделали для джавистов, которые случайно на с++ кодят
Глубако ты взглянул... :o
Такая лютая, бешеная ненависть к фундаментальным понятиям языка не могла пройти незамеченной всякими Майкрософтами. Венцом мелкософтовской ненависти к тру Си является появление С#, который на самом деле собственная версия Жабы.
http://lurkmore.ru/C :lol: