powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Создание диалогового окна в Win32 API
11 сообщений из 11, страница 1 из 1
Создание диалогового окна в Win32 API
    #33587407
Hamilion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здраствуйте.
Пытаюсь создать по описанному ниже алгоритму диалоговое окно, но функция DialogBox выдает все время -1. Сам я занимаюсь программирование недавно поэтому не судите строго.
1. Создал файл ресурса содержащий диалог с ID: IDD_DIALOG1
2. Объявил простые и предопределенные переменные:
Код: plaintext
1.
2.
#define IDD_DIALOG1  300 
            HINSTANCE hInst;
            hInst = hInstance;
3. Далее пытаюсь отобразить диалог:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
 ...
             case WM_COMMAND :
	      switch( LOWORD(wParam) )
	      {
	          case IDC_BUTTON:
		а = DialogBox(hInst, (LPCTSTR)IDD_DIALOG1, hWnd, (DLGPROC)AboutDlgProc);
		return  0 ;
	       }
             ...
, но переменная а всегда равна -1.
Что я не сделал или сделал не так?
...
Рейтинг: 0 / 0
Создание диалогового окна в Win32 API
    #33587438
Hamilion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здраствуйте.
Пытаюсь создать по описанному ниже алгоритму диалоговое окно, но функция DialogBox выдает все время -1. Сам я занимаюсь программирование недавно поэтому не судите строго.
1. Создал файл ресурса содержащий диалог с ID: IDD_DIALOG1
2. Объявил простые и предопределенные переменные:
Код: plaintext
1.
2.
#define IDD_DIALOG1  300 
            HINSTANCE hInst;
            hInst = hInstance;
3. Далее пытаюсь отобразить диалог:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
 ...
             case WM_COMMAND :
	      switch( LOWORD(wParam) )
	      {
	          case IDC_BUTTON:
		а = DialogBox(hInst, (LPCTSTR)IDD_DIALOG1, hWnd, (DLGPROC)AboutDlgProc);
		return  0 ;
	       }
             ...
, но переменная а всегда равна -1.
Что я не сделал или сделал не так?
...
Рейтинг: 0 / 0
Создание диалогового окна в Win32 API
    #33587484
c/cpp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Создание диалогового окна в Win32 API
    #33587500
Hamilion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
По Педзольду и сделал.
...
Рейтинг: 0 / 0
Создание диалогового окна в Win32 API
    #33587507
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во первых, добавь проверку на ошибки:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
if (a == - 1 ) {
    	LPVOID lpMsgBuf;

	FormatMessage(
		FORMAT_MESSAGE_ALLOCATE_BUFFER |
		FORMAT_MESSAGE_FROM_SYSTEM |
		FORMAT_MESSAGE_IGNORE_INSERTS,
		NULL,
		GetLastError(),
		MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
		(LPTSTR) &lpMsgBuf,
		 0 ,
		NULL );
	MessageBox(hWnd, lpMsgBuf, "Error", MB_ICONEXCLAMATION | MB_OK);
	LocalFree( lpMsgBuf );
}
Будешь знать что неправильно.

А во вторых, читай документацию внимательнее. ID ресурса надо прогонять через макрос MAKEINTRESOURCE а не просто приводить тип.
Код: plaintext
DialogBox(hinst, MAKEINTRESOURCE(IDD_DIALOG1), hWnd, (DLGPROC)AboutDlgProc);
...
Рейтинг: 0 / 0
Создание диалогового окна в Win32 API
    #33587512
Hamilion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В Москве из зоопарка сбежал слон.
Звонок в милицию:
-Здраствуйте, у меня в огороде большая серая мышь рвет хвостом капусту...
-Ну и что она с ней делает?
-Ой, Вы не поверите...
:)
...
Рейтинг: 0 / 0
Создание диалогового окна в Win32 API
    #33587530
Hamilion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White OwlВо первых, добавь проверку на ошибки:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
if (a == - 1 ) {
    	LPVOID lpMsgBuf;

	FormatMessage(
		FORMAT_MESSAGE_ALLOCATE_BUFFER |
		FORMAT_MESSAGE_FROM_SYSTEM |
		FORMAT_MESSAGE_IGNORE_INSERTS,
		NULL,
		GetLastError(),
		MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
		(LPTSTR) &lpMsgBuf,
		 0 ,
		NULL );
	MessageBox(hWnd, lpMsgBuf, "Error", MB_ICONEXCLAMATION | MB_OK);
	LocalFree( lpMsgBuf );
}
Будешь знать что неправильно.

Попробовал указанный White Owl способ- выдает ошибку: Укaзaннoe имя pecypca нe нaйдeнo в фaйлe oбpaзa.
А насчет: White OwlID ресурса надо прогонять через макрос MAKEINTRESOURCE а не просто приводить тип.
Код: plaintext
DialogBox(hinst, MAKEINTRESOURCE(IDD_DIALOG1), hWnd, (DLGPROC)AboutDlgProc);
то же попробовал тоже индейская изба
...
Рейтинг: 0 / 0
Создание диалогового окна в Win32 API
    #33587578
Hamilion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
К стати тут ошибуличка
Код: plaintext
MessageBox(hWnd, lpMsgBuf, "Error", MB_ICONEXCLAMATION | MB_OK);
Код: plaintext
[color=red]error C2664: 'MessageBoxA' : cannot convert parameter  2  from 'void *' to 'const char *'[/color]
надо так:
Код: plaintext
MessageBox(hWnd, (LPTSTR)lpMsgBuf, "Error", MB_ICONEXCLAMATION | MB_OK);
...
Рейтинг: 0 / 0
Создание диалогового окна в Win32 API
    #33587590
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hamilion Укaзaннoe имя pecypca нe нaйдeнo в фaйлe oбpaзa. Ну значит забыл прилинковать ресурс, только и всего.
...
Рейтинг: 0 / 0
Создание диалогового окна в Win32 API
    #33587595
Hamilion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Фу... блин приехали - пора открывать раздел "тупые ошибки ламья, которые не одному гуру не "по зубам"".
Когда я объявил #define IDD_DIALOG1 300, я не учел что в системе у него может быть другое значение, а именно глянув, совершено случайно, в "Resource Symbols", я обнаружил там IDD_DIALOG1 101... Эврика!!... поменяв 300 на 101 исправил таки ошибку.
...
Рейтинг: 0 / 0
Создание диалогового окна в Win32 API
    #33588428
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МОжет быть в диалоге нет кнопки c IDOK ?
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Создание диалогового окна в Win32 API
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]