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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.01.2012, 12:22   #1
pranki
 
Регистрация: 01.01.2012
Сообщений: 4
По умолчанию Не отображается окошко WinApi

Проблема заключается в следующем. Проект компилируется все нормально , оповещений об ошибках нет а окно которое должно появиться не появляется или не отображается. хотя в процессах висит .exe приложения
в чем может быть проблема?(
Код:
#include <windows.h>
#include "KWnd.h"





LRESULT CALLBACK WndProc(HWND , UINT , WPARAM , LPARAM );
//==================================================================
int WINAPI WinMain(HINSTANCE hIstance , HINSTANCE hPrevInstance , LPSTR lpCmdLine , int nCmdShow )
{
	MSG msg ;
	KWnd mainWnd("A Hello2 application" , hIstance , nCmdShow , WndProc );

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


LRESULT CALLBACK WndProc(HWND hWnd , UINT uMsg , WPARAM wParam , LPARAM lParam)
{
	HDC hDC;
	PAINTSTRUCT ps;
	RECT rect ;
	int userReply;

	switch (uMsg)
	{
	case WM_PAINT:
		hDC = BeginPaint(hWnd , &ps);
		DrawText(hDC , "Hello . World!!", -1 , &rect , DT_SINGLELINE | DT_CENTER | DT_VCENTER);
		EndPaint(hWnd, &ps);
		break;

	case WM_CLOSE:
		userReply = MessageBox(hWnd,"Are you sure?" ,
			"", MB_YESNO | MB_ICONSTOP );
		if (IDYES  == userReply)
			DestroyWindow(hWnd);
		break;

	case WM_DESTROY:
		PostQuitMessage(0);
		break;
	default:
		return DefWindowProc(hWnd , uMsg , wParam ,lParam);
	}


	return 0 ;

}
Код:
#include "windows.h"

class KWnd {


public:
	KWnd(LPCTSTR windowName, HINSTANCE hInst , int cmdShow,
		LRESULT (WINAPI *pWndProc) (HWND, UINT , WPARAM , LPARAM),
		LPCTSTR menuName = NULL,
		int x = CW_USEDEFAULT , int y = 0 ,
		int width = CW_USEDEFAULT , int height = 0 ,
		UINT classStyle = CS_HREDRAW | CS_VREDRAW ,
		DWORD windowStyle = WS_OVERLAPPEDWINDOW ,
		HWND hParent =  NULL	);

	HWND GetHWnd() {return hWnd; }

protected:
	HWND hWnd;
	WNDCLASSEX wc;


};
Код:
#include "KWnd.h"
#include "windows.h"
KWnd::KWnd(LPCTSTR windowName, HINSTANCE hInst , int cmdShow , 
	LRESULT (WINAPI *pWndProc)(HWND, UINT , WPARAM, LPARAM),
	LPCTSTR menuName , int x , int y , int width , int height,
	UINT classStyle , DWORD windowStyle , HWND hParent)
{

	char szClassName[] = "KWndClass";

	wc.cbSize = sizeof(wc);                       
	wc.style =  classStyle;        
	wc.lpfnWndProc = pWndProc;                   
	wc.cbClsExtra = 0 ;
	wc.cbWndExtra = 0 ;
	wc.hInstance = hInst ; 
	wc.hIcon = LoadIcon(NULL, IDI_WARNING);        
	wc.hCursor = LoadCursor(NULL, IDC_WAIT);     
	wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); 
	wc.lpszClassName = szClassName;
	wc.lpszMenuName = menuName ;                        
	wc.hIconSm = LoadIcon(NULL , IDI_QUESTION);


	//регистрируем класс окна 
	if (!RegisterClassEx(&wc))
	{
		char msg[100] = "Cannot register class:" ;
		strcat(msg , szClassName) ;
		MessageBox(NULL, msg , "Error", MB_OK);
		return;
	}

	// Создаем окно
	hWnd = CreateWindow(szClassName , windowName , windowStyle , x ,y ,width , height , hParent ,(HMENU)NULL , hInst , NULL );


	if (!hWnd)
	{
		char text[100] = "Cannot create windows: "; 
		strcat(text, windowName);
		MessageBox(NULL , text , "Error" , MB_OK);
		return;
	}


}

Последний раз редактировалось pranki; 03.01.2012 в 13:20.
pranki вне форума Ответить с цитированием
Старый 03.01.2012, 12:25   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

в том что код не верен.
стоит его показать.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 03.01.2012, 15:29   #3
pranki
 
Регистрация: 01.01.2012
Сообщений: 4
По умолчанию

все. прикрепил код
pranki вне форума Ответить с цитированием
Старый 03.01.2012, 16:18   #4
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

Надо или WS_VISIBLE в стиле окна, или вызывать ShowWindow.
Somebody вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сайт не отображается в IE и Opera. Отображается только в FireFox. Roman_K HTML и CSS 3 03.02.2011 22:32
Бегающее окошко. Gon Фриланс 5 24.06.2009 17:05
Фома на WinAPI не отображается N!ckeL Win Api 5 23.02.2009 16:06
Всплывающее окошко Micha Помощь студентам 3 30.03.2008 13:58
Плавающее окошко Маркъ Общие вопросы Delphi 2 02.04.2007 18:42