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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.04.2011, 00:23   #1
Ksardas13
Форумчанин
 
Регистрация: 24.03.2011
Сообщений: 120
По умолчанию Расскажите немного о Visual C++ (в двух словах)

До этого прогал в Паскале/Делфи, затем пересел на Dev-Cpp(щас в С++ на уровне "средний пользователь").
Сейчас появилась (таки наконец!) необходимость пересесть на Visual C++. Поставил 2008 версию профешионал едишион(что нашлась под рукой). И ох как "обрадовался" изобилию кнопочек, файликов и рюшечек...

(Щас чуствую меня пошлют гуглить... но надеюсь что среди вас найдётся добрая душа, которая сэкономит мне пару часов и пучок нервов)))

Кто поможет начинающему и в двух словах расскажет как создать диалоговое окно с кнопкой "Нажать" и чтоб после этого название кнопки изменилось на "Hello, World!"? Или ткнёт моськой в "правильную" статью по этому делу(но чтоб поменьше лишнего... хочу форму,кнопку и процедуру hello_world() для это кнопки... дальше уже сам ползти буду)?
Буду громаднейше признателен!...
Ksardas13 вне форума Ответить с цитированием
Старый 04.04.2011, 01:19   #2
zotox
Форумчанин
 
Регистрация: 09.09.2008
Сообщений: 395
По умолчанию

Код:
Код:
#include <windows.h>
#define id_button_1 101

int init(HINSTANCE hInstance);
int get_messages();
LRESULT CALLBACK proc_form_connect(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);

char hwnd_title[] = "hello world";
HWND hwnd_handle;
HWND btn;

int WINAPI WinMain(HINSTANCE hInstance,
                   HINSTANCE hPrevInstance,
                   LPSTR lpCmdLine,
                   int nCmdShow)
{
	init(hInstance);
	get_messages();

	return 0;
}

int init(HINSTANCE hInstance)
{
	WNDCLASSEX wcex;

	wcex.cbSize         = sizeof(WNDCLASSEX);
	wcex.style          = CS_HREDRAW | CS_VREDRAW;
	wcex.lpfnWndProc    = proc_form_connect;
	wcex.cbClsExtra     = 0;
	wcex.cbWndExtra     = 0;
	wcex.hInstance      = hInstance;
	wcex.hIcon          = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_APPLICATION));
	wcex.hCursor        = LoadCursor(NULL, IDC_ARROW);
	wcex.hbrBackground  = (HBRUSH)(COLOR_WINDOW+1);
	wcex.lpszMenuName   = 0;
	wcex.lpszClassName  = hwnd_title;
	wcex.hIconSm        = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_APPLICATION));
	RegisterClassEx(&wcex);

	hwnd_handle =  CreateWindowEx(NULL, hwnd_title, hwnd_title,
								  WS_OVERLAPPEDWINDOW, 0, 0, 500, 500,
								  NULL, NULL, hInstance, NULL);
	ShowWindow(hwnd_handle, 1);
    UpdateWindow(hwnd_handle);

	btn = CreateWindowA("button", "Click pls!", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON | WS_TABSTOP, 5, 30, 90, 24,hwnd_handle,(HMENU)id_button_1,(HINSTANCE)GetWindowLong(hwnd_handle,GWL_HINSTANCE),NULL);

    return 0;
}

int get_messages()
{
	MSG msg;
	while (GetMessage(&msg, 0, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
	return 0;
}

LRESULT CALLBACK proc_form_connect(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)
    {
		case WM_COMMAND:
		{
			switch(LOWORD(wParam))
			{
				case id_button_1:
					SendMessage(btn, WM_SETTEXT, 0, (LPARAM)"Clicked");
					break;
			}
			break;
		}

		case WM_PAINT:
		{
			HDC hdc;
			PAINTSTRUCT ps;
			hdc = BeginPaint(hWnd, &ps);
			TextOutA(hdc, 5, 5, "Кнопка:", strlen("Кнопка:"));
			EndPaint(hWnd, &ps);
			break;
		}

		case WM_DESTROY:
		{
			PostQuitMessage(0);
			break;
		}

		default:
		{
			return DefWindowProc(hWnd, message, wParam, lParam);
			break;
		}
	}
}
Если хочешь поставить вместо кнопки edit подобный - делается все через ту же функцию: CreateWindow. Если хочешь изменить текст в edit - используется тот же SendMessage. (да и вообще любые действия с windows контролами - через SendMessage производятся)
Если хочется чтобы был посовременней стиль кнопок - прикручивай манифест.
Если хочется свои контролы (кнопки, едиты и тому подобное) - рисуй их сам, ключевые слова по этой теме: gdi, регионы.
zotox вне форума Ответить с цитированием
Старый 04.04.2011, 01:30   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

если хотите визуальный редактор как в Делфи, то вы не туда попали, вам или в билдер или в Qt(лучше второе)

ну или переходить на шарп(C++ CLI(чтото среднее между C# и C++) очень не советую, дурной язык)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 04.04.2011, 06:05   #4
Ksardas13
Форумчанин
 
Регистрация: 24.03.2011
Сообщений: 120
По умолчанию

Мг, даже так.
А тогда сопутствующий вопрос - в чём отличия(плюсы и минусы... с чем стоит связываться, с чем нет) ВижуалС от БилдерС и от Qt(можно полное название? впервые слышу)))
Просто для "низкого" уровня меня устраивает Dev-Cpp(в крайнем случае присобачиваем движок типа Алегро и дописываем свои модули мега интерфейсов), а хочется кок раз что нибудь простенькое типа Делфей, чтобы меньше времени тратить на интерфейс, больше уделяя внимания собственно назначению программы.))
А вообще спасибо, пойду гуглить.))
Ksardas13 вне форума Ответить с цитированием
Старый 04.04.2011, 06:19   #5
Sparkman
220400
Форумчанин
 
Аватар для Sparkman
 
Регистрация: 21.05.2010
Сообщений: 726
По умолчанию

Я бы посоветовал C#, довольно таки легкий в освоении язык. К тому же он активно продвигается в массы и литературы на него писано навалом, в MSDN все про него есть и на русском языке тоже.
Cерьёзной помощи не ждите - помогаю в перерывах на "перекур".
Не существует ничего невозможного для человека, который не собирается ничего делать сам.
Не учите человека, если вы не его учитель.
Sparkman вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подсчет букв в словах (Си) N.o.n.a.m.e Помощь студентам 4 12.08.2010 17:01
Инверсия в словах Lag Общие вопросы C/C++ 4 02.05.2010 15:52
в двух словах, зацените, подскажите и т.д. ... DelphiForever Софт 0 02.11.2007 11:16
В двух словах скажите как с Tdatabase подключ. к SQL серверу alsq БД в Delphi 6 16.03.2007 10:47