• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Работа С Формой

  • Автор темы alexbad
  • Дата начала
A

alexbad

Добрый день. В программировании я не опытен и с формами в студии работать не приходилось, а тут пришлось. MS Visual Studio 2008, запнулся на одном из шагов.
Вот я создал форму с помощью Toolbox. В файле .h у меня появился namespace, класс формы, "задавание" всех элементов из тулбокса. Далее я в файле .cpp создал функцию WinMain. И вот что дальше делать не понимаю. Для начала мне достаточно чтобы программа просто выводила форму, которую я сделал на экран. Как это сделать?
Application::Run не работает
А ShowWindow и ShowDialog я не понимаю как использовать.
 
L

lazybiz

HWND WINAPI CreateDialog( HINSTANCE hInstance, LPCTSTR lpTemplate, HWND hWndParent, DLGPROC lpDialogFunc );
hInstance - это то что в WinMain первым параметром идет.
lpTemplate = MAKEINTRESOURCE( идентификатор формы )
hWndParent - родительское окно. (необязательный параметр, можно написать NULL)
lpDialogFunc - функция обработки событий окна ( )

Источник:
 
A

alexbad

Из того что Вы мне сообщили я написал код.Почему он не работает??? Несколько дней сижу ломаю голову над такой мелочью как просто вывод формы, которую я сдизайнил в Toolbox на экран. Подскажите, пожалуйста... А лучше просто напишите эту заветную пару строчек кода...

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
HWND hWnd;
hWnd = CreateDialog (hInstance, LPCTSTR("Form1"), 0, NULL) ;
ShowWindow(hWnd,SW_SHOW);
while (1);
}




В файле .h написано вот такое




namespace AVVt {
using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;

/// <summary>
/// Summary for AVVt
///
/// WARNING: If you change the name of this class, you will need to change the
/// 'Resource File Name' property for the managed resource compiler tool
/// associated with all .resx files this class depends on. Otherwise,
/// the designers will not be able to interact properly with localized
/// resources associated with this form.
/// </summary>
public ref class Form1 : public System::Windows::Forms::Form
{
public:
Form1(void)
{
InitializeComponent();

//
//TODO: Add the constructor code here
//
}

protected:
/// <summary>
/// Clean up any resources being used.
/// </summary>
~Form1()
{
if (components)
{
delete components;
}
}

...................................................
...................................................
.................................................
 
A

alexbad

Это же пипец!!! Как форму вывести на экран? Есть класс в файле .h, куча нужной и ненужной документации... А КАК ПРОСТО ВЫВЕСТИ СДИЗАЙНЕННУЮ ФОРМУ НА ЭКРАНН????????????????
 
L

lazybiz

Попробуй так:
C++:
INT_PTR CALLBACK dialog_proc( HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam )
{
switch ( uMsg ) {
case WM_DESTROY:
PostQuitMessage( 0 );
return TRUE;
}

return FALSE;
}

int APIENTRY WinMain( HINSTANCE hInst, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
MSG		msg;
HWND	hWnd;

hWnd = CreateDialog( hInstance, LPCTSTR("Form1"), 0, dialog_proc );
ShowWindow( hWnd, SW_SHOW );

while ( GetMessage( &msg, NULL, 0, 0 ) ) {
TranslateMessage( &msg );
DispatchMessage( &msg );
}
return 0;
}

А вообще я бы тебе посоветовал заместо LPCTSTR("Form1") передавать идентификатор формы.
Кстати ресурс подключается, компилируется, линкуется?
 
A

alexbad

Спасибо. Позже попробую, т.к. пока возможности не имею.
Да, компилируется, линкуется.

А то что вместо LPCTSTR("Form1") надо идентификатор формы это я понимаю. Но как ид-р получить? Как получить идентификатор формы, которую я сам сдизайнил в toolbox'е? Через MAKEINTRESOURCE я не понимаю как это можно сделать
 
A

alexbad

Форма всё равно не показывается....
 
A

AlixBZ

Создавайте проект "Windows Forms Application" и нажимайте F5.
Иначе читайте книжки.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!