Обсуждение Программирование на C/C++

JIECHuK

Ословед
Может кто сможет помочь, токо поставил vs2005, написал программу dll, пытаюсь запустить, но вылазит окно, Посмотреть вложение 2049543, что нужно укозать? токо начал разбираться С++, если написал глупость, то простите.
просит путь к ехе-шнику, с которым будет использоваться длл-ка. а вы уверены, что вам нужно именно длл, если вы только начали изучать с++?
 

JIECHuK

Ословед
Просто показали имено на dll, а что укозать чтобы открылось в командной строке? пробовал укозать на cmd неполучилось нечего.
срочно учить матчасть: прочитать хотя бы что такое командная строка и зачем она нужна. похоже, вы совершенно не знаете что делаете, а без этого вряд ли получатся хорошие программы (теперь я почти на 100% уверен, что dll вам вовсе не нужно на данном этапе)
 
Просто показали имено на dll, а что укозать чтобы открылось в командной строке? пробовал укозать на cmd неполучилось нечего.
Где указали, что указали, лучше написать тут задание подробно, а вообще скачать и прочитать пару глав из книг в топике. Но с dll вам явно рано.
 
Помогите!! Не могу понять почему прога не робит! предпоследний цикл не хочет работать по причине непонятно из-за чего!!!
Код:
[URL="http://vk.com/feed?section=search&q=%23include"]#include[/URL][LEFT][COLOR=#000000][FONT=tahoma] <stdio.h>[/FONT][/COLOR][/LEFT]
[URL="http://vk.com/feed?section=search&q=%23include"]#include[/URL][LEFT][COLOR=#000000][FONT=tahoma] <stdlib.h>[/FONT][/COLOR]

