Jump to content
  • Advertisement

Archived

This topic is now archived and is closed to further replies.

kavalants

Rich edit control trouble...................................

This topic is 5388 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hey! Can somebody tell me, what''s wrong with this code? I get an error when I try to create the Rich Edit control with CreateWindowEx(...). I''m using MinGW.
//*******************************************************************************************

// FAILI NIMI: rich.cpp

// FAILI KIRJELDUS: Rich Editi test

// AUTOR: Kavalants

// LOOMISE KUUPÄEV: 17.11.2003

// VIIMANE MUUDATUS: 17.11.2003

//*******************************************************************************************

#define WIN32_LEAN_AND_MEAN
//Windowsi API tüüpe kontrollitakse rangelt nagu tavalisi C++''i omi

#define STRICT



//-------------------------------------------------------------------------------------------

//	INCLUDE FAILID

//-------------------------------------------------------------------------------------------

//tavaline windowsi kraam

#include <windows.h>
//rich edit kontrolli jaoks

#include <richedit.h>



//-------------------------------------------------------------------------------------------

// GLOBAALSED MUUTUJAD

//-------------------------------------------------------------------------------------------

HINSTANCE hInst = NULL;									//programmi viit

HWND hWnd = NULL;										//viit peaaknale

HMODULE hRichEditDll = NULL;							//rich edit kontrolli dll''i viit

HWND hRichEdit = NULL;									//rich edit kontrolli viit


int RICH_EDIT = 10000;									//rich edit kontrolli id kood


const char wndClass[] = "MainWndClass";				//peaakna klassi nimi

const char wndName[] = "Rich Editi test";							//peaakna nimi/pealkiri


bool done = false;										//programmi staatus




//-------------------------------------------------------------------------------------------

// FUNKTSIOONIDE PROTOTÜÜBID

//-------------------------------------------------------------------------------------------

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);	//põhiline teadete töötleminse

														//funktsioon

void Error(char *errMsg, bool);							//kuvab errori teate




//-------------------------------------------------------------------------------------------

// PROGRAMMI ALGUS

//-------------------------------------------------------------------------------------------


// Funktsioon:	WinMain

// Tagastab:	int

// Tüüp:		Programmi algus ja lõpp.

// Argumendid:	HINSTANCE hInstance - Windowsi poolt antud programmi viit

//				HINSTANCE hPrevInstance - Jääk Win16 ajast. Alati 0.

//				LPSTR lpCmdLine - käsurea parameetrid ilma programmi faili nimeta

//				int nCmdShow - akna kuvamise moodus

// Kirjeldus:	Programmi algus. Registreerime akna klassi. Loome akna. Kuvame akna.

//				Siseneme teadete luupi. Teadete luubist väljudes väljume programmist.

//-------------------------------------------------------------------------------------------

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
	MSG msg;													//teateid sisaldav muutuja

	WNDCLASSEX wc;												//peaakna klass


	//nullistame mälu, et erroreid vältida

	ZeroMemory(&msg, sizeof(MSG));
	ZeroMemory(&wc, sizeof(WNDCLASSEX));

	hInst = GetModuleHandle(NULL);								//saame programmi viida


	//täidame akna klassi

	wc.cbSize = sizeof(WNDCLASSEX);
	wc.style = CS_HREDRAW | CS_VREDRAW;
	wc.lpfnWndProc = WndProc;
	wc.cbClsExtra = 0;
	wc.cbWndExtra = 0;
	wc.hInstance = hInst;
	wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
	wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
	wc.hCursor = LoadCursor(NULL, IDC_ARROW);
	wc.hbrBackground = (HBRUSH)GetStockObject(LTGRAY_BRUSH);
	wc.lpszMenuName = NULL;
	wc.lpszClassName = wndClass;

	//error kui klassi registreerimine ebaõnnestus

	if(!RegisterClassEx(&wc))
	{
		Error("Error registering window class.", TRUE);
	}

	//loome akna

	hWnd = CreateWindowEx(	0,
							wndClass, wndName,
							WS_OVERLAPPEDWINDOW,
							10, 10, 640, 480,
							NULL, NULL, hInst, NULL);

	//error kui akna loomine ebaõnnestus

	if(hWnd == NULL)
	{
		Error("Could not create window.", TRUE);
	}

	//kuvame akna

	ShowWindow(hWnd, nCmdShow);
	UpdateWindow(hWnd);
	
	//laeme rich edit kontrolli dll''i

	hRichEditDll = LoadLibrary("Riched20.dll");
	
	//error kui rich edit kontrolli dll''i laadimine ebaõnnestus

	if(hRichEditDll == NULL)
	{
		Error("Could not load Rich Edit 3.0 control dll.", TRUE);
	}

	//teadete töötlemine süsteem

	//kontrollime, kas meile teateid on

	//kui jah, siis võtame teate vastu

	//väljume, kui teade on WM_QUIT

	while(!done)
	{
		if(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
		{
			TranslateMessage(&msg);
			DispatchMessage(&msg);
		}
		else if(msg.message == WM_QUIT)
		{
			done = true;
		}
	}
	
	//vabastame rich edit kontrolli dll''i

	FreeLibrary(hRichEditDll);

	//tühistame akna klassi registratsiooni

	UnregisterClass(wndClass, hInst);

	//väljume programmist

	return msg.wParam;
} // END WinMain(...)



// Funktsioon:	WndProc

// Tagastab:	LRESULT

// Tüüp:		Callback funktsioon.

// Argumendid:	HWND hwnd - Viit aknale, millelt teade tuli.

//				UINT msg - Teate kood.

//				WPARAM wParam - Teatega kaasta tulev info. Võib olla 0.

//				LPARAM lParam - Teatega kaasta tulev info. Võib olla 0.

// Kirjeldus:	Programmi põhiline teadete töötlemise funktsioon. Töötleme vajalikke teateid.

//				Kui tuleb teade, mida me ei taha töödelda, siis kutsume DefWindowProc(...),

//				mis töötleb selle teate meie eest. Kui töötlesime mõnda teadet, siis

//				tagastame nulli.

//-------------------------------------------------------------------------------------------

LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
	switch(msg)
	{
		case WM_CREATE:
		{
			//loome rich edit kontrolli

			hRichEdit = CreateWindowEx(	WS_EX_CLIENTEDGE,
										"richedit_class",
										"123",
										WS_CHILD | WS_VISIBLE | WS_BORDER | WS_VSCROLL | ES_MULTILINE,
										0,
										0,
										100,
										100,
										hwnd,
										(HMENU)RICH_EDIT,
										hInst,
										NULL);
										
			//error kui rich edit kontrolli loomine ebaõnnestus

			if(hRichEdit == NULL)
			{
				Error("Could not create rich edit control.", TRUE);
			}
		}
		break;
		case WM_QUIT:
		{
			DestroyWindow(hwnd);
		}
		break;
		case WM_DESTROY:
		{
			PostQuitMessage(0);
		}
		break;
		default:
		{
			return DefWindowProc(hwnd, msg, wParam, lParam);
		}
	}

	return 0;
} //END WndProc(...)



// Funktsioon:	Error

// Tagastab:	void

// Tüüp:		Tavaline.

// Argumendid:	std::string errMsg - Errori string.

//				bool quit - Kas väljume peale errorit programmist või mitte.

// Kirjeldus:	Kuvab soovitud errori ekraanile tavalises message box''is. Olenevalt

//				parameeter quit''i väärtusest kas lõpetame programmi või jätkame peale

//				errorit.

//-------------------------------------------------------------------------------------------

void Error(char *errMsg, bool quit)
{
	if(quit == TRUE)
	{
		MessageBox(NULL, errMsg, "ERROR", MB_OK);

		SendMessage(hWnd, WM_DESTROY, 0, 0);
	}
	else
	{
		MessageBox(NULL, errMsg, "ERROR", MB_OK);
	}
} //END Error(...)


//*******************************************************************************************

// END rich.cpp

//*******************************************************************************************


Share this post


Link to post
Share on other sites
Advertisement

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!