Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Хочу сделать интерфейс как у MSV.NET, Подскажите как реализовать! 
:(
    Опции темы
Texel
Дата 18.10.2003, 17:15 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Люди подскажите! Решил сделать следующую версию редактора карт к своей игрухе!
И интерфейс хочу сделать как у MSV.NET или как у AutoCAD2000, то есть много оконный, отдельное окно для свойств и других параметров. Подскажите как это все реализовать? Через MFC AppWizard с порождением класса представления главного окна от CFormView или через стандартное Win32 приложение(апликацию), тоесть писать всё вручную под Windows XP? Или подскажите где можно взять документацию по программированию под Windows XP!
  Вверх
Texel
Дата 19.10.2003, 15:16 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











И ещё подскажите пожалуйста, как работать с окном после установки параметра WS_EX_PALETTEWINDOW в функции создания окна CreateWindowEx, какие нужно задать свойства в классе окна, что бы эту панель можно было разместить на родительском окне, т.е чтобы оно стало частью интерфейса?
  Вверх
Texel
Дата 19.10.2003, 18:06 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Всё я понял что мне нужно! Я хочу создать CoolBar на WinApi, как и Visual Studio С++ хотябы? Чтобы это окно докировалось к главному окну...И ещё хочу узнать как размещать кнопочки и прочие в этом окне. Нашёл исходники но они для старого Буилдера...
Код
/*******************************************************            BuildRebar

*******************************************************/

HWND BuildRebar(HWND hwndParent)
{
HWND     hwndRebar = NULL;
LRESULT  lResult;

hwndRebar = CreateWindowEx(   WS_EX_TOOLWINDOW,
                             REBARCLASSNAME,
                             NULL,
                             WS_VISIBLE |
                                WS_BORDER |
                                WS_CHILD |
                                WS_CLIPCHILDREN |
                                WS_CLIPSIBLINGS |
                                RBS_VARHEIGHT |
                                RBS_BANDBORDERS |
                                CCS_NODIVIDER |
                                CCS_NOPARENTALIGN |
                                ((g_wSide & 0x01) ? CCS_VERT : 0) | //g_wSide is odd if this is a vertical bar
                                0,
                             0,
                             0,
                             200,
                             100,
                             hwndParent,
                             (HMENU)ID_REBAR,
                             g_hInst,
                             NULL);

if(hwndRebar)
  {
  REBARINFO      rbi;
  HIMAGELIST     himlRebar;
  HICON          hIcon;
  REBARBANDINFO  rbbi;
  HWND           hwndChild;
  RECT           rc;
  TCHAR          szString[64];

  //set up the ReBar
  himlRebar = ImageList_Create(32, 32, ILC_COLORDDB | ILC_MASK, 1, 0);
  hIcon = LoadIcon(g_hInst, MAKEINTRESOURCE(IDI_ICON1));

  ImageList_AddIcon(himlRebar, hIcon);

  rbi.cbSize  = sizeof(rbi);
  rbi.fMask   = RBIM_IMAGELIST;
  rbi.himl    = himlRebar;
  lResult = SendMessage(hwndRebar, RB_SETBARINFO, 0, (LPARAM)&rbi);

  //add a band that contains a combobox
  hwndChild = CreateWindowEx(   0,
                                TEXT("combobox"),
                                NULL,
                                WS_VISIBLE |
                                   WS_CHILD |
                                   WS_TABSTOP |
                                   WS_VSCROLL |
                                   WS_CLIPCHILDREN |
                                   WS_CLIPSIBLINGS |
                                   CBS_AUTOHSCROLL |
                                   CBS_DROPDOWN |
                                   0,
                                0,
                                0,
                                100,
                                200,
                                hwndRebar,
                                (HMENU)ID_COMBOBOX,
                                g_hInst,
                                NULL);

  //add some stuff to the combobox
  {
  int   i;

  SendMessage(hwndChild, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), MAKELPARAM(TRUE, 0));
   
  for(i = 0; i < 25; i++)
     {
     wsprintf(szString, TEXT("Item %d"), i + 1);
     SendMessage(hwndChild, CB_ADDSTRING, 0, (LPARAM)szString);
     }
  }
   
  GetWindowRect(hwndChild, &rc);
   
  ZeroMemory(&rbbi, sizeof(rbbi));
  rbbi.cbSize       = sizeof(REBARBANDINFO);
  rbbi.fMask        = RBBIM_SIZE |
                       RBBIM_CHILD |
                       RBBIM_CHILDSIZE |
                       RBBIM_ID |
                       RBBIM_STYLE |
                       RBBIM_TEXT |
                       RBBIM_BACKGROUND |
                       RBBIM_IMAGE |
                       0;
   
  rbbi.cxMinChild   = rc.right - rc.left;
  rbbi.cyMinChild   = rc.bottom - rc.top;
  rbbi.cx           = 100;
  rbbi.fStyle       = RBBS_CHILDEDGE |
                       RBBS_FIXEDBMP |
                       RBBS_GRIPPERALWAYS |
                       0;
  rbbi.wID          = ID_COMBOBOX;
  rbbi.hwndChild    = hwndChild;
  rbbi.lpText       = TEXT("ComboBox");
  rbbi.cch          = 2;
  rbbi.hbmBack      = LoadBitmap(g_hInst, MAKEINTRESOURCE(IDB_BACKGROUND));
  rbbi.iImage       = 0;

  lResult = SendMessage(hwndRebar, RB_INSERTBAND, (WPARAM)-1, (LPARAM)(LPREBARBANDINFO)&rbbi);

  //add a band that contains a button
  hwndChild = CreateWindowEx(   0,
                                TEXT("button"),
                                TEXT("Button"),
                                WS_CHILD |
                                   BS_PUSHBUTTON |
                                   0,
                                0,
                                0,
                                100,
                                50,
                                hwndRebar,
                                (HMENU)ID_BUTTON,
                                g_hInst,
                                NULL);
   
  GetWindowRect(hwndChild, &rc);
   
  ZeroMemory(&rbbi, sizeof(rbbi));
  rbbi.cbSize       = sizeof(REBARBANDINFO);
  rbbi.fMask        = RBBIM_SIZE |
                       RBBIM_CHILD |
                       RBBIM_CHILDSIZE |
                       RBBIM_ID |
                       RBBIM_STYLE |
                       RBBIM_TEXT |
                       RBBIM_BACKGROUND |
                       0;
  rbbi.cxMinChild   = rc.right - rc.left;
  rbbi.cyMinChild   = rc.bottom - rc.top;
  rbbi.cx           = 100;
  rbbi.fStyle       = RBBS_CHILDEDGE |
                       RBBS_FIXEDBMP |
                       RBBS_GRIPPERALWAYS |
                       0;
  rbbi.wID          = ID_BUTTON;
  rbbi.hwndChild    = hwndChild;
  rbbi.lpText       = TEXT("Button");
  rbbi.hbmBack      = LoadBitmap(g_hInst, MAKEINTRESOURCE(IDB_BACKGROUND));


  lResult = SendMessage(hwndRebar, RB_INSERTBAND, (WPARAM)-1, (LPARAM)(LPREBARBANDINFO)&rbbi);
  }

MoveRebar(hwndParent);

return hwndRebar;
}
/******************************************************

  MoveRebar()
   
******************************************************/

void MoveRebar(HWND hWnd)
{
RECT  rc,
     rcRebar;
int   x,
     y,
     cx,
     cy;

GetClientRect(hWnd, &rc);
GetWindowRect(GetDlgItem(hWnd, ID_REBAR), &rcRebar);

switch(g_wSide)
  {
  default:
  case TOP:
     //align the rebar along the top of the window
     x = 0;
     y = 0;
     cx = rc.right - rc.left;
     cy = rc.bottom - rc.top;
     break;

  case LEFT:
     //align the rebar along the left side of the window
     x = 0;
     y = 0;
     cx = rcRebar.right - rcRebar.left;
     cy = rc.bottom - rc.top;
     break;

  case BOTTOM:
     //align the rebar along the bottom of the window
     x = 0;
     y = rc.bottom - (rcRebar.bottom - rcRebar.top);
     cx = rc.right - rc.left;
     cy = rcRebar.bottom - rcRebar.top;
     break;

  case RIGHT:
     //align the coolbar along the right side of the window
     x = rc.right - (rcRebar.right - rcRebar.left);
     y = 0;
     cx = rcRebar.right - rcRebar.left;
     cy = rc.bottom - rc.top;
     break;
  }

MoveWindow( GetDlgItem(hWnd, ID_REBAR),
           x,
           y,
           cx,
           cy,
           TRUE);
}

Появился ли в С++ .NET какой-то специальный класс или свойство, которой позволяет сделать такое докирующееся окошко?
Только просьба если хоть что-нибудь знаете то скажите! Плиз! Хелп! Ахтунг! Хильфен мир зи битте!

  Вверх
mr.DUDA
Дата 20.10.2003, 22:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 25
Всего: 232



Глянь вот сюда:
http://forum.vingrad.ru/index.php?act=ST&f=24&t=11916
это я специально для тех, кому нужны toolbar'ы/coolbar'ы и прочие скины, выкачал с китайского вареза крякнутую версию кульной питерской либы для User интерфейса.


--------------------
user posted image
PM MAIL WWW   Вверх
Texel
Дата 21.10.2003, 18:18 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Ладно посмотрю! Спасибо!
  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0527 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.