[COLOR=#000000][FONT=tahoma]void Gauss(double **a, int n)[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]{[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]int i,j,k;[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]double l, *b;[/FONT][/COLOR]

[COLOR=#000000][FONT=tahoma]b=(double*)malloc(n*sizeof(double));[/FONT][/COLOR]

[COLOR=#000000][FONT=tahoma]printf("\nвыполним прямой ход метода Гаусса (приводим матрицу к треугольному виду)\n");[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]for(k=0;k<n;k++)[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]for(i=k+1;i<n;i++)[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]{[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]l=a[i][k]/a[k][k];[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]for(j=k;j<=n;j++)[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]a[i][j]=a[i][j]-l*a[k][j];[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]}[/FONT][/COLOR]

[COLOR=#000000][FONT=tahoma]printf("при выполнении прямого хода метода Гаусса\nмы получили треугольную матрицу:\n");[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]for(i=0;i<n;i++)[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]{[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]for(j=0;j<n+1;j++)[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]{[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]if(a[i][j]==0)[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]printf("\t\t\t");[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]else[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]printf("%f\t\t",a[i][j]);[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]}[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]printf("\n\n");[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]}[/FONT][/COLOR]

[COLOR=#000000][FONT=tahoma]printf("\nтеперь приступим к выполнению обратного хода метода Гауса,\nпри котором найдем значения неизвестных в уравнениях.\n"); [/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]for(k=n-1;k>1;k--)[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]{[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]for(i=k-1;i>0;i--)[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]{[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]l=a[i][k]/a[k][k];[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]for(j=n-1;j>=i;j-1)[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]a[i][j]=a[i][j]-l*a[i][i+1];[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]}[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]}[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]printf("получаем следующие значения для заданной матрицы:\n");[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]for(i=0;i,n;i++)[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]for(j=0;j<n;j++)[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]{[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]printf("%f\t",a[i][j]);[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]}[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]}[/FONT][/COLOR]

[COLOR=#000000][FONT=tahoma]char h;[/FONT][/COLOR]

[COLOR=#000000][FONT=tahoma]void correct_matr(double **a, int n)[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]{[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]int i,j,k,l,flag=0;[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]double *b;[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]b=(double*)malloc((n+1)*sizeof(double));[/FONT][/COLOR]

[COLOR=#000000][FONT=tahoma]for(i=0;i<n;i++)[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]if(a[i][i]==0)[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]{[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]printf("элемент матрицы а[%i][%i]=0.\n попробуем переформировать матрицу", i, i);[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]j=i;[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]k=(i+1);[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]do[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]{[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]if(a[k][i]!=0)[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]{[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]flag++;[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]for(l=0;l<=n;l++)[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]{[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]b[l]=a[k][l];[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]a[k][l]=a[j][l];[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]a[j][l]=b[l];[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]}[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]}[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]k++;[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]}[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]while(flag==0);[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]flag=0;[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]}[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]if(flag==0)[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]printf("матрица задана неверно. хотите ли вы исправить матрицу? [Y/N]");[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]scanf("%s",&h);[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]switch (h)[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]{[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]case'N':[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]case'n':if(flag!=0)[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]printf("матрица является вырожденной, последующее вычисление невозможно");[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]break;[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]case'Y':[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]case'y':printf("продолжаем вычисление\n");[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]break;[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]}[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]}[/FONT][/COLOR]

[COLOR=#000000][FONT=tahoma]int main()[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]{[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]int n,i,j;[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]double **a;[/FONT][/COLOR]

[COLOR=#000000][FONT=tahoma]printf("введите размер матрицы N=");[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]scanf("%d",&n);[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]a=(double**)malloc(n*sizeof(double*));[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]for(i=0;i<n;i++)[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]a[i]=(double*)malloc((n+1)*sizeof(double));[/FONT][/COLOR]

[COLOR=#000000][FONT=tahoma]printf("введите элементы матрицы:\n");[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]for(i=0;i<n;i++)[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]for(j=0;j<(n+1);j++)[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]{[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]printf("a[%i][%i]=",i+1,j+1);[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]scanf("%lf", &a[i][j]);[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]}[/FONT][/COLOR]

[COLOR=#000000][FONT=tahoma]do[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]{ [/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]printf("\nхотите ли вы изменить введенный элемент матрицы? [Y/N]");[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]scanf("%s",&h);[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]switch (h)[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]{[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]case'Y':[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]case'y':[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]{[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]printf("введите индексы этого элемента\n");[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]do[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]{[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]printf("i=");[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]scanf("%d", &i);[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]if(i>n+1)[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]printf("такого элемента нет. попробуйте снова.");[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]}[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]while(i>n+1);[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]printf("j=");[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]scanf("%d", &j);[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]if(j>n+1)[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]printf("такого элемента нет. попробуйте снова.");[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]printf("введите значение элемента\n");[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]scanf("%lf", &a[i-1][j-1]);[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]for(i=0;i<n;i++)[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]{[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]printf("\n");[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]for(j=0;j<(n+1);j++)[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]{[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]printf("%f\t",a[i][j]);[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]}[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]}[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]}[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]case'N':[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]case'n':[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]break;[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]} [/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]}[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]while(h==0x59);[/FONT][/COLOR]

[COLOR=#000000][FONT=tahoma]for(i=0;i<n;i++)[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]if(a[i][i]==0) [/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]correct_matr(a, n);[/FONT][/COLOR]

[COLOR=#000000][FONT=tahoma]Gauss(a, n);[/FONT][/COLOR]

[COLOR=#000000][FONT=tahoma]for(i=0;i<n;i++)[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]free(a[i]);[/FONT][/COLOR]
[COLOR=#000000][FONT=tahoma]fr[/FONT][/COLOR][/LEFT]
 

Yanus Odron

Ословед

условие прочитайте внимательнее

Free(a);

не?

вполне логично использовать функцию free указывая на переменную, а не на элемент в переменной, тем более что элемента a нету )


мне не надо опусташать матрицу, мне надо еще над ней действия делать..
 

JIECHuK

Ословед

условие прочитайте внимательнее

Free(a);

не?

вполне логично использовать функцию free указывая на переменную, а не на элемент в переменной, тем более что элемента a нету )
так ты освободишь память указывающую на массив указателей, а сами эти указатели так и останутся в памяти вместе с данными, на которые указывают
 

JIECHuK

Ословед
мне не надо опусташать матрицу, мне надо еще над ней действия делать..
ниче короче не понял, ты n раз вызываешь функцию корректировки, а в самой функции делаешь то же самое, снова проверяешь элементы на главной диагонали на равенство нулю; следующий момент - выделяешь память под b в этой функции, а потом ее не освобождаешь, при следующем заходе в функцию у тебя память снова выделяется, и указатель теперь связан с новой областью памяти, а старую кто удалять будет?
 

Battle Bear

Ословед
В программе должна быть диалоговая панель. На панели два редактируемых поля. По закрытии окна значения из этих полей должны писаться в глобальные переменные.
Панель описывается в файле ресурсов.
Код:
#include "D:\Program Files\Borland\BDS\4.0\include\windows.h"
#define IDC_EDIT2 2
#define IDC_EDIT3 3
#define IDC_STATIC 3

DIALOG_OK DIALOG 25, 25, 200, 120
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Размер поля"
BEGIN
  CONTROL "ОК",IDOK,"BUTTON",BS_DEFPUSHBUTTON |BS_VCENTER |BS_CENTER |WS_CHILD |WS_TABSTOP |WS_VISIBLE ,74,94,50,14
  CONTROL "Отмена",IDCANCEL,"BUTTON",BS_DEFPUSHBUTTON |BS_VCENTER |BS_CENTER |WS_CHILD |WS_TABSTOP |WS_VISIBLE ,133,94,50,14
  CONTROL "100",IDC_EDIT2,"EDIT",ES_LEFT |WS_CHILD |WS_BORDER |WS_TABSTOP |WS_VISIBLE ,17,25,109,14
  CONTROL "100",IDC_EDIT3,"EDIT",ES_LEFT |WS_CHILD |WS_BORDER |WS_TABSTOP |WS_VISIBLE ,17,62,109,14
  CONTROL "Высота поля(клеток)",IDC_STATIC,"STATIC",SS_LEFT |WS_CHILD |WS_GROUP |WS_VISIBLE ,17,9,109,12
  CONTROL "Ширина поля(клеток)",IDC_STATIC,"STATIC",SS_LEFT |WS_CHILD |WS_GROUP |WS_VISIBLE ,17,46,109,12

END
В самой программе в обработчике DlgProc пытаюсь использовать вот такое, найденное у Фроловых.
Код:
case WM_COMMAND:
    {
      switch(wParam)
      {
        // Сообщение от кнопки "OK"
        case IDOK:{
            int     SizeText;
            *(WORD *)Buf = sizeof(Buf) - 1;
            SizeText = SendMessage(IDC_EDIT2, EM_GETLINE, 0,(LPARAM)(LPSTR)Buf);
            Buf[SizeText] = 0;
            return 0;
        }
Ругается на IDC_EDIT2.
Buf - глобальный.
 

JIECHuK

Ословед
В программе должна быть диалоговая панель. На панели два редактируемых поля. По закрытии окна значения из этих полей должны писаться в глобальные переменные.
Панель описывается в файле ресурсов.
Код:
#include "D:\Program Files\Borland\BDS\4.0\include\windows.h"
#define IDC_EDIT2 2
#define IDC_EDIT3 3
#define IDC_STATIC 3

DIALOG_OK DIALOG 25, 25, 200, 120
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Размер поля"
BEGIN
  CONTROL "ОК",IDOK,"BUTTON",BS_DEFPUSHBUTTON |BS_VCENTER |BS_CENTER |WS_CHILD |WS_TABSTOP |WS_VISIBLE ,74,94,50,14
  CONTROL "Отмена",IDCANCEL,"BUTTON",BS_DEFPUSHBUTTON |BS_VCENTER |BS_CENTER |WS_CHILD |WS_TABSTOP |WS_VISIBLE ,133,94,50,14
  CONTROL "100",IDC_EDIT2,"EDIT",ES_LEFT |WS_CHILD |WS_BORDER |WS_TABSTOP |WS_VISIBLE ,17,25,109,14
  CONTROL "100",IDC_EDIT3,"EDIT",ES_LEFT |WS_CHILD |WS_BORDER |WS_TABSTOP |WS_VISIBLE ,17,62,109,14
  CONTROL "Высота поля(клеток)",IDC_STATIC,"STATIC",SS_LEFT |WS_CHILD |WS_GROUP |WS_VISIBLE ,17,9,109,12
  CONTROL "Ширина поля(клеток)",IDC_STATIC,"STATIC",SS_LEFT |WS_CHILD |WS_GROUP |WS_VISIBLE ,17,46,109,12

END
В самой программе в обработчике DlgProc пытаюсь использовать вот такое, найденное у Фроловых.
Код:
case WM_COMMAND:
    {
      switch(wParam)
      {
        // Сообщение от кнопки "OK"
        case IDOK:{
            int     SizeText;
            *(WORD *)Buf = sizeof(Buf) - 1;
            SizeText = SendMessage(IDC_EDIT2, EM_GETLINE, 0,(LPARAM)(LPSTR)Buf);
            Buf[SizeText] = 0;
            return 0;
        }
Ругается на IDC_EDIT2.
Buf - глобальный.
переопредели в самой программе, этот define у тебя только в файле ресурсов виден
 

Battle Bear

Ословед
Все равно ругается.
[C++ Error] Unit1.cpp(189): E2034 Cannot convert 'int' to 'HWND__ *'
Получается что он не хочет воспринимать IDC_EDIT2 как идентификатор поля редактора. Но что тогда использовать в качестве идентификатора?
 

JIECHuK

Ословед
Все равно ругается.
[C++ Error] Unit1.cpp(189): E2034 Cannot convert 'int' to 'HWND__ *'
Получается что он не хочет воспринимать IDC_EDIT2 как идентификатор поля редактора. Но что тогда использовать в качестве идентификатора?
это должно работать:
SizeText = SendMessage(GetDlgItem(hdlg, IDC_EDIT2), EM_GETLINE, 0, (LPARAM)(LPSTR)Buf);

hdlg- это первый параметр, который передается в BOOL CALLBACK DlgProc (HWND hdlg, UINT msg, WPARAM wParam, LPARAM lParam);
 

Battle Bear

Ословед
Код:
// ----------------------------------------
// Простейшая диалоговая панель
// ----------------------------------------

#define STRICT
#include <windows.h>
#include <mem.h>

#define IDB_Button1 1
#define IDC_EDIT2 2
#define IDC_EDIT3 3
#define IDC_STATIC 3


// Прототипы функций
BOOL InitApp(HINSTANCE);
LRESULT CALLBACK _export WndProc(HWND, UINT, WPARAM, LPARAM);
BOOL CALLBACK    _export DlgProc(HWND, UINT, WPARAM, LPARAM);

// Имя класса окна
char const szClassName[]   = "DialogAppClass";

// Заголовок окна
char const szWindowTitle[] = "Dialog Box Demo";

HINSTANCE hInst;
char   Buf[80];

// =====================================
// Функция WinMain
// =====================================
#pragma argsused

int PASCAL
WinMain(HINSTANCE hInstance,
        HINSTANCE hPrevInstance,
        LPSTR     lpszCmdLine, 
        int       nCmdShow)   
{
  MSG  msg;   // структура для работы с сообщениями
  HWND hwnd;  // идентификатор главного окна приложения

  HWND hButton1;

  // Инициализируем приложение
  if(!InitApp(hInstance))
      return FALSE;

  hInst = hInstance;

  // После успешной инициализации приложения создаем
  // главное окно приложения
  hwnd = CreateWindow(
    szClassName,         // имя класса окна
    szWindowTitle,       // заголовок окна
    WS_OVERLAPPEDWINDOW, // стиль окна
    CW_USEDEFAULT,       // задаем размеры и расположение
    CW_USEDEFAULT,       // окна, принятые по умолчанию 
    CW_USEDEFAULT,
    CW_USEDEFAULT,
    0,                   // идентификатор родительского окна
    0,                   // идентификатор меню
    hInstance,           // идентификатор приложения
    NULL);               // указатель на дополнительные
                         // параметры

  // Если создать окно не удалось, завершаем приложение
  if(!hwnd)
    return FALSE;

  // Рисуем главное окно
  ShowWindow(hwnd, nCmdShow);
  UpdateWindow(hwnd);

  // Создаем кнопку
  hButton1 = CreateWindow("button", "About...",
    WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
    20, 20, 90, 30,
    hwnd, (HMENU) IDB_Button1,
    hInstance, NULL);

  // Запускаем цикл обработки сообщений
  while(GetMessage(&msg, 0, 0, 0))
  {
    DispatchMessage(&msg);
  }
  return msg.wParam;
}

// =====================================
// Функция InitApp
// Выполняет регистрацию класса окна
// =====================================

BOOL
InitApp(HINSTANCE hInstance)
{
  ATOM aWndClass; // атом для кода возврата
  WNDCLASS wc;    // структура для регистрации
                  // класса окна

  memset(&wc, 0, sizeof(wc));

  wc.style = 0;
  wc.lpfnWndProc = (WNDPROC) WndProc;
  wc.cbClsExtra = 0;
  wc.cbWndExtra = 0;
  wc.hInstance = hInstance;
  wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
  wc.hCursor = LoadCursor(NULL, IDC_ARROW);
  wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
  wc.lpszMenuName = (LPSTR)NULL;
  wc.lpszClassName = (LPSTR)szClassName;

  // Регистрация класса
  aWndClass = RegisterClass(&wc);

  return (aWndClass != 0);
}

// =====================================
// Функция WndProc
// =====================================

LRESULT CALLBACK _export
WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
  static DLGPROC lpfnDlgProc;

  switch (msg)
  {
    case WM_COMMAND:
    {
      // Если нажата кнопка, выводим
      // диалоговую панель
      if(wParam == IDB_Button1)
      {
        // Переходник для функции диалоговой панели
        lpfnDlgProc = (DLGPROC) 
          MakeProcInstance((FARPROC)DlgProc, hInst);

        // Создаем модальную диалоговую панель
        DialogBox(hInst, "DIALOG_OK", hwnd, lpfnDlgProc);
      }
      return 0;
    }
    case WM_PAINT:{
            HDC hdc;
            PAINTSTRUCT ps;
            hdc = BeginPaint(hwnd, &ps);
            EndPaint(hwnd, &ps);
            return 0;
        }
    case WM_DESTROY:
    {
      PostQuitMessage(0);
      return 0;
    }
  }
  return DefWindowProc(hwnd, msg, wParam, lParam);
}

// =====================================
// Функция DlgProc
// =====================================
#pragma argsused

BOOL CALLBACK _export
DlgProc(HWND hdlg, UINT msg, WPARAM wParam, LPARAM lParam)
{
  switch(msg)
  {
    // Инициализация диалоговой панели
    case WM_INITDIALOG:
    {
      return TRUE;
    }

    case WM_COMMAND:
    {
      switch(wParam)
      {
        // Сообщение от кнопки "OK"
        case IDOK:{
            int     SizeText;
            *(WORD *)Buf = sizeof(Buf) - 1;
            SizeText = SendMessage(GetDlgItem(hdlg, IDC_EDIT2), EM_GETLINE, 0, (LPARAM)(LPSTR)Buf);
            Buf[SizeText] = 0;
        }

        // Отмена диалоговой панели.
        // Это сообщение приходит, когда пользователь
        // нажимает на клавишу <Esc>
        case IDCANCEL:
        {
          // Устанавливаем флаг завершения диалога
          EndDialog(hdlg, 0);
          return TRUE;
        }
      }
    }
  }
  return FALSE;
}
и
Код:
#include "D:\Program Files\Borland\BDS\4.0\include\windows.h"
#define IDC_EDIT2 2
#define IDC_EDIT3 3
#define IDC_STATIC 3

DIALOG_OK DIALOG 25, 25, 200, 120
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Размер поля"
BEGIN
  CONTROL "ОК",IDOK,"BUTTON",BS_DEFPUSHBUTTON |BS_VCENTER |BS_CENTER |WS_CHILD |WS_TABSTOP |WS_VISIBLE ,74,94,50,14
  CONTROL "Отмена",IDCANCEL,"BUTTON",BS_DEFPUSHBUTTON |BS_VCENTER |BS_CENTER |WS_CHILD |WS_TABSTOP |WS_VISIBLE ,133,94,50,14
  CONTROL "100",IDC_EDIT2,"EDIT",ES_LEFT |WS_CHILD |WS_BORDER |WS_TABSTOP |WS_VISIBLE ,17,25,109,14
  CONTROL "100",IDC_EDIT3,"EDIT",ES_LEFT |WS_CHILD |WS_BORDER |WS_TABSTOP |WS_VISIBLE ,17,62,109,14
  CONTROL "Высота поля(клеток)",IDC_STATIC,"STATIC",SS_LEFT |WS_CHILD |WS_GROUP |WS_VISIBLE ,17,9,109,12
  CONTROL "Ширина поля(клеток)",IDC_STATIC,"STATIC",SS_LEFT |WS_CHILD |WS_GROUP |WS_VISIBLE ,17,46,109,12

END
Собсно это просто заготовка.
Состояние Buf проверял через паузу в билдере.
 
Сверху