2
6
2014
5

SDL学习笔记1:SDL的Hello World!

参照国内最容易搜到的中文教程,一些讲解就在注释里了

 

#include "SDL.h"
#include <iostream>
#include <Windows.h>

int main(int argc,char**argv)
{
	// 初始化SDL的“一切”,不成功main返回-1,本例均如此
	if (SDL_Init(SDL_INIT_EVERYTHING) == -1)
	{
		std::cout << SDL_GetError() << std::endl;
		return 1;
	}

	// 创建窗口指针
	SDL_Window *win = nullptr;
	win = SDL_CreateWindow("First SDL Program!!",100,100,800,600,SDL_WINDOW_SHOWN);
	if (win == nullptr)
	{
		std::cout << SDL_GetError() << std::endl;
		return 1;
	}

	// 创建SDL Renderer(渲染器)指针
	SDL_Renderer *ren = nullptr;
	// 参数分别为:指定窗口,自动选择显卡驱动,使用图形加速|以显示器频率同步
	ren = SDL_CreateRenderer(win,-1,SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);
	if (ren == nullptr)
	{
		std::cout << SDL_GetError() << std::endl;
		return 1;
	}

	// 创建SDL_Surface,用于载入图像
	SDL_Surface *bmp = nullptr;
	bmp = SDL_LoadBMP("image.bmp");
	if (bmp == nullptr)
	{
		std::cout << SDL_GetError() << std::endl;
		return -1;
	}

	// 创建SDL_Texture(材质)
	SDL_Texture *tex = nullptr;
	tex = SDL_CreateTextureFromSurface(ren,bmp);
	SDL_FreeSurface(bmp);

	// 清空屏幕,绘图,刷新屏幕
	SDL_RenderClear(ren);
	SDL_RenderCopy(ren,tex,NULL,NULL);
	SDL_RenderPresent(ren);

	// 延迟4秒后关闭窗口
	SDL_Delay(4000);

	// 释放内存
	SDL_DestroyTexture(tex);
	SDL_DestroyRenderer(ren);
	SDL_DestroyWindow(win);

	// 退出
	SDL_Quit();

	return 0;
}

补充:

窗口标题无法显示中文。

Category: SDL学习笔记 | Tags:
12
16
2013
83

Windows API笔记1

 

#include <windows.h>

int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE PrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
HANDLE hFile;
DWORD dwWritten;
TCHAR szSystemDir[MAX_PATH];
GetSystemDirectory(szSystemDir,MAX_PATH);

hFile = CreateFile(TEXT("systemroot.txt"),
GENERIC_WRITE,
0,NULL,CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
NULL);

if (hFile != INVALID_HANDLE_VALUE)
{
if (!WriteFile(hFile,szSystemDir,lstrlen(szSystemDir),&dwWritten,NULL))
{
return GetLastError();
}
}
CloseHandle(hFile);
return 0;
}
#include <windows.h>

int WINAPI WinMain(HINSTANCE hInstance,
			HINSTANCE PrevInstance,
			LPSTR lpCmdLine,
			int nCmdShow)
{
	LPWSTR szUnicode = L"This is a Unicode String;";
	LPSTR szMutliByte = "This is not a Unicode String;";
	LPTSTR szString = TEXT("This string is Unicode or not depends on the option.");
	MessageBoxW(NULL,szUnicode,L"<字符编码1>",MB_OK);
	MessageBoxA(NULL,szMutliByte,"<字符编码2>",MB_OK);
	MessageBox(NULL,szString,TEXT("<字符编码3>"),MB_OK);
	return 0;
} 0;
}
Category: 其他 | Tags:

Host by is-Programmer.com | Power by Chito 1.3.3 beta | Theme: Aeros 2.0 by TheBuckmaker.com