本文整理汇总了C++中LoadCursor函数的典型用法代码示例。如果您正苦于以下问题:C++ LoadCursor函数的具体用法?C++ LoadCursor怎么用?C++ LoadCursor使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了LoadCursor函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: WinMain
//-----------------------------------WinMain-----------------------------------------
// Entry point for our windows application
//-----------------------------------------------------------------------------------
int WINAPI WinMain( HINSTANCE hinstance,
HINSTANCE hprevinstance,
LPSTR lpcmdline,
int ncmdshow)
{
WNDCLASSEX winclass;
HWND hwnd;
MSG msg;
// first fill in the window class stucture
winclass.cbSize = sizeof(WNDCLASSEX);
winclass.style = CS_HREDRAW | CS_VREDRAW;
winclass.lpfnWndProc = WindowProc;
winclass.cbClsExtra = 0;
winclass.cbWndExtra = 0;
winclass.hInstance = hinstance;
winclass.hIcon = LoadIcon(hinstance, MAKEINTRESOURCE(IDI_ICON1));
winclass.hCursor = LoadCursor(NULL, IDC_ARROW);
winclass.hbrBackground= NULL;
winclass.lpszMenuName = NULL;
winclass.lpszClassName= szWindowClassName;
winclass.hIconSm = LoadIcon(hinstance, MAKEINTRESOURCE(IDI_ICON1));
// register the window class
if (!RegisterClassEx(&winclass))
{
MessageBox(NULL, "Error Registering Class!", "Error", 0);
return 0;
}
// create the window (one that cannot be resized)
if (!(hwnd = CreateWindowEx(NULL,
szWindowClassName,
szApplicationName,
WS_OVERLAPPED | WS_VISIBLE | WS_CAPTION | WS_SYSMENU,
GetSystemMetrics(SM_CXSCREEN)/2 - CParams::WindowWidth/2,
GetSystemMetrics(SM_CYSCREEN)/2 - CParams::WindowHeight/2,
CParams::WindowWidth,
CParams::WindowHeight,
NULL,
NULL,
hinstance,
NULL)))
{
MessageBox(NULL, "Error Creating Window!", "Error", 0);
return 0;
}
//Show the window
ShowWindow(hwnd, SW_SHOWDEFAULT );
UpdateWindow(hwnd);
//create a timer
CTimer timer(CParams::iFramesPerSecond);
//start the timer
timer.Start();
// Enter the message loop
bool bDone = FALSE;
while(!bDone)
{
while( PeekMessage( &msg, NULL, 0, 0, PM_REMOVE ) )
{
if( msg.message == WM_QUIT )
{
//Stop loop if it's a quit message
bDone = TRUE;
}
else
{
TranslateMessage( &msg );
DispatchMessage( &msg );
}
}
if (timer.ReadyForNextFrame() || g_pController->FastRender())
{
if(!g_pController->Update())
{
//we have a problem, end app
bDone = TRUE;
}
//this will call WM_PAINT which will render our scene
InvalidateRect(hwnd, NULL, TRUE);
UpdateWindow(hwnd);
}
}//end while
//.........这里部分代码省略.........
示例2: GetModuleHandle
//内核配置
bool CClientKernel::InitClientKernel(HWND hWnd, const std::string &CmdLine, CClientKernelSink* pIUnknownEx)
{
if (CmdLine.empty()) return false;
//获取框架
m_hWndGameFrame=hWnd;
m_pIClientKernelSink = pIUnknownEx;
//创建窗口
if (m_hWndChannel==NULL)
{
WNDCLASS wc = { CS_HREDRAW | CS_VREDRAW,
CClientKernel::ChannelWndProc, 0, 0, GetModuleHandle(0),
LoadIcon(0, IDI_APPLICATION), LoadCursor(NULL, IDC_ARROW),
(HBRUSH)GetStockObject(BLACK_BRUSH), 0, "ChannelWND"};
RegisterClass(&wc);
//创建窗口
m_hWndChannel = CreateWindowEx(0, "ChannelWND","ChannelWND",WS_CHILD,0,0,0,0,GetDesktopWindow(),0,GetModuleHandle(0),0);
}
//命令行处理
if (CmdLine.empty()!=true)
{
std::string::size_type pos1;
std::string::size_type pos2;
std::string szRoomToken;
std::string szComLine(CmdLine);
pos1 = szComLine.find("/RoomToken:");
if (pos1 != std::string::npos)
{
pos2 = szComLine.find_first_of("/", pos1+10);
szRoomToken = szComLine.substr(pos1+11, pos2-pos1-12);
}
//共享内存
if (!szRoomToken.empty())
{
m_hShareMemory=OpenFileMapping(FILE_MAP_ALL_ACCESS,FALSE,szRoomToken.c_str());
if (m_hShareMemory==NULL) return false;
m_pShareMemory=(tagShareMemory *)MapViewOfFile(m_hShareMemory,FILE_MAP_ALL_ACCESS,0,0,0);
if (m_pShareMemory==NULL) return false;
if (m_pShareMemory->wDataSize<sizeof(tagShareMemory)) return false;
m_pShareMemory->hWndGameFrame=m_hWndGameFrame;
m_hWndGameServer = m_pShareMemory->hWndGameServer;
SendData(IPC_MIAN_IPC_KERNEL,IPC_SUB_IPC_CLIENT_CONNECT);
}
}
//更新标题
UpdateGameTitle();
return true;
}
示例3: GetPrivateProfileInt
bool BasicWindow::InitWindowsApp(HINSTANCE appHandle, int showStyle)
{
int classStyle, bgColor, wndStyle, width, height, x, y;
char caption[255];
// Read integers from ini file: class style, bgcolor, window style, width, height and starting x and y.
classStyle = GetPrivateProfileInt("Window", "class_style", 0, "./D3D11.ini");
bgColor = GetPrivateProfileInt("Window", "bgcolor", 0, "./D3D11.ini");
wndStyle = GetPrivateProfileInt("Window", "window_style", 0, "./D3D11.ini");
width = GetPrivateProfileInt("Window", "width", 0, "./D3D11.ini");
height = GetPrivateProfileInt("Window", "height", 0, "./D3D11.ini");
x = GetPrivateProfileInt("Window", "x", 0, "./D3D11.ini");
y = GetPrivateProfileInt("Window", "y", 0, "./D3D11.ini");
// Make sure the width, height and starting x, y are valid numbers.
width = width <=0 ? CW_USEDEFAULT : width;
height = height <=0 ? CW_USEDEFAULT : height;
x = x <=0 ? CW_USEDEFAULT : x;
y = y <=0 ? CW_USEDEFAULT : y;
// Read the window caption from file and store.
GetPrivateProfileString("Window", "caption", "Ny Window", caption, 255, "./D3D11.ini");
mCaption = caption;
WNDCLASS wc;
// If the window class is not already registered, register it.
if(!GetClassInfo(appHandle, "BasicWindowClass", &wc))
{
wc.style = classStyle; // Window class style: Redraw when movement or size changes.
wc.lpfnWndProc = WindowProc; // Pointer to the window procedure.
wc.cbClsExtra = 0; // No extra bytes allocated following the class structure.
wc.cbWndExtra = 0; // No extra bytes allocated followint the window instance.
wc.hInstance = appHandle; // Handle to the instance where the window procedure is contained.
wc.hIcon = LoadIcon(0, IDI_APPLICATION); // Handle to the class icon.
wc.hCursor = LoadCursor(0, IDC_ARROW); // Handle to the class cursor.
wc.hbrBackground = (HBRUSH)bgColor; // Handle to the class background brush.
wc.lpszMenuName = 0; // Resource name of the class menu.
wc.lpszClassName = "BasicWindowClass"; // Name of the class for use when the window is created.
// If the class registration failed, show a message and return failure.
if(!RegisterClass(&wc))
{
std::stringstream ss;
ss << "RegisterClass failed, error code: ";
ss << GetLastError();
ShowMessage(ss.str());
return false;
}
}
// Create the window and save a handle to it.
mHandle = CreateWindow("BasicWindowClass", // Name of the registered window class to use at creation.
mCaption.c_str(), // The caption of the window.
wndStyle, // Window style.
x, // Initial x-position.
y, // Initial y-position.
width, // Width of the window in device units.
height, // Height of the window in device units.
0, // Handle to parent (there is no parent).
0, // Handle to a menu (there is no menu).
appHandle, // Application instance handle.
this); // The value passed to the window through CREATESTRUCT's
// lpCreateParams member (used in WindowProc).
// If the window creation failed, show a message and return failure.
if(mHandle == 0)
{
std::stringstream ss;
ss << "CreateWindow failed, error code: ";
ss << GetLastError();
ShowMessage(ss.str());
return false;
}
// Show and update the window and return success.
ShowWindow(mHandle, showStyle);
UpdateWindow(mHandle);
return true;
}
示例4: WinMain
int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE hInstP, LPSTR lpCmdLine, int nCmdShow)
{
MSG msg={0};
WNDCLASS wc;
// Initialize COM
if(FAILED(CoInitializeEx(NULL, COINIT_APARTMENTTHREADED)))
{
Msg(TEXT("CoInitialize Failed!\r\n"));
exit(1);
}
// Register the window class
ZeroMemory(&wc, sizeof wc);
wc.lpfnWndProc = WndMainProc;
wc.hInstance = hInstance;
wc.lpszClassName = CLASSNAME;
wc.lpszMenuName = NULL;
wc.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hIcon = NULL;
if(!RegisterClass(&wc))
{
Msg(TEXT("RegisterClass Failed! Error=0x%x\r\n"), GetLastError());
CoUninitialize();
exit(1);
}
// Create the main window. The WS_CLIPCHILDREN style is required.
ghApp = CreateWindow(CLASSNAME, APPLICATIONNAME,
WS_OVERLAPPEDWINDOW | WS_CAPTION | WS_CLIPCHILDREN,
CW_USEDEFAULT, CW_USEDEFAULT,
DEFAULT_VIDEO_WIDTH, DEFAULT_VIDEO_HEIGHT,
0, 0, hInstance, 0);
if(ghApp)
{
HRESULT hr;
// Create DirectShow graph and start capturing video
hr = CaptureVideo();
if (FAILED (hr))
{
CloseInterfaces();
DestroyWindow(ghApp);
}
else
{
// Don't display the main window until the DirectShow
// preview graph has been created. Once video data is
// being received and processed, the window will appear
// and immediately have useful video data to display.
// Otherwise, it will be black until video data arrives.
ShowWindow(ghApp, nCmdShow);
}
// Main message loop
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
// Release COM
CoUninitialize();
return (int) msg.wParam;
}
示例5: GetModuleHandle
bool Engine::InitWindow()
{
WNDCLASSEX wc;
//DEVMODE dmScreenSettings;
int posX, posY,screenWidth,screenHeight;
bool FULL_SCREEN = false;
//ApplicationHandle = this;
m_instance = GetModuleHandle(NULL);
m_appname = L"AllenEngine";
wc.cbSize = sizeof(WNDCLASSEX);
wc.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC;
wc.lpfnWndProc = WindowProc;
wc.hInstance = m_instance;
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);//(HBRUSH)COLOR_WINDOW; //Background Colour
wc.lpszClassName = m_appname; //Application Name
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hIcon = LoadIcon(NULL, IDI_WINLOGO);
wc.hIconSm = wc.hIcon;
wc.lpszMenuName = NULL;
RegisterClassEx(&wc);//Windows class needs to be registered
screenWidth = 800;
screenHeight = 600;
posX = (GetSystemMetrics(SM_CXSCREEN) - screenWidth) /2;
posY = (GetSystemMetrics(SM_CYSCREEN) - screenHeight) / 2;
m_hwnd = CreateWindowEx(
WS_EX_APPWINDOW,
m_appname, // name of the window class
m_appname, // title of the window
WS_OVERLAPPEDWINDOW,// | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_POPUP, // window style
posX, // x-position of the window
posY, // y-position of the window
screenWidth, // width of the window
screenHeight, // height of the window
NULL, // we have no parent window, NULL
NULL, // we aren't using menus, NULL
m_instance, // application handle
NULL); // used with multiple windows, NULL
ShowWindow(m_hwnd, SW_SHOW);
SetForegroundWindow(m_hwnd);
SetFocus(m_hwnd);
//ShowCursor(false);
return true;
}
示例6: sizeof
HWND VulkanBase::setupWindow(HINSTANCE hinstance, WNDPROC wndproc) {
this->windowInstance = hinstance;
bool fullscreen = false;
for (int32_t i = 0; i < __argc; i++)
if (__argv[i] == std::string("-fullscreen"))
fullscreen = true;
WNDCLASSEX wndClass;
wndClass.cbSize = sizeof(WNDCLASSEX);
wndClass.style = CS_HREDRAW | CS_VREDRAW;
wndClass.lpfnWndProc = wndproc;
wndClass.cbClsExtra = 0;
wndClass.cbWndExtra = 0;
wndClass.hInstance = hinstance;
wndClass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wndClass.hCursor = LoadCursor(NULL, IDC_ARROW);
wndClass.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
wndClass.lpszMenuName = NULL;
wndClass.lpszClassName = name.c_str();
wndClass.hIconSm = LoadIcon(NULL, IDI_WINLOGO);
if (!RegisterClassEx(&wndClass)){
std::cout << "Could not register window class!\n";
fflush(stdout);
exit(1);
}
int screenWidth = GetSystemMetrics(SM_CXSCREEN);
int screenHeight = GetSystemMetrics(SM_CYSCREEN);
if (fullscreen){
DEVMODE dmScreenSettings;
memset(&dmScreenSettings, 0, sizeof(dmScreenSettings));
dmScreenSettings.dmSize = sizeof(dmScreenSettings);
dmScreenSettings.dmPelsWidth = screenWidth;
dmScreenSettings.dmPelsHeight = screenHeight;
dmScreenSettings.dmBitsPerPel = 32;
dmScreenSettings.dmFields = DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT;
if ((width != screenWidth) && (height != screenHeight)){
if (ChangeDisplaySettings(&dmScreenSettings, CDS_FULLSCREEN) != DISP_CHANGE_SUCCESSFUL){
if (MessageBox(NULL, "Fullscreen Mode not supported!\n Switch to window mode?", "Error", MB_YESNO | MB_ICONEXCLAMATION) == IDYES)
fullscreen = FALSE;
else
return FALSE;
}
}
}
DWORD dwExStyle;
DWORD dwStyle;
if (fullscreen){
dwExStyle = WS_EX_APPWINDOW;
dwStyle = WS_POPUP | WS_CLIPSIBLINGS | WS_CLIPCHILDREN;
}
else{
dwExStyle = WS_EX_APPWINDOW | WS_EX_WINDOWEDGE;
dwStyle = WS_OVERLAPPEDWINDOW | WS_CLIPSIBLINGS | WS_CLIPCHILDREN;
}
RECT windowRect;
if (fullscreen){
windowRect.left = (long)0;
windowRect.right = (long)screenWidth;
windowRect.top = (long)0;
windowRect.bottom = (long)screenHeight;
} else {
windowRect.left = (long)screenWidth / 2 - width / 2;
windowRect.right = (long)width;
windowRect.top = (long)screenHeight / 2 - height / 2;
windowRect.bottom = (long)height;
}
AdjustWindowRectEx(&windowRect, dwStyle, FALSE, dwExStyle);
std::string windowTitle = getWindowTitle();
window = CreateWindowEx(0,
name.c_str(),
windowTitle.c_str(),
dwStyle | WS_CLIPSIBLINGS | WS_CLIPCHILDREN,
windowRect.left,
windowRect.top,
windowRect.right,
windowRect.bottom,
NULL,
NULL,
hinstance,
NULL);
if (!window){
printf("Could not create window!\n");
fflush(stdout);
return 0;
exit(1);
}
//.........这里部分代码省略.........
示例7: WinMain
int PASCAL WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR szCmdLine, int nCmdShow)
{
WNDCLASSEX wcex;
MSG Msg;
HWND hWnd;
// Initialize the COM system
CoInitialize(NULL);
// Create the window class here and register it
wcex.cbSize = sizeof(wcex);
wcex.style = CS_CLASSDC;
wcex.lpfnWndProc = WindowProc;
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = hInst;
wcex.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
wcex.hbrBackground = NULL;
wcex.lpszMenuName = NULL;
wcex.lpszClassName = g_szClass;
wcex.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
if(!RegisterClassEx(&wcex))
return FALSE;
// Create the main window
hWnd = CreateWindow(g_szClass, g_szCaption,
WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX,
0, 0, 640, 480,
NULL, NULL, hInst, NULL);
if(!hWnd)
return FALSE;
ShowWindow(hWnd, SW_NORMAL);
UpdateWindow(hWnd);
// Call init function and enter message pump
if(DoInit(hWnd) == TRUE) {
// Start message pump, waiting for user to exit
ZeroMemory(&Msg, sizeof(MSG));
while(Msg.message != WM_QUIT) {
if(PeekMessage(&Msg, NULL, 0, 0, PM_REMOVE)) {
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
// Render a single frame
DoFrame();
}
}
// Call shutdown
DoShutdown();
// Unregister the window class
UnregisterClass(g_szClass, hInst);
// Shut down the COM system
CoUninitialize();
return 0;
}
示例8: wWinMain
int WINAPI wWinMain ( HINSTANCE hInstance , HINSTANCE prevInstance , LPWSTR cmdLine , int cmdShow )
{
UNREFERENCED_PARAMETER ( prevInstance );
UNREFERENCED_PARAMETER ( cmdLine );
WNDCLASSEX wndClass = { 0 };
wndClass.cbSize = sizeof ( WNDCLASSEX );
wndClass.style = CS_HREDRAW | CS_VREDRAW;
wndClass.lpfnWndProc = WndProc;
wndClass.hInstance = hInstance;
wndClass.hCursor = LoadCursor ( NULL , IDC_ARROW );
wndClass.hbrBackground = ( HBRUSH ) ( COLOR_WINDOW + 1 );
wndClass.lpszMenuName = NULL;
wndClass.lpszClassName = "DX11BookWindowClass";
if( !RegisterClassEx( &wndClass ))
{
return -1;
}
RECT rc = { 0 , 0 , 640 , 480 };
AdjustWindowRect( &rc , WS_OVERLAPPEDWINDOW , FALSE );
HWND hwnd = CreateWindowEx ( WS_EX_OVERLAPPEDWINDOW, "DX11BookWindowClass" , "Blank Direct3D 11 Window" , WS_OVERLAPPEDWINDOW ,
CW_USEDEFAULT , CW_USEDEFAULT , rc.right - rc.left , rc.bottom - rc.top , NULL , NULL , hInstance , NULL );
/*
HWND hwnd = CreateWindowA ( "DX11BookWindowClass" , "Blank Direct 3D 11 Window" , WS_OVERLAPPEDWINDOW , CW_USEDEFAULT , CW_USEDEFAULT , rc.right - rc.left ,
rc.bottom - rc.top , NULL , NULL , hInstance , NULL );
*/
if( !hwnd )
return -1;
ShowWindow( hwnd , cmdShow );
std :: auto_ptr< Dx11DemoBase >demo ( new ColorInversionDemo());
//Demo Initialize
bool result = demo ->Initialize ( hInstance , hwnd );
//Error reporting if there is an issue
if( result == false )
return -1;
MSG msg = { 0 };
while ( msg.message != WM_QUIT )
{
if( PeekMessage ( &msg , 0 , 0 , 0 , PM_REMOVE ))
{
TranslateMessage( & msg );
DispatchMessage ( & msg );
}
else
{
//Update and draw
demo ->Update (0.0f);
demo ->Render ( );
}
}
//demo shutdown
demo ->Shutdown( );
return static_cast<int>( msg.wParam );
}
示例9: WinMain
int APIENTRY
WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
WNDCLASS wc;
HWND hwndFW;
hInst = hInstance;
LoadString(hInst, IDS_TITLE, szTitle, MAX_BUF);
// Parse the command line
ParseCommandLine(lpCmdLine);
/* Allow multiple installer instances with the
provision that each instance is guaranteed
to have its own unique setup directory
*/
if(FindWindow("NSExtracting", "Extracting...") != NULL ||
(hwndFW = FindWindow(CLASS_NAME_SETUP_DLG, NULL)) != NULL ||
(hwndFW = FindWindow(CLASS_NAME_SETUP, NULL)) != NULL)
{
if (gbAllowMultipleInstalls)
{
char szTempPath[MAX_BUF];
GetFullTempPathName("", MAX_BUF, szTempPath);
DWORD dwLen = lstrlen(gszWizTempDir);
for(int i = 1; i <= 100 && (FileExists(szTempPath) != FALSE); i++)
{
itoa(i, (gszWizTempDir + dwLen), 10);
GetFullTempPathName("", MAX_BUF, szTempPath);
}
if (FileExists(szTempPath) != FALSE)
{
MessageBox(NULL, "Cannot create temp directory", NULL, MB_OK | MB_ICONEXCLAMATION);
exit(1);
}
}
else
{
if (hwndFW!=NULL)
{
ShowWindow(hwndFW, SW_RESTORE);
SetForegroundWindow(hwndFW);
}
return(1);
}
}
// Figure out the total size of the resources
EnumResourceNames(NULL, "FILE", (ENUMRESNAMEPROC)SizeOfResourcesProc, 0);
// Register a class for the gauge
memset(&wc, 0, sizeof(wc));
wc.lpfnWndProc = (WNDPROC)GaugeWndProc;
wc.hInstance = hInstance;
wc.hbrBackground = (HBRUSH)(COLOR_BTNFACE + 1);
wc.lpszClassName = "NSGauge";
RegisterClass(&wc);
// Register a class for the main dialog
memset(&wc, 0, sizeof(wc));
wc.style = CS_DBLCLKS | CS_SAVEBITS | CS_BYTEALIGNWINDOW;
wc.lpfnWndProc = DefDlgProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = DLGWINDOWEXTRA;
wc.hInstance = hInstance;
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
wc.lpszClassName = "NSExtracting";
RegisterClass(&wc);
if(dwMode != SILENT)
{
// Display the dialog box
dlgInfo.hWndDlg = CreateDialog(hInstance, MAKEINTRESOURCE(IDD_EXTRACTING), NULL, (DLGPROC)DialogProc);
UpdateWindow(dlgInfo.hWndDlg);
}
// Extract the files
EnumResourceNames(NULL, "FILE", (ENUMRESNAMEPROC)ExtractFilesProc, 0);
// Launch the install program and wait for it to finish
RunInstaller();
return 0;
}
示例10: CreateGLWindow
/* This Code Creates Our OpenGL Window. Parameters Are: *
* title - Title To Appear At The Top Of The Window *
* width - Width Of The GL Window Or Full screen Mode *
* height - Height Of The GL Window Or Full screen Mode *
* bits - Number Of Bits To Use For Color (8/16/24/32) *
* fullscreenflag - Use Full screen Mode (TRUE) Or Windowed Mode (FALSE) */
BOOL CreateGLWindow(char* title, int width, int height, int bits, bool fullScreenFlag)
{
GLuint PixelFormat; // Holds the results after searching for a match
WNDCLASS wc; // Windows class structure
DWORD dwExStyle; // Window extended style
DWORD dwStyle; // Window style
RECT WindowRect; // Grabs rectangle upper left/lower right values
WindowRect.left = (long)0; // Set left value to 0
WindowRect.right = (long)width; // Set right value to requested width
WindowRect.top = (long)0; // Set top value to 0
WindowRect.bottom = (long)height; // Set bottom value to requested height
g_bFullscreen = fullScreenFlag; // Set the global full screen flag
hInstance = GetModuleHandle(NULL); // Grab an instance for out window
wc.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC; // Redraw on size, and own DC for window
wc.lpfnWndProc = (WNDPROC) WndProc; // WndProc handles messages
wc.cbClsExtra = 0; // No extra window data
wc.cbWndExtra = 0; // No extra window data
wc.hInstance = hInstance; // Set the instance
wc.hIcon = LoadIcon(NULL, IDI_WINLOGO); // Load the default icon
wc.hCursor = LoadCursor(NULL, IDC_ARROW); // Load the arrow pointer
wc.hbrBackground = NULL; // No background required for GL
wc.lpszMenuName = NULL; // We don't want a menu
wc.lpszClassName = CLASSNAME; // Set the class name
if (!RegisterClass(&wc)) // Attempt to register the window class
{
MessageBox(NULL, MSG_REGISTERCLASSFAILED,
ERR_ERROR, MB_OK | MB_ICONEXCLAMATION);
return FALSE; // Return FALSE
}
if (g_bFullscreen)
{
DEVMODE dmScreenSettings; // Device mode
memset(&dmScreenSettings, 0, sizeof(dmScreenSettings)); // Makes sure memory's cleared
dmScreenSettings.dmSize = sizeof(dmScreenSettings); // Size of the devmode structure
dmScreenSettings.dmPelsWidth = width; // Selected screen width
dmScreenSettings.dmPelsHeight = height; // Selected screen height
dmScreenSettings.dmBitsPerPel = bits; // Selected bits per pixel
dmScreenSettings.dmFields = DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT;
// Try to set selected mode and get results. NOTE: CDS_FULLSCREEN gets rid of start bar.
if (ChangeDisplaySettings(&dmScreenSettings, CDS_FULLSCREEN) != DISP_CHANGE_SUCCESSFUL)
{
// If the mode failed, offer two options. Quit or use windowed mode.
if (MessageBox(NULL, MSG_FULLSCREENNOTSUPPORT,
ARTIST_NAME, MB_YESNO|MB_ICONEXCLAMATION) == IDYES)
{
g_bFullscreen = FALSE; // Windowed mode selected. Fullscreen = FALSE
}
else
{
// Pop up a message box letting user know the program is closing.
MessageBox(NULL, MSG_PROGRAMNOTCLOSE,
ERR_ERROR, MB_OK | MB_ICONSTOP);
return FALSE; // Return FALSE
}
}
}
if (g_bFullscreen) // Are we still in fullscreen mode?
{
dwExStyle = WS_EX_APPWINDOW; // Window extended style
dwStyle = WS_POPUP; // Windows Style
ShowCursor(FALSE); // Hide mouse pointer
}
else
{
dwExStyle = WS_EX_APPWINDOW | WS_EX_WINDOWEDGE; // Windows Extended style
dwStyle = WS_OVERLAPPEDWINDOW; // Windows Style
}
AdjustWindowRectEx(&WindowRect, dwStyle, FALSE, dwExStyle); // Adjust window to true requested size
// Create the window
if (!(hWnd = CreateWindowEx(dwExStyle, // Extended style for the window
CLASSNAME, // Class name
title, // Window title
dwStyle | WS_CLIPSIBLINGS | WS_CLIPCHILDREN, // Defined window style
0, 0, // Window position
WindowRect.right - WindowRect.left, // Calculate window width
WindowRect.bottom - WindowRect.top, // Calculate window height
NULL, // No parent window
NULL, // No menu
hInstance, // Instance
NULL))) // Don't pass anything to WM_CREATE
{
KillGLWindow(); // Reset the display
MessageBox(NULL, MSG_CREATEWINDOWFAILED,
ERR_ERROR, MB_OK | MB_ICONEXCLAMATION);
return FALSE; // Return FALSE
}
static PIXELFORMATDESCRIPTOR pfd = // pfd tells widows how we want things to be
{
sizeof(PIXELFORMATDESCRIPTOR), // Size of this pixel format descriptor
1, // Version number
//.........这里部分代码省略.........
示例11: DoMain
//.........这里部分代码省略.........
program = progdir.LockBuffer();
*(strrchr(program, '\\') + 1) = '\0';
FixPathSeperator(program);
progdir.Truncate((long)strlen(program));
progdir.UnlockBuffer();
/*
height = GetSystemMetrics (SM_CYFIXEDFRAME) * 2 +
GetSystemMetrics (SM_CYCAPTION) + 12 * 32;
width = GetSystemMetrics (SM_CXFIXEDFRAME) * 2 + 8 * 78;
*/
width = 512;
height = 384;
// Many Windows structures that specify their size do so with the first
// element. DEVMODE is not one of those structures.
memset (&displaysettings, 0, sizeof(displaysettings));
displaysettings.dmSize = sizeof(displaysettings);
EnumDisplaySettings (NULL, ENUM_CURRENT_SETTINGS, &displaysettings);
x = (displaysettings.dmPelsWidth - width) / 2;
y = (displaysettings.dmPelsHeight - height) / 2;
if (Args->CheckParm ("-0"))
{
x = y = 0;
}
WNDCLASS WndClass;
WndClass.style = 0;
WndClass.lpfnWndProc = LConProc;
WndClass.cbClsExtra = 0;
WndClass.cbWndExtra = 0;
WndClass.hInstance = hInstance;
WndClass.hIcon = LoadIcon (hInstance, MAKEINTRESOURCE(IDI_ICON1));
WndClass.hCursor = LoadCursor (NULL, IDC_ARROW);
WndClass.hbrBackground = NULL;
WndClass.lpszMenuName = NULL;
WndClass.lpszClassName = (LPCTSTR)WinClassName;
/* register this new class with Windows */
if (!RegisterClass((LPWNDCLASS)&WndClass))
I_FatalError ("Could not register window class");
/* create window */
char caption[100];
mysnprintf(caption, countof(caption), ""GAMESIG" %s "X64, GetVersionString());
Window = CreateWindowEx(
WS_EX_APPWINDOW,
(LPCTSTR)WinClassName,
(LPCTSTR)caption,
WS_OVERLAPPEDWINDOW | WS_VISIBLE | WS_CLIPCHILDREN,
x, y, width, height,
(HWND) NULL,
(HMENU) NULL,
hInstance,
NULL);
if (!Window)
I_FatalError ("Could not open window");
if (kernel != NULL)
{
typedef BOOL (WINAPI *pts)(DWORD, DWORD *);
pts pidsid = (pts)GetProcAddress (kernel, "ProcessIdToSessionId");
if (pidsid != 0)
{
if (!pidsid (GetCurrentProcessId(), &SessionID))
示例12: WinMain
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) {
MyDirectX = new DirectX();
WNDCLASSEX wndClass;
wndClass.cbSize = sizeof( WNDCLASSEX );
wndClass.style = CS_VREDRAW | CS_HREDRAW | CS_DBLCLKS;
wndClass.cbClsExtra = 0;
wndClass.cbWndExtra = 0;
wndClass.hbrBackground = ( HBRUSH )GetStockObject( BLACK_BRUSH );
wndClass.hInstance = hInstance;
wndClass.hIcon = LoadIcon( NULL, IDI_APPLICATION );
wndClass.hIconSm = LoadIcon( NULL, IDI_WINLOGO );
wndClass.hCursor = LoadCursor( NULL, IDC_ARROW );
wndClass.lpfnWndProc = ( WNDPROC )WndProc;
wndClass.lpszClassName = "MainWndClass";
wndClass.lpszMenuName = ( LPCSTR )NULL;
if( !RegisterClassEx( &wndClass ) ) {
MessageBox( HWND_DESKTOP, "Cannot register the main window\nclass.", "Error", MB_OK | MB_ICONERROR );
return 0;
}
HWND hWndMain = CreateWindowEx(
WS_EX_STATICEDGE,
"MainWndClass",
"DirectX Tutorial #1",
WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX,
CW_USEDEFAULT,
CW_USEDEFAULT,
800, 600,
HWND_DESKTOP,
( HMENU )NULL,
( HINSTANCE )hInstance,
( LPVOID* )NULL
);
if( !hWndMain ) {
MessageBox( HWND_DESKTOP, "Cannot create the main window.", "Error", MB_OK | MB_ICONERROR );
UnregisterClass( "MainWndClass", hInstance );
return 0;
}
ShowWindow( hWndMain, SW_SHOWNORMAL );
UpdateWindow( hWndMain );
MyDirectX->Init( hWndMain );
MSG msg = {0};
while( msg.message != WM_QUIT ) {
if( PeekMessage( &msg, NULL, 0, 0, PM_REMOVE ) ) {
TranslateMessage( &msg );
DispatchMessage( &msg );
}
// Do game rendering/updating here
MyDirectX->Render( );
}
MyDirectX->CleanDirectX( );
delete [] MyDirectX;
UnregisterClass( "MainWndClass", hInstance );
return 0;
}
示例13: _tWinMain
int APIENTRY _tWinMain(HINSTANCE hinst, HINSTANCE foo1, LPTSTR foo2, int foo3) {
MSG msg;
WNDCLASSEX wcex = {sizeof(wcex)};
HANDLE htray;
HMENU hmenu;
MENUITEMINFO mi = {sizeof(mi)};
INITCOMMONCONTROLSEX icex;
RECT rect;
int style;
HWND hwnd;
wcex.lpfnWndProc = WndProc;
wcex.lpszClassName = WINDOW_CLASS;
wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
RegisterClassEx(&wcex);
icex.dwSize = sizeof(icex);
icex.dwICC = ICC_DATE_CLASSES;
InitCommonControlsEx(&icex);
hwnd = CreateWindowEx(WS_EX_NOACTIVATE | WS_EX_TOPMOST, WINDOW_CLASS, WINDOW_TITLE, 0,
0, 0, 0, 0, NULL, NULL, hinst, NULL);
if (!hwnd) return 1;
style = GetWindowLong(hwnd, GWL_STYLE);
if (style & WS_CAPTION) {
style ^= WS_CAPTION;
SetWindowLong(hwnd, GWL_STYLE, style);
SetWindowPos(hwnd, NULL, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED);
}
hcal = CreateWindowEx(0, MONTHCAL_CLASS, _T(""),
WS_CHILD | WS_VISIBLE | MCS_NOTODAY | MCS_NOTRAILINGDATES | MCS_SHORTDAYSOFWEEK | MCS_NOSELCHANGEONNAV,
0, 0, 0, 0, hwnd, NULL, hinst, NULL);
MonthCal_GetMinReqRect(hcal, &rect);
SetWindowPos(hcal, NULL, 0, 0, rect.right, rect.bottom, SWP_NOZORDER | SWP_NOMOVE);
SetWindowPos(hwnd, NULL, 0, 0, rect.right, rect.bottom, SWP_NOZORDER | SWP_NOMOVE);
tti.hwnd = hwnd;
tti.hcal = hcal;
tti.hnotify = CreateEvent(NULL, TRUE, FALSE, NULL);
tti.exit = FALSE;
htray = CreateThread(NULL, 0, &TrayThreadProc, &tti, 0, NULL);
if (!htray) return 1;
hsubmenu = CreateMenu();
mi.fMask = MIIM_STRING | MIIM_ID;
mi.wID = 1;
mi.dwTypeData = EXIT_STRING;
InsertMenuItem(hsubmenu, 0, TRUE, &mi);
hmenu = CreateMenu();
mi.fMask = MIIM_SUBMENU;
mi.hSubMenu = hsubmenu;
InsertMenuItem(hmenu, 0, TRUE, &mi);
WM_TASKBARCREATED = RegisterWindowMessageA(_T("TaskbarCreated"));
while (GetMessage(&msg, NULL, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
DestroyMenu(hmenu);
DestroyMenu(hsubmenu);
WaitForSingleObject(htray, 1000);
CloseHandle(htray);
return (int)msg.wParam;
}
示例14: Sys_BeginWait
void Sys_BeginWait(void) {
waitcursor = SetCursor(LoadCursor(NULL, IDC_WAIT));
}
示例15: createGemWindow
/////////////////////////////////////////////////////////
// createGemWindow
//
/////////////////////////////////////////////////////////
GEM_EXTERN int createGemWindow(WindowInfo &info, WindowHints &hints)
{
static int firstTime = 1;
// Register the frame class
HINSTANCE hInstance = GetModuleHandle(NULL);
if (!hInstance) {
error("GEM: Unable to get module instance");
return(0);
}
if (firstTime) {
WNDCLASS wndclass;
wndclass.style = 0;
wndclass.lpfnWndProc = (WNDPROC)MainWndProc;
wndclass.cbClsExtra = 0;
wndclass.cbWndExtra = 0;
wndclass.hInstance = hInstance;
wndclass.hCursor = LoadCursor(NULL, IDC_CROSS);
wndclass.hIcon = LoadIcon(NULL, IDI_WINLOGO);
wndclass.hbrBackground = NULL;
wndclass.lpszMenuName = NULL;
wndclass.lpszClassName = "GEM";
if (!RegisterClass(&wndclass) ) {
error("GEM: Unable to register window class");
return(0);
}
firstTime = 0;
}
DWORD dwExStyle=WS_EX_APPWINDOW | WS_EX_WINDOWEDGE;
DWORD style = WS_CLIPSIBLINGS | WS_CLIPCHILDREN;
hints.real_w = hints.width;
hints.real_h = hints.height;
int x = hints.x_offset;
int y = hints.y_offset;
bool fullscreen=(hints.fullscreen!=0);
if (fullscreen) {
DEVMODE dmScreenSettings; // Device Mode
if (!EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &dmScreenSettings)) {
error("GEM: couldn't get screen capabilities!");
}
int w = dmScreenSettings.dmPelsWidth;
int h = dmScreenSettings.dmPelsHeight;
x=y=0;
memset(&dmScreenSettings,0,
sizeof(dmScreenSettings)); // Makes Sure Memory's Cleared
dmScreenSettings.dmSize=sizeof(
dmScreenSettings); // Size Of The Devmode Structure
dmScreenSettings.dmPelsWidth =
hints.width; // Selected Screen Width
dmScreenSettings.dmPelsHeight =
hints.height; // Selected Screen Height
dmScreenSettings.dmBitsPerPel =
32; // Selected Bits Per Pixel
dmScreenSettings.dmFields=DM_BITSPERPEL|DM_PELSWIDTH|DM_PELSHEIGHT;
// Try To Set Selected Mode And Get Results. NOTE: CDS_FULLSCREEN Gets Rid Of Start Bar.
if (ChangeDisplaySettings(&dmScreenSettings,
CDS_FULLSCREEN)!=DISP_CHANGE_SUCCESSFUL) {
dmScreenSettings.dmPelsWidth = w;
dmScreenSettings.dmPelsHeight = h;
if (ChangeDisplaySettings(&dmScreenSettings,
CDS_FULLSCREEN)!=DISP_CHANGE_SUCCESSFUL) {
error("GEM: couldn't switch to fullscreen");
fullscreen=false;
} else {
hints.real_h=h;
hints.real_w=w;
}
}
}
if (fullscreen) {
dwExStyle = WS_EX_APPWINDOW;
style |= WS_POPUP;
} else {
dwExStyle=WS_EX_APPWINDOW | WS_EX_WINDOWEDGE;
if (hints.border) {
style |= WS_OVERLAPPEDWINDOW;
} else {
style |= WS_POPUP;
}
}
info.fs = fullscreen;//hints.fullscreen;
// Since Windows uses some of the window for the border, etc,
// we have to ask how big the window should really be
RECT newSize;
newSize.left = x;
newSize.top = y;
//.........这里部分代码省略.........