Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.11.2015, 11:14   #1
Flud
Новичок
Джуниор
 
Регистрация: 18.10.2010
Сообщений: 2
По умолчанию Dev-c++ добавление элементов управления для новичка

Всем привет, большая просьба помочь новичку, (до этого изучал vb6, 1c77) , ни как не могу понять как вставлять элемент управления, например текстовое поле.
Делаю проект на Dev-c++ 4.9.9.2 win32 application, (пустая форма), нашел пример формирования 2 кнопок с рисунками ...

Код:
/* файл button_owner.cpp */

#include <windows.h>
#include <windowsx.h>

LONG WINAPI WndProc(HWND, UINT, WPARAM,LPARAM);
void OnCommand (HWND, int, HWND,UINT);
void OnDestroy(HWND);
HBRUSH SetColorButton(HWND,HDC,HWND,INT);
void SetBtnColSub(HWND,char*,int,int,int,int);
HWND hPlay,hStop;
HINSTANCE hI;
int WINAPI WinMain(HINSTANCE hInst,HINSTANCE hPrevInst,
     LPSTR lpCmdLine,int nCmdShow)
 {
  HWND hwnd;
  MSG msg;
  WNDCLASS w;
  memset(&w, 0, sizeof(WNDCLASS));
  w.style = CS_HREDRAW | CS_VREDRAW;
  w.lpfnWndProc = WndProc;
  w.hInstance = hInst;
  w.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
  w.lpszClassName = "My Class";
  RegisterClass(&w);
  hI=hInst;
  hwnd = CreateWindow("My Class", "OWN BUTTON", WS_OVERLAPPEDWINDOW,
    200, 50, 220, 100, NULL, NULL, hInst, NULL);
  hPlay=CreateWindow("button", "",WS_CHILD | WS_VISIBLE | // сдесь я так понимаю вставляется кнопка
    BS_OWNERDRAW,20,20,60,30,hwnd,(HMENU)1001,hInst,NULL);
  hStop=CreateWindow("button", "",WS_CHILD | WS_VISIBLE | // и сдесь
    BS_OWNERDRAW,100,20,60,30,hwnd,(HMENU)1002,hInst,NULL);
  ShowWindow(hwnd,nCmdShow);
  UpdateWindow(hwnd);
  while(GetMessage(&msg,NULL,0,0))
   {
   TranslateMessage(&msg);
   DispatchMessage(&msg);
   }
  return msg.wParam;
 }

LONG WINAPI WndProc(HWND hwnd, UINT Msg, 
  WPARAM wParam, LPARAM lParam)
 {
 switch (Msg)
  {
  HANDLE_MSG(hwnd,WM_CTLCOLORBTN,SetColorButton);
  HANDLE_MSG (hwnd,WM_COMMAND,OnCommand);
  HANDLE_MSG (hwnd,WM_DESTROY,OnDestroy);
  default: return DefWindowProc(hwnd,Msg,wParam,lParam);
  }
  return 0;
 }

HBRUSH SetColorButton(HWND,HDC hdc,HWND,INT)
 {
 SetBkMode(hdc,TRANSPARENT);
 SetBtnColSub(hPlay,"play",0,0,60,30);
 SetBtnColSub(hStop,"stop",0,0,60,30);
 return CreateSolidBrush(RGB(90,90,90));
 }
 
void SetBtnColSub(HWND hw,char* res,int lt,int tp,int rt,int bm)
 {
 HDC hdc;
 HBITMAP hBitmap=(HBITMAP)LoadBitmap(hI,res);
 HBRUSH hBtnBrush=CreatePatternBrush(hBitmap);
 hdc=GetDC(hw);
 SelectObject(hdc, hBtnBrush);
 RoundRect(hdc,lt,tp,rt,bm,4,3);
 }

void OnCommand (HWND hwnd, int id, HWND,UINT)
 {
 if(id==1001)SetBtnColSub(hPlay,"play1",0,0,60,30);
 if(id==1002)SetBtnColSub(hStop,"stop1",0,0,60,30);
 }

void OnDestroy(HWND)
{
 PostQuitMessage(0);
 }
или дайте пример с комментами по вставке элементов управления.
Flud вне форума Ответить с цитированием
Старый 12.11.2015, 12:04   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Либо уберите BS_OWNERDRAW из кнопок (WS_CHILD и WS_VISIBLE оставьте), либо в вашей WndProc допишите обработчик WM_DRAWITEM сообщения.
waleri вне форума Ответить с цитированием
Старый 12.11.2015, 13:26   #3
Flud
Новичок
Джуниор
 
Регистрация: 18.10.2010
Сообщений: 2
По умолчанию

Спасибо, очень содержательно ... Но я просил чтоб в текст выше вставить текстовое поле ... Если из кнопок убрать BS_OWNERDRAW, тогда программа ругается на отсутствие одного аргумента. Если в WndProc дописать обработчик WM_DRAWITEM, нашел код в гугле...
Код:
case WM_DRAWITEM:
                 {
                         lpdis = (LPDRAWITEMSTRUCT) lParam; 
                         DrawOwnControl(lpdis);                        
                         break;
                 }
Программа также ругается, куда вставлять case WM_DRAWITEM ???
Flud вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Open Source - проект элементов управления для .NET и Mono UA3GDW C# (си шарп) 9 04.03.2013 12:52
Разные шрифты для элементов управления mfc sawyer1988 Visual C++ 0 19.06.2012 20:27
Массив элементов управления Рик Общие вопросы Delphi 6 03.03.2011 20:30
Добавление элементов управления при измененном масштабе Fierce Microsoft Office Excel 0 18.03.2010 21:35
Использование элементов управления akd2009 Microsoft Office Excel 2 30.10.2009 19:55