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

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

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.06.2010, 20:24   #1
4erk
Пользователь
 
Аватар для 4erk
 
Регистрация: 19.06.2010
Сообщений: 11
Печаль Создание окошка - Первые неудачи

Вообщем код:
Код:
#include <windows.h>

LRESULT CALLBACK HellWndProc(HWND hWnd,UINT Message,WPARAM wParam,LPARAM lParam);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
	HWND hWnd;
	WNDCLASS WndClass;
	MSG Msg;
	char szClassName[] = "Hell";
	WndClass.style = CS_HREDRAW|CS_VREDRAW;
	WndClass.cbClsExtra = 0;
	WndClass.cbWndExtra = 0;
	WndClass.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
	WndClass.hCursor = LoadCursor(NULL,IDC_ARROW);
	WndClass.hIcon = LoadIcon(NULL,IDI_APPLICATION);
	WndClass.lpfnWndProc = HellWndProc;
	WndClass.lpszMenuName = NULL;
	WndClass.lpszClassName = szClassName;

	if(!RegisterClass(&WndClass)) {
		MessageBox(NULL,"Fuck","You",MB_OK);
		return 0; 
	}

 hWnd = CreateWindow(szClassName, "test", WS_BORDER,
      10, 10, 100, 100, NULL, NULL, hInstance, NULL);
	if(!hWnd) {
		MessageBox(NULL,"Fuck Window","You",MB_OK);
		return 0;
	}

	ShowWindow(hWnd,nCmdShow);
	UpdateWindow(hWnd);
	while(GetMessage(&Msg,NULL,0,0)) {
		TranslateMessage(&Msg);
		DispatchMessage(&Msg);
	}
	return Msg.wParam;
	
}

LRESULT CALLBACK HellWndProc(HWND hWnd,UINT Message,WPARAM wParam, LPARAM lParam) {
	HDC hDC;
	PAINTSTRUCT PaintStruct;
	RECT Rect;
	switch(Message) {
	case WM_PAINT:
		hDC = BeginPaint(hWnd,&PaintStruct);
		GetClientRect(hWnd,&Rect);
		DrawText(hDC,"testbla",-1,&Rect,DT_SINGLELINE|DT_CENTER|DT_VCENTER);
		EndPaint(hWnd,&PaintStruct);
		return 0;
	case WM_DESTROY:
		PostQuitMessage(0);
		return 0;
	}
	return DefWindowProc(hWnd,Message,wParam,lParam);
}

На CreateWindow() примерно все и стопорится. Код компилится норм. Но при запуске окно не создается а вылазит месседжбокс что мол окно не создано. Дебаггер грит что
Цитата:
Loaded 'ntdll.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\kernel32.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\user32.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\gdi32.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\uxtheme.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\advapi32.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\rpcrt4.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\secur32.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\msvcrt.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\WinSxS\x86_Microsoft.Wi ndows.Common-Controls_6595b64144ccf1df_6.0.2600. 5512_x-ww_35d4ce83\comctl32.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\shlwapi.dll', no matching symbolic information found.
The thread 0x43C has exited with code 0 (0x0).
The program 'E:\Program Files\Microsoft Visual Studio\MyProjects\crwnd\Debug\crwnd .exe' has exited with code 0 (0x0).
и все дела тут. Подскажите плз где я тут не прав? Пчму ококо не создается?
4erk вне форума Ответить с цитированием
Старый 24.06.2010, 21:41   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,711
По умолчанию

Где
Код:
WndClass.cbSize = sizeof(WndClass);
???

Последний раз редактировалось p51x; 24.06.2010 в 21:44.
p51x вне форума Ответить с цитированием
Старый 24.06.2010, 23:03   #3
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Цитата:
Код:
MessageBox(NULL,"Fuck Window","You",MB_OK);
http://ithappens.ru/story/333
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 24.06.2010, 23:24   #4
4erk
Пользователь
 
Аватар для 4erk
 
Регистрация: 19.06.2010
Сообщений: 11
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Где
Код:
WndClass.cbSize = sizeof(WndClass);
???
Не совсем понятно зачем это. при том, что в манах этого нет. да и компилятор на это безобразие ругается

Цитата:
Сообщение от Alex Cones Посмотреть сообщение
читали, помним)) Но все же в чем может быть проблема?
4erk вне форума Ответить с цитированием
Старый 24.06.2010, 23:37   #5
Nitrino
Я ещё только учусь
Форумчанин
 
Регистрация: 06.05.2009
Сообщений: 158
По умолчанию

ты забыл
Код:
WndClass.hInstance = hInstance;
Nitrino вне форума Ответить с цитированием
Старый 25.06.2010, 00:08   #6
4erk
Пользователь
 
Аватар для 4erk
 
Регистрация: 19.06.2010
Сообщений: 11
По умолчанию

Цитата:
Сообщение от Nitrino Посмотреть сообщение
ты забыл
Код:
WndClass.hInstance = hInstance;
и правда забыл)
спасибо большое
4erk вне форума Ответить с цитированием
Старый 25.06.2010, 01:03   #7
4erk
Пользователь
 
Аватар для 4erk
 
Регистрация: 19.06.2010
Сообщений: 11
По умолчанию

чтоб не засорять раздел темами добавлю сюда -
Код:
#include <windows.h>

LRESULT CALLBACK HellWndProc(HWND hWnd,UINT Message,WPARAM wParam,LPARAM lParam);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
	HWND hWnd;
	WNDCLASS WndClass;
	MSG Msg;
	char szClassName[] = "Hell";
	WndClass.hInstance = hInstance;
	WndClass.style = CS_HREDRAW|CS_VREDRAW;
	WndClass.cbClsExtra = 0;
	WndClass.cbWndExtra = 0;
	WndClass.hbrBackground = (HBRUSH)(HOLLOW_BRUSH);
	WndClass.hCursor = LoadCursor(NULL,IDC_ARROW);
	WndClass.hIcon = LoadIcon(NULL,IDI_APPLICATION);
	WndClass.lpfnWndProc = HellWndProc;
	WndClass.lpszMenuName = NULL;
	WndClass.lpszClassName = szClassName;


	if(!RegisterClass(&WndClass)) {
		MessageBox(NULL,"Fuck","You",MB_OK);
		return 0; 
	}

 hWnd = CreateWindow(szClassName, szClassName,
                    0x000c0000L,
                    100, 100,
                    500, 500,
                    NULL, NULL, hInstance, NULL);
	if(!hWnd) {
		MessageBox(NULL,"Fuck Window","You",MB_OK);
		return 0;
	}

	ShowWindow(hWnd,nCmdShow);
	UpdateWindow(hWnd);
	while(GetMessage(&Msg,NULL,0,0)) {
		TranslateMessage(&Msg);
		DispatchMessage(&Msg);
	}
	return Msg.wParam;
	
}

LRESULT CALLBACK HellWndProc(HWND hWnd,UINT Message,WPARAM wParam, LPARAM lParam) {
	HDC hDC,hcDC;
	HANDLE hBitmap, hOldBitmap;
	PAINTSTRUCT PaintStruct;
	RECT Rect;
	BITMAP Bitmap;
	switch(Message) {
	case WM_PAINT:
		hDC = BeginPaint(hWnd,&PaintStruct);
		hBitmap = LoadImage(NULL,"pic.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
		GetObject(hBitmap,sizeof(BITMAP),&Bitmap);
		hcDC = CreateCompatibleDC(hDC);
		hOldBitmap = SelectObject(hcDC,&Bitmap);
		GetClientRect(hWnd,&Rect);
		StretchBlt(hDC,0,0,Rect.right,Rect.bottom,hcDC,0,0,Bitmap.bmWidth,Bitmap.bmHeight,SRCCOPY);
		SelectObject(hcDC,hOldBitmap);
		DeleteObject(hBitmap);
		DeleteDC(hcDC);
		EndPaint(hWnd,&PaintStruct);
		return 0;
	case WM_DESTROY:
		PostQuitMessage(0);
		return 0;
	}
	return DefWindowProc(hWnd,Message,wParam,lParam);
}
вообщем суть такова, что картинка не отображается. хотя она присутствует в той же папке,чтто и екзешка.
дежучник говорит следущее
Цитата:
Loaded 'ntdll.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\kernel32.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\user32.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\gdi32.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\uxtheme.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\advapi32.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\rpcrt4.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\secur32.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\msvcrt.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\WinSxS\x86_Microsoft.Wi ndows.Common-Controls_6595b64144ccf1df_6.0.2600. 5512_x-ww_35d4ce83\comctl32.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\shlwapi.dll', no matching symbolic information found.
The thread 0x5C0 has exited with code 0 (0x0).
The program 'E:\Program Files\Microsoft Visual Studio\MyProjects\crwnd\Debug\crwnd .exe' has exited with code 0 (0x0).
4erk вне форума Ответить с цитированием
Старый 25.06.2010, 10:15   #8
liljon
Форумчанин
 
Регистрация: 03.01.2010
Сообщений: 229
По умолчанию

я одного не понимаю =\ неужели в интернете нету ничего на эту тему?

тык
тык
подпись

Последний раз редактировалось liljon; 25.06.2010 в 10:20.
liljon вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обрисовывани окошка рамкой Pirotexnik Общие вопросы C/C++ 0 12.06.2010 16:11
Ввод текста в окошка квипа KoBRaAndrey Общие вопросы Delphi 6 27.11.2009 14:01
Определить размеры окошка Alex Cones Общие вопросы Delphi 7 06.11.2009 19:17
создание окошка и кнопочки в нем Olejik Общие вопросы C/C++ 13 30.09.2009 18:21
Запретить закрытие окошка формы крестиком "Х" Slim Microsoft Office Excel 5 28.03.2007 19:39