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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.09.2010, 21:25   #1
m9yt
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 108
По умолчанию Первое приложение на WinAPI

Всем привет. Написал по методичке код программы, даже сверил его с кодом при создании обычного решения. В итоге окно просто не появляется при запуске. Вот код:
Код:
#include <windows.h>

wchar_t szClassName[]=L"MainWindow";
wchar_t szTitle[]=L"Программа 1-1";
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow);

void MyRegisterClass(HINSTANCE hInstance)
{
	WNDCLASS w;
	memset( &w, 0, sizeof (WNDCLASS) );
	w.style					= CS_HREDRAW | CS_VREDRAW;
	w.lpfnWndProc			= WndProc;
	w.hInstance				= hInstance;
	w.hbrBackground			= (HBRUSH)GetStockObject(WHITE_BRUSH);
	w.lpszClassName			= L"MyClass";
	w.hIcon                 = LoadIcon(NULL, IDI_APPLICATION);
	w.hCursor				= LoadCursor(NULL,IDC_IBEAM);
	RegisterClass(&w);
}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
	MSG msg;
	MyRegisterClass(hInstance);
	if (!InitInstance (hInstance, nCmdShow))
	{
		return FALSE;
	}
	while (GetMessage(&msg, NULL, 0, 0))
	{
			TranslateMessage(&msg);
			DispatchMessage(&msg);
	}
	return (int) msg.wParam;
}

LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) 
{
	switch(message) {
		case WM_DESTROY:
			PostQuitMessage(0);
			return 0;
		default:
			return DefWindowProc(hwnd,message,wParam,lParam);
		}
}

BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
   HWND hWnd;

   //hInst = hInstance; // Сохранить дескриптор экземпляра в глобальной переменной

   hWnd = CreateWindow(szClassName, szTitle, WS_OVERLAPPEDWINDOW,
      CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);

   if (!hWnd)
   {
      return FALSE;
   }

   ShowWindow(hWnd, nCmdShow);
   UpdateWindow(hWnd);

   return TRUE;
}
m9yt вне форума Ответить с цитированием
Старый 03.09.2010, 22:02   #2
Syuf
Форумчанин
 
Аватар для Syuf
 
Регистрация: 02.02.2010
Сообщений: 599
По умолчанию

Цитата:
wchar_t szClassName[]=L"MainWindow";
wchar_t szTitle[]=L"Программа 1-1";
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow);

void MyRegisterClass(HINSTANCE hInstance)
{
WNDCLASS w;
memset( &w, 0, sizeof (WNDCLASS) );
w.style = CS_HREDRAW | CS_VREDRAW;
w.lpfnWndProc = WndProc;
w.hInstance = hInstance;
w.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH) ;
w.lpszClassName = L"MyClass";
w.hIcon = LoadIcon(NULL, IDI_APPLICATION);
w.hCursor = LoadCursor(NULL,IDC_IBEAM);
RegisterClass(&w);
}
Поставьте одинаковые имена в ::szClassName и MyRegisterClass :: w.lpszClassName
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
Syuf вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Какое самое первое сообщение окну arokot Win Api 15 26.08.2010 03:40
Найти первое слово в строке Delphinchik Помощь студентам 10 24.08.2010 11:02
Первое число из DateTimePicker DaMadQuest Общие вопросы Delphi 4 20.04.2010 15:05
Canvas. Первое Начало (#001) Albert2008 Компоненты Delphi 2 19.07.2008 21:45
ООП мое первое начало cross Общие вопросы Delphi 1 18.03.2007 21:58