информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Портрет посетителяАтака на InternetГде водятся OGRы
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / beginners
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Господа, будьте снисходительны, не бросайтесь сразу штрафовать за, как вам кажется, глупые вопросы - beginners на то и beginners.
Сдается мне, что еще в 2х строчках не совсем правильно 23.10.06 18:34  Число просмотров: 2865
Автор: Neznaika <Alex> Статус: Member
<"чистая" ссылка>
1) if(!RegisterClass(&wc1))
Скорее всего, должно быть что-то вроде if(!RegisterClass(&wc1)) return ( -1 );

2) while(GetMessage(&msg, NULL, 0, 0));
Здесь точку с запятой - надо убрать
<beginners>
Проверте код. 21.10.06 18:58  
Автор: ben81 Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Господа начал изучение С++ по книге, самый второй пример программы отказывается давать адекватные результаты. Приложение компилируется и компонуется без ошибок. Если кому не трудно посмотрите профессиональным глазом где здесь ошибка. Моё мнение - отсутствие "the App" .

#include "stdafx.h"
#include "Windows.h"


LRESULT CALLBACK
WindowFunc(HWND, UINT, WPARAM, LPARAM);

char *szWinName = "Простое окно";

int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
HWND hWnd;
MSG msg;
WNDCLASS wc1;
wc1.hInstance = hInstance;
wc1.lpszClassName = szWinName;
wc1.lpfnWndProc = WindowFunc;
wc1.style = 0;
wc1.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wc1.hCursor = LoadCursor(NULL, IDC_ARROW);
wc1.lpszMenuName = NULL;
wc1.cbClsExtra = 0;
wc1.cbClsExtra = 0;
wc1.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
if(!RegisterClass(&wc1))

hWnd = CreateWindow(szWinName, "Win32 API приложение", WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
HWND_DESKTOP, NULL, hInstance, NULL);
ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);
return 0;
while(GetMessage(&msg, NULL, 0, 0));
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}


LRESULT CALLBACK
WindowFunc(HWND hWnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
{
switch(iMsg)
{
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, iMsg, wParam, lParam);
}
return 0;
}
выход из программы происходит до создания цикла-обработчика сообщений. Так и надо ? ;) return 0; 22.10.06 12:23  
Автор: kstati <Евгений Борисов> Статус: Elderman
<"чистая" ссылка>
return 0; 23.10.06 00:19  
Автор: ben81 Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Евгений, как я могу посмотреть результаты работы. Даже если я убираю строку "return 0;" окна всё равно не видно, конечно может быть я задаю глупые вопросы, но сам разобраться пока не могу. Спасибо за помощь !!!
Не реально ??? 23.10.06 22:57  
Автор: ben81 Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Джентльмены ! Я уверен что решение обязательно найдётся. Исправил две ошибки указанные в предыдущем сообщении - результата по прежнему нет. Спасибо за помощь.
Еще дважды инициализируется поле cbClsExtra и ни разу cbWndExtra 24.10.06 01:30  
Автор: amirul <Serge> Статус: The Elderman
Отредактировано 24.10.06 01:32  Количество правок: 1
<"чистая" ссылка>
> Джентльмены ! Я уверен что решение обязательно найдётся.
> Исправил две ошибки указанные в предыдущем сообщении -
> результата по прежнему нет. Спасибо за помощь.

Во избежание таких ошибок частенько структуру перед инициализацией заполняют нулями (memset). Короче, вот рабочий вариант:
#include "Windows.h" 

LRESULT CALLBACK 
WindowFunc(HWND, UINT, WPARAM, LPARAM); 

char *szWinName = "Простое окно"; 

int WINAPI WinMain(HINSTANCE hInstance, 
				   HINSTANCE hPrevInstance, 
				   LPSTR lpCmdLine, 
				   int nCmdShow) 
{ 
	HWND hWnd; 
	MSG msg; 
	WNDCLASS wc1; 
	wc1.hInstance = hInstance; 
	wc1.lpszClassName = szWinName; 
	wc1.lpfnWndProc = WindowFunc; 
	wc1.style = 0; 
	wc1.hIcon = LoadIcon(NULL, IDI_APPLICATION); 
	wc1.hCursor = LoadCursor(NULL, IDC_ARROW); 
	wc1.lpszMenuName = NULL; 
	wc1.cbClsExtra = 0; 
	wc1.cbWndExtra = 0; 
	wc1.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); 
	if(!RegisterClass(&wc1)) 
		return 0;

	hWnd = CreateWindow(szWinName, "Win32 API приложение", WS_OVERLAPPEDWINDOW, 
	CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, 
	HWND_DESKTOP, NULL, hInstance, NULL); 
	ShowWindow(hWnd, nCmdShow); 
	UpdateWindow(hWnd);

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


LRESULT CALLBACK 
WindowFunc(HWND hWnd, UINT iMsg, WPARAM wParam, LPARAM lParam) 
{ 
	switch(iMsg) 
	{ 
	case WM_DESTROY: 
		PostQuitMessage(0); 
		break; 
	default: 
		return DefWindowProc(hWnd, iMsg, wParam, lParam); 
	} 
	return 0; 
}

---

--------------

Да, и theApp здесь ни при чем. Это не MFC приложение
Благодарю !!! 24.10.06 21:49  
Автор: ben81 Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Большое вам спасибо ! Вот что может произойти если не до конца разбираться в теме ... Ещё раз спасибо, досвидания.
Сдается мне, что еще в 2х строчках не совсем правильно 23.10.06 18:34  
Автор: Neznaika <Alex> Статус: Member
<"чистая" ссылка>
1) if(!RegisterClass(&wc1))
Скорее всего, должно быть что-то вроде if(!RegisterClass(&wc1)) return ( -1 );

2) while(GetMessage(&msg, NULL, 0, 0));
Здесь точку с запятой - надо убрать
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach