/** * It creates a Direct3D device usable for DXVA 2 */ static int D3dCreateDevice(vlc_va_t *va) { vlc_va_sys_t *sys = va->sys; if (sys->dx_sys.d3ddev) { msg_Dbg(va, "Reusing Direct3D9 device"); return VLC_SUCCESS; } /* */ LPDIRECT3D9 (WINAPI *Create9)(UINT SDKVersion); Create9 = (void *)GetProcAddress(sys->hd3d9_dll, "Direct3DCreate9"); if (!Create9) { msg_Err(va, "Cannot locate reference to Direct3DCreate9 ABI in DLL"); return VLC_EGENERIC; } /* */ LPDIRECT3D9 d3dobj; d3dobj = Create9(D3D_SDK_VERSION); if (!d3dobj) { msg_Err(va, "Direct3DCreate9 failed"); return VLC_EGENERIC; } sys->d3dobj = d3dobj; /* */ D3DADAPTER_IDENTIFIER9 *d3dai = &sys->d3dai; if (FAILED(IDirect3D9_GetAdapterIdentifier(sys->d3dobj, D3DADAPTER_DEFAULT, 0, d3dai))) { msg_Warn(va, "IDirect3D9_GetAdapterIdentifier failed"); ZeroMemory(d3dai, sizeof(*d3dai)); } /* */ D3DPRESENT_PARAMETERS d3dpp; ZeroMemory(&d3dpp, sizeof(d3dpp)); d3dpp.Flags = D3DPRESENTFLAG_VIDEO; d3dpp.Windowed = TRUE; d3dpp.hDeviceWindow = NULL; d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD; d3dpp.MultiSampleType = D3DMULTISAMPLE_NONE; d3dpp.PresentationInterval = D3DPRESENT_INTERVAL_DEFAULT; d3dpp.BackBufferCount = 0; /* FIXME what to put here */ d3dpp.BackBufferFormat = D3DFMT_X8R8G8B8; /* FIXME what to put here */ d3dpp.BackBufferWidth = 0; d3dpp.BackBufferHeight = 0; d3dpp.EnableAutoDepthStencil = FALSE; /* Direct3D needs a HWND to create a device, even without using ::Present this HWND is used to alert Direct3D when there's a change of focus window. For now, use GetDesktopWindow, as it looks harmless */ LPDIRECT3DDEVICE9 d3ddev; if (FAILED(IDirect3D9_CreateDevice(d3dobj, D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, GetDesktopWindow(), D3DCREATE_SOFTWARE_VERTEXPROCESSING | D3DCREATE_MULTITHREADED, &d3dpp, &d3ddev))) { msg_Err(va, "IDirect3D9_CreateDevice failed"); return VLC_EGENERIC; } sys->dx_sys.d3ddev = d3ddev; return VLC_SUCCESS; }
/*************************************************************************** * MCIQTZ_mciWhere [internal] */ static DWORD MCIQTZ_mciWhere(UINT wDevID, DWORD dwFlags, LPMCI_DGV_RECT_PARMS lpParms) { WINE_MCIQTZ* wma; IVideoWindow* pVideoWindow; IBasicVideo *pBasicVideo; HRESULT hr; HWND hWnd; RECT rc; DWORD ret = MCIERR_UNRECOGNIZED_COMMAND; TRACE("(%04x, %08X, %p)\n", wDevID, dwFlags, lpParms); if (!lpParms) return MCIERR_NULL_PARAMETER_BLOCK; wma = MCIQTZ_mciGetOpenDev(wDevID); if (!wma) return MCIERR_INVALID_DEVICE_ID; /* Find if there is a video stream and get the display window */ hr = IGraphBuilder_QueryInterface(wma->pgraph, &IID_IVideoWindow, (LPVOID*)&pVideoWindow); if (FAILED(hr)) { ERR("Cannot get IVideoWindow interface (hr = %x)\n", hr); return MCIERR_INTERNAL; } hr = IGraphBuilder_QueryInterface(wma->pgraph, &IID_IBasicVideo, (LPVOID*)&pBasicVideo); if (FAILED(hr)) { ERR("Cannot get IBasicVideo interface (hr = %x)\n", hr); IUnknown_Release(pVideoWindow); return MCIERR_INTERNAL; } hr = IVideoWindow_get_Owner(pVideoWindow, (OAHWND*)&hWnd); if (FAILED(hr)) { TRACE("No video stream, returning no window error\n"); IUnknown_Release(pVideoWindow); return MCIERR_NO_WINDOW; } if (dwFlags & MCI_DGV_WHERE_SOURCE) { if (dwFlags & MCI_DGV_WHERE_MAX) FIXME("MCI_DGV_WHERE_SOURCE_MAX stub %s\n", wine_dbgstr_rect(&rc)); IBasicVideo_get_SourceLeft(pBasicVideo, &rc.left); IBasicVideo_get_SourceTop(pBasicVideo, &rc.top); IBasicVideo_get_SourceWidth(pBasicVideo, &rc.right); IBasicVideo_get_SourceHeight(pBasicVideo, &rc.bottom); /* Undo conversion done below */ rc.right += rc.left; rc.bottom += rc.top; TRACE("MCI_DGV_WHERE_SOURCE %s\n", wine_dbgstr_rect(&rc)); } if (dwFlags & MCI_DGV_WHERE_DESTINATION) { if (dwFlags & MCI_DGV_WHERE_MAX) { GetClientRect(hWnd, &rc); TRACE("MCI_DGV_WHERE_DESTINATION_MAX %s\n", wine_dbgstr_rect(&rc)); } else { FIXME("MCI_DGV_WHERE_DESTINATION not supported yet\n"); goto out; } } if (dwFlags & MCI_DGV_WHERE_FRAME) { if (dwFlags & MCI_DGV_WHERE_MAX) FIXME("MCI_DGV_WHERE_FRAME_MAX not supported yet\n"); else FIXME("MCI_DGV_WHERE_FRAME not supported yet\n"); goto out; } if (dwFlags & MCI_DGV_WHERE_VIDEO) { if (dwFlags & MCI_DGV_WHERE_MAX) FIXME("MCI_DGV_WHERE_VIDEO_MAX not supported yet\n"); else FIXME("MCI_DGV_WHERE_VIDEO not supported yet\n"); goto out; } if (dwFlags & MCI_DGV_WHERE_WINDOW) { if (dwFlags & MCI_DGV_WHERE_MAX) { GetWindowRect(GetDesktopWindow(), &rc); TRACE("MCI_DGV_WHERE_WINDOW_MAX %s\n", wine_dbgstr_rect(&rc)); } else { GetWindowRect(hWnd, &rc); TRACE("MCI_DGV_WHERE_WINDOW %s\n", wine_dbgstr_rect(&rc)); } } ret = 0; out: /* In MCI, RECT structure is used differently: rc.right = width & rc.bottom = height * So convert the normal RECT into a MCI RECT before returning */ IVideoWindow_Release(pVideoWindow); IBasicVideo_Release(pBasicVideo); lpParms->rc.left = rc.left; lpParms->rc.top = rc.top; lpParms->rc.right = rc.right - rc.left; lpParms->rc.bottom = rc.bottom - rc.top; return ret; }
int WINAPI WinMain ( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow ) { SpaceballControlStruct scs; SpaceballAppDataStruct app; PointStr World[2]; char fname[256]; float CTM[4][4]; /* Current transformation matrix */ SiSpwHandlers DspHandlers; LONG addr = (long)&scs; HWND wndScreen; RECT screenRect; int size; DWORD dSizeNeeded; char appDir[256]; //int ssize; //char DirName[256]; ncmdshow = nCmdShow; //FILE *fp; /* * Figure out how big the screen is so that we can make our * window an appropriate size. */ wndScreen = GetDesktopWindow(); GetWindowRect ( wndScreen, &screenRect ); size = (int)(.8 * SPW_MIN( (screenRect.bottom - screenRect.top), (screenRect.right - screenRect.left) )); Spw_WindowWidth = size; Spw_WindowHeight = size; /* Add code to parse command line for alternate file --here-- */ /* Code that finds the default data file in its usual spot */ // if (0 != (dSizeNeeded = GetCurrentDirectory(256, appDir))) if (0 != (dSizeNeeded = GetModuleFileName(NULL, appDir, 256 ))) { char widgetUStr[] = "WIDGET\0"; char widgetLStr[] = "widget\0"; char DirName[256]; char *pdest; int result; FILE *fp; /* find "widget" in directory string */ pdest = strstr( appDir, widgetUStr ); if (pdest == NULL) { pdest = strstr( appDir, widgetLStr ); } if (pdest != NULL) { /* get the index of the end of "widget" */ result = pdest - appDir + strlen(widgetUStr); /* snip everything after "widget" */ appDir[result] = '\0'; /* build the file name */ strcpy(DirName, appDir); strcat(DirName, "\\dat\\widget.dat"); } /* see if we can open the file */ if (NULL != (fp=fopen(DirName, "r"))) { fclose(fp); /* close it back up */ strcpy(fname, DirName); /* save the file name */ } else /* file is in a non standard location; let user find it */ { strcpy(fname, "*.dat"); GetNTFileName( NULL, fname ); } } /* * Initialize the Spaceball data structures */ /* Spaceball tuning values */ scs.sbScaleFactor[0] = (float)0.05; scs.sbScaleFactor[1] = (float)0.05; scs.sbScaleFactor[2] = (float)0.005; scs.sbScaleFactor[3] = (float)0.0005; scs.sbScaleFactor[4] = (float)0.0005; scs.sbScaleFactor[5] = (float)0.0005; /* Initialize platform-independent data */ MainInitialize (fname, &scs, &app, (float *)CTM, World); MoveWindow(hWndMain, 300, 0, Spw_WindowWidth, Spw_WindowHeight, TRUE); SetClassLong(hWndMain, 0, (LONG)(&scs)); /* * Initialize the Spaceball, render initial scene */ InitializeSpaceball(0, hWndMain, &DspHandlers, &scs); ResetWidgetView( (float(*)[4])app.CTM, app.center ); app.redraw = TRUE; InvalidateRect(hWndMain, NULL, FALSE); return(DispatchLoopNT(&DspHandlers)); } /* end of WinMain */
int I_MessageBox(const char* text, unsigned int type) { #ifdef _WIN32 { int result = PRB_IDCANCEL; HWND current_hwnd = GetForegroundWindow(); result = MessageBox(GetDesktopWindow(), text, PACKAGE_NAME, type|MB_TASKMODAL|MB_TOPMOST); I_SwitchToWindow(current_hwnd); return result; } #endif #if 0 { typedef struct mb_hotkeys_s { int type; char *hotkeys_str; } mb_hotkeys_t; mb_hotkeys_t mb_hotkeys[] = { {PRB_MB_OK , "(press <enter> to continue)"}, {PRB_MB_OKCANCEL , "(press <enter> to continue or <esc> to cancel)"}, {PRB_MB_ABORTRETRYIGNORE , "(a - abort, r - retry, i - ignore)"}, {PRB_MB_YESNOCANCEL , "(y - yes, n - no, esc - cancel"}, {PRB_MB_YESNO , "(y - yes, n - no)"}, {PRB_MB_RETRYCANCEL , "(r - retry, <esc> - cancel)"}, {0, NULL} }; int i, c; char* hotkeys_str = NULL; type &= 0x000000ff; i = 0; while (mb_hotkeys[i].hotkeys_str) { if (mb_hotkeys[i].type == type) { hotkeys_str = mb_hotkeys[i].hotkeys_str; break; } i++; } if (hotkeys_str) { lprintf(LO_CONFIRM, "%s\n%s\n", text, hotkeys_str); result = -1; do { I_uSleep(1000); c = tolower(getchar()); if (c == 'y') result = PRB_IDYES; else if (c == 'n') result = PRB_IDNO; else if (c == 'a') result = PRB_IDABORT; else if (c == 'r') result = PRB_IDRETRY; else if (c == 'i') result = PRB_IDIGNORE; else if (c == 'o' || c == 13) result = PRB_IDOK; else if (c == 'c' || c == 27) result = PRB_IDCANCEL; } while (result == EOF); return result; } return result; } #else return PRB_IDCANCEL; #endif }
////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // ServiceMain() // Called by the Service Manager. VOID WINAPI ServiceMain( DWORD dwArgs, LPTSTR *ppszArgs) { HWND hWnd = NULL; LPCTSTR pszServiceName = ppszArgs[0]; // // Record this ServiceMain's thread ID for other threads to use. // gServiceMainThreadID = GetCurrentThreadId(); ALERT( "ServiceMain: function started. Passed inn Name is...\n" ); ALERT( pszServiceName ); ALERT( "ServiceMain: About to call RegisterServiceCtrlHandler()...\n" ); // Test to see if we can cause the message loop to start queuing... SetTimeoutTimer( 10 ); CleanStatusStruct( &gServiceStatus ); gServiceStatus.dwCurrentState = SERVICE_START_PENDING; ghService = RegisterServiceCtrlHandler( pszServiceName, ServiceHandler ); if( 0 != ghService ) { ALERT( "ServiceMain: Just came out of RegisterServiceCtrlHandler()" ); // If the state has not yet changed then push start everything... if( 0 == gdwState ) { gdwState = SERVICE_START_PENDING; // // If we are in callback mode then make sure to // start by posting a SERVICE_START_PENDING message // (even though one does not exist in the Win32 API) // so the script has a chance to start. // if( FALSE != gfCallbackMode ) { // // Call the service handler indicating that the "fake" // SERVICE_CONTROL_START event has been received. // ServiceHandler( SERVICE_CONTROL_START ); } } { char szBuffer[256]; sprintf( szBuffer, "ServiceMain: About to call My_SetServiceBits with gdwServiceBits=0x%08x", gdwServiceBits ); ALERT( szBuffer ); } if( 0 != gdwServiceBits ) { My_SetServiceBits( ghService, gdwServiceBits, TRUE, TRUE ); } ALERT( "ServiceMain: Entering message loop" ); // Call a Win32 User level function to create a message queue GetDesktopWindow(); GetWindow( NULL, GW_HWNDFIRST ); if( 1 ) { MSG Message; BOOL fContinueProcessing = TRUE; while( TRUE == fContinueProcessing ) { ALERT( "ServiceMain: Just enetered the message loop" ); try { fContinueProcessing = (BOOL) GetMessage( &Message, (HWND) NULL, 0, 0 ); #ifdef _DEBUG TCHAR szBuffer[256]; wsprintf( szBuffer, "Got message: 0x%08x", Message.message ); ALERT( szBuffer ); #endif // _DEBUG } catch (...) { ALERT( "ServiceMain: Ouch!!! We caught an exception!" ); } switch( Message.message ) { case WM_USER_SET_TIMER: ALERT( "ServiceMain: Setting timer" ); ghTimer = ::SetTimer( NULL, SERVICE_THREAD_TIMER_ID, (UINT)Message.wParam * DEFAULT_HANDLER_TIMEOUT_SCALE, (TIMERPROC)TimerHandler ); break; case WM_QUIT: fContinueProcessing = FALSE; break; case WM_QUERYENDSESSION: case WM_ENDSESSION: case WM_TIMER: ALERT( "ServiceMain: HandlerTimeoutTimer due to WM_TIMER." ); KillTimer(); gdwState = gdwTimeoutState; UpdateServiceStatus( gdwTimeoutState ); default: ALERT( "ServiceMain: Dispatching message." ); TranslateMessage( &Message ); // // Calling DispatchMessage() is probably foolish since // there is no window associated with this thread. // Per MSDN: messages that are not associated with a window cannot be dispatched by the DispatchMessage function DispatchMessage( &Message ); } } } ALERT( "ServiceMain: Just left the message loop." ); UpdateServiceStatus( gdwState ); } else { gdwState = SERVICE_STOPPED; #ifdef _DEBUG TCHAR szBuffer[ 100 ]; wsprintf( szBuffer, TEXT( "ServiceMain: ERROR! 0x08x" ), GetLastError() ); ALERT( szBuffer ); #endif // _DEBUG } ALERT( "ServiceMain: Shutting down ServiceMain()!" ); return; }
static void _glitz_wgl_create_root_context (glitz_wgl_screen_info_t *screen_info) { WNDCLASSEX wcl; ATOM klass; static PIXELFORMATDESCRIPTOR pfd = { sizeof (PIXELFORMATDESCRIPTOR), 1, PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL, PFD_TYPE_RGBA, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, PFD_MAIN_PLANE, 0, 0, 0, 0 }; int pixel_format; wcl.cbSize = sizeof (wcl); wcl.style = 0; wcl.lpfnWndProc = DefWindowProc; wcl.cbClsExtra = 0; wcl.cbWndExtra = 0; wcl.hInstance = GetModuleHandle (NULL); wcl.hIcon = NULL; wcl.hCursor = LoadCursor (NULL, IDC_ARROW); wcl.hbrBackground = NULL; wcl.lpszMenuName = NULL; wcl.lpszClassName = "glitz-wgl-root-window-class"; wcl.hIconSm = NULL; klass = RegisterClassEx (&wcl); if (!klass) { exit (1); } screen_info->root_window = CreateWindowEx (0, (LPCTSTR) (DWORD) klass, "glitz-wgl-root-window", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 100, 100, GetDesktopWindow (), NULL, GetModuleHandle (NULL), NULL); screen_info->root_dc = GetDC (screen_info->root_window); pixel_format = ChoosePixelFormat (screen_info->root_dc, &pfd); if (pixel_format != 0) { SetPixelFormat (screen_info->root_dc, pixel_format, &pfd); screen_info->root_context = wglCreateContext (screen_info->root_dc); wglMakeCurrent (screen_info->root_dc, screen_info->root_context); } else { screen_info->root_context = NULL; } }
/* ** Sys_CreateConsole */ void Sys_CreateConsole( void ) { HDC hDC; WNDCLASS wc; RECT rect; const char *DEDCLASS = "JAMP WinConsole"; int nHeight; int swidth, sheight; int DEDSTYLE = WS_POPUPWINDOW | WS_CAPTION | WS_MINIMIZEBOX; memset( &wc, 0, sizeof( wc ) ); wc.style = 0; wc.lpfnWndProc = (WNDPROC) ConWndProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = g_wv.hInstance; wc.hIcon = LoadIcon( g_wv.hInstance, MAKEINTRESOURCE(IDI_ICON1)); wc.hCursor = LoadCursor (NULL,IDC_ARROW); wc.hbrBackground = (HBRUSH__ *)COLOR_INACTIVEBORDER; wc.lpszMenuName = 0; wc.lpszClassName = DEDCLASS; if ( !RegisterClass (&wc) ) { return; } rect.left = 0; rect.right = 600; rect.top = 0; rect.bottom = 450; AdjustWindowRect( &rect, DEDSTYLE, FALSE ); hDC = GetDC( GetDesktopWindow() ); swidth = GetDeviceCaps( hDC, HORZRES ); sheight = GetDeviceCaps( hDC, VERTRES ); ReleaseDC( GetDesktopWindow(), hDC ); s_wcd.windowWidth = rect.right - rect.left + 1; s_wcd.windowHeight = rect.bottom - rect.top + 1; s_wcd.hWnd = CreateWindowEx( 0, DEDCLASS, CLIENT_CONSOLE_TITLE, DEDSTYLE, ( swidth - 600 ) / 2, ( sheight - 450 ) / 2 , rect.right - rect.left + 1, rect.bottom - rect.top + 1, NULL, NULL, g_wv.hInstance, NULL ); if ( s_wcd.hWnd == NULL ) { return; } // // create fonts // hDC = GetDC( s_wcd.hWnd ); nHeight = -MulDiv( 8, GetDeviceCaps( hDC, LOGPIXELSY), 72); s_wcd.hfBufferFont = CreateFont( nHeight, 0, 0, 0, FW_LIGHT, 0, 0, 0, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, FF_MODERN | FIXED_PITCH, "Courier New" ); ReleaseDC( s_wcd.hWnd, hDC ); // // create the input line // s_wcd.hwndInputLine = CreateWindow( "edit", NULL, WS_CHILD | WS_VISIBLE | WS_BORDER | ES_LEFT | ES_AUTOHSCROLL | WS_TABSTOP, 6, 400, s_wcd.windowWidth-20, 20, s_wcd.hWnd, ( HMENU ) INPUT_ID, // child window ID g_wv.hInstance, NULL ); // // create the buttons // s_wcd.hwndButtonCopy = CreateWindow( "button", NULL, BS_PUSHBUTTON | WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON | WS_TABSTOP, 5, 425, 72, 24, s_wcd.hWnd, ( HMENU ) COPY_ID, // child window ID g_wv.hInstance, NULL ); SendMessage( s_wcd.hwndButtonCopy, WM_SETTEXT, 0, ( LPARAM ) "Copy" ); s_wcd.hwndButtonClear = CreateWindow( "button", NULL, BS_PUSHBUTTON | WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON | WS_TABSTOP, 82, 425, 72, 24, s_wcd.hWnd, ( HMENU ) CLEAR_ID, // child window ID g_wv.hInstance, NULL ); SendMessage( s_wcd.hwndButtonClear, WM_SETTEXT, 0, ( LPARAM ) "Clear" ); s_wcd.hwndButtonQuit = CreateWindow( "button", NULL, BS_PUSHBUTTON | WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON | WS_TABSTOP, s_wcd.windowWidth-92, 425, 72, 24, s_wcd.hWnd, ( HMENU ) QUIT_ID, // child window ID g_wv.hInstance, NULL ); SendMessage( s_wcd.hwndButtonQuit, WM_SETTEXT, 0, ( LPARAM ) "Quit" ); // // create the scrollbuffer // s_wcd.hwndBuffer = CreateWindow( "edit", NULL, WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_BORDER | ES_LEFT | ES_MULTILINE | ES_AUTOVSCROLL | ES_READONLY | WS_TABSTOP, 6, 40, s_wcd.windowWidth-20, 354, s_wcd.hWnd, ( HMENU ) EDIT_ID, // child window ID g_wv.hInstance, NULL ); SendMessage( s_wcd.hwndBuffer, WM_SETFONT, ( WPARAM ) s_wcd.hfBufferFont, 0 ); s_wcd.SysInputLineWndProc = ( WNDPROC ) SetWindowLongPtr( s_wcd.hwndInputLine, GWLP_WNDPROC, ( long ) InputLineWndProc ); SendMessage( s_wcd.hwndInputLine, WM_SETFONT, ( WPARAM ) s_wcd.hfBufferFont, 0 ); SendMessage( s_wcd.hwndBuffer, EM_LIMITTEXT, ( WPARAM ) 0x7fff, 0 ); ShowWindow( s_wcd.hWnd, SW_SHOWDEFAULT); UpdateWindow( s_wcd.hWnd ); SetForegroundWindow( s_wcd.hWnd ); SetFocus( s_wcd.hwndInputLine ); Field_Clear( &s_wcd.g_consoleField ); s_wcd.g_consoleField.widthInChars = g_console_field_width; for ( int i = 0 ; i < COMMAND_HISTORY ; i++ ) { Field_Clear( &s_wcd.historyEditLines[i] ); s_wcd.historyEditLines[i].widthInChars = g_console_field_width; } s_wcd.visLevel = 1; }
static void test_custom_default_button(void) { HWND hdlg, page; PROPSHEETPAGEA psp[1]; PROPSHEETHEADERA psh; MSG msg; LRESULT result; psp[0].dwSize = sizeof (PROPSHEETPAGEA); psp[0].dwFlags = PSP_USETITLE; psp[0].hInstance = GetModuleHandleA(NULL); U(psp[0]).pszTemplate = (LPCSTR)MAKEINTRESOURCE(IDD_PROP_PAGE_WITH_CUSTOM_DEFAULT_BUTTON); U2(psp[0]).pszIcon = NULL; psp[0].pfnDlgProc = page_with_custom_default_button_dlg_proc; psp[0].pszTitle = "Page1"; psp[0].lParam = 0; psh.dwSize = PROPSHEETHEADERA_V1_SIZE; psh.dwFlags = PSH_PROPSHEETPAGE | PSH_MODELESS; psh.hwndParent = GetDesktopWindow(); psh.hInstance = GetModuleHandleA(NULL); U(psh).pszIcon = NULL; psh.pszCaption = "PropertySheet1"; psh.nPages = 1; U3(psh).ppsp = psp; U2(psh).nStartPage = 0; /* The goal of the test is to make sure that the Add button is pressed * when the ENTER key is pressed and a different control, a combobox, * has the keyboard focus. */ add_button_has_been_pressed = FALSE; /* Create the modeless property sheet. */ hdlg = (HWND)PropertySheetA(&psh); ok(hdlg != INVALID_HANDLE_VALUE, "Cannot create the property sheet\n"); /* Set the Add button as the default button. */ SendMessageA(hdlg, DM_SETDEFID, (WPARAM)IDC_PS_PUSHBUTTON1, 0); /* Make sure the default button is the Add button. */ result = SendMessageA(hdlg, DM_GETDEFID, 0, 0); ok(DC_HASDEFID == HIWORD(result), "The property sheet does not have a default button\n"); ok(IDC_PS_PUSHBUTTON1 == LOWORD(result), "The default button is not the Add button\n"); /* At this point, the combobox should have keyboard focus, so we press ENTER. * Pull the lever, Kronk! */ page = (HWND)SendMessageW(hdlg, PSM_GETCURRENTPAGEHWND, 0, 0); PostMessageW(GetDlgItem(page, IDC_PS_COMBO1), WM_KEYDOWN, VK_RETURN, 0); /* Process all the messages in the queue for this thread. */ while (PeekMessageA(&msg, NULL, 0, 0, PM_REMOVE)) { /* (!PropSheet_IsDialogMessage(hdlg, &msg)) */ if (!((BOOL)SendMessageA(hdlg, PSM_ISDIALOGMESSAGE, 0, (LPARAM)&msg))) { TranslateMessage(&msg); DispatchMessageA(&msg); } } ok(add_button_has_been_pressed, "The Add button has not been pressed!\n"); DestroyWindow(hdlg); }
//激活信息窗口 CShortMessage * CIMMain::ActiveShortWnd(long int dwUserID, char* pNickName, bool bCreate) { //变量定义 INT_PTR iCloseIndex=-1,iHideIndex=-1; UserItemStruct stUserItem; ZeroMemory(&stUserItem, sizeof(stUserItem)); stUserItem.GameUserInfo.dwUserID = dwUserID; stUserItem.GameUserInfo.dwAccID = 0; strcpy(stUserItem.GameUserInfo.nickName, pNickName); //寻找敏合窗口 for (INT_PTR i=0;i<m_ShortMessage.GetCount();i++) { CShortMessage * pShortMessageWnd=(CShortMessage *)m_ShortMessage.GetAt(i); ASSERT(pShortMessageWnd!=NULL); if (pShortMessageWnd!= NULL) { if (dwUserID==pShortMessageWnd->m_dwTargetUserID) { if (pShortMessageWnd->GetSafeHwnd()==NULL) { AfxSetResourceHandle(GetModuleHandle(NULL)); pShortMessageWnd->Create(IDD_SHORT_MESSAGE,GetDesktopWindow()); pShortMessageWnd->CenterWindow(); } pShortMessageWnd->ShowWindow(SW_SHOWNOACTIVATE); return pShortMessageWnd; } } else { m_ShortMessage.RemoveAt(i); } if (bCreate==true) { if ((iCloseIndex==-1)&&(pShortMessageWnd->GetSafeHwnd()==NULL)) iCloseIndex=i; if ((iHideIndex==-1)&&(pShortMessageWnd->GetSafeHwnd()!=NULL)&&(pShortMessageWnd->IsWindowVisible()==FALSE)) iHideIndex=i; } } //使用关闭的窗口 if ((bCreate==true)&&(iCloseIndex>=0)) { CShortMessage * pShortMessageWnd=(CShortMessage *)m_ShortMessage.GetAt(iCloseIndex); ASSERT(pShortMessageWnd!=NULL); if (pShortMessageWnd->GetSafeHwnd()==NULL) { AfxSetResourceHandle(GetModuleHandle(NULL)); pShortMessageWnd->Create(IDD_SHORT_MESSAGE,GetDesktopWindow()); pShortMessageWnd->CenterWindow(); } SendMsgUserStruct user; pShortMessageWnd->TransUserInfo(&stUserItem, &user); pShortMessageWnd->SetTalkInfo(&user,GetMainRoom()->m_PlaceUserInfo.dwGamePower,"大厅"); pShortMessageWnd->ShowWindow(SW_SHOWNOACTIVATE); return pShortMessageWnd; } //使用隐藏窗口 if ((bCreate==true)&&(iHideIndex>=0)) { CShortMessage * pShortMessageWnd=(CShortMessage *)m_ShortMessage.GetAt(iHideIndex); ASSERT(pShortMessageWnd!=NULL); SendMsgUserStruct user; pShortMessageWnd->TransUserInfo(&stUserItem, &user); pShortMessageWnd->SetTalkInfo(&user,GetMainRoom()->m_PlaceUserInfo.dwGamePower,"大厅"); pShortMessageWnd->ShowWindow(SW_SHOWNOACTIVATE); return pShortMessageWnd; } //建立新窗口 if ((bCreate==true)&&(m_ShortMessage.GetCount()<m_iMaxShortWnd)) { try { CShortMessage * pShortMessageWnd=new CShortMessage(this); AfxSetResourceHandle(GetModuleHandle(NULL)); pShortMessageWnd->m_bIsInRoom = false; SendMsgUserStruct user; pShortMessageWnd->TransUserInfo(&stUserItem, &user); pShortMessageWnd->SetTalkInfo(&user,GetMainRoom()->m_PlaceUserInfo.dwGamePower,"大厅"); pShortMessageWnd->Create(IDD_SHORT_MESSAGE,GetDesktopWindow()); pShortMessageWnd->CenterWindow(); pShortMessageWnd->ShowWindow(SW_SHOWNOACTIVATE); m_ShortMessage.Add(pShortMessageWnd); return pShortMessageWnd; } catch (...) { return NULL; } } return NULL; }
// エントリポイント int WINAPI _tWinMain( HINSTANCE hInst, HINSTANCE, LPTSTR, int ) { LARGE_INTEGER nNowTime, nLastTime; // 現在とひとつ前の時刻 LARGE_INTEGER nTimeFreq; // 時間単位 // 画面サイズ g_nClientWidth = VIEW_WIDTH; // 幅 g_nClientHeight = VIEW_HEIGHT; // 高さ // Register the window class WNDCLASSEX wc = { sizeof( WNDCLASSEX ), CS_CLASSDC, MsgProc, 0L, 0L, GetModuleHandle( NULL ), NULL, NULL, NULL, NULL, _T( "D3D Sample" ), NULL }; RegisterClassEx( &wc ); RECT rcRect; SetRect( &rcRect, 0, 0, g_nClientWidth, g_nClientHeight ); AdjustWindowRect( &rcRect, WS_OVERLAPPEDWINDOW, FALSE ); g_hWnd = CreateWindow( _T( "D3D Sample" ), _T( "Movement_4_1b" ), WS_OVERLAPPEDWINDOW, 100, 20, rcRect.right - rcRect.left, rcRect.bottom - rcRect.top, GetDesktopWindow(), NULL, wc.hInstance, NULL ); // Initialize Direct3D if( SUCCEEDED( InitD3D() ) && SUCCEEDED( MakeShaders() ) ) { // Create the shaders if( SUCCEEDED( InitDrawModes() ) ) { if ( SUCCEEDED( InitGeometry() ) ) { // ジオメトリ作成 // Show the window ShowWindow( g_hWnd, SW_SHOWDEFAULT ); UpdateWindow( g_hWnd ); InitCharacter(); // キャラクタ初期化 QueryPerformanceFrequency( &nTimeFreq ); // 時間単位 QueryPerformanceCounter( &nLastTime ); // 1フレーム前時刻初期化 // Enter the message loop MSG msg; ZeroMemory( &msg, sizeof( msg ) ); while( msg.message != WM_QUIT ) { Render(); MoveCharacter(); do { if( PeekMessage( &msg, NULL, 0U, 0U, PM_REMOVE ) ) { TranslateMessage( &msg ); DispatchMessage( &msg ); } QueryPerformanceCounter( &nNowTime ); } while( ( ( nNowTime.QuadPart - nLastTime.QuadPart ) < ( nTimeFreq.QuadPart / 90 ) ) && ( msg.message != WM_QUIT ) ); while( ( ( nNowTime.QuadPart - nLastTime.QuadPart ) < ( nTimeFreq.QuadPart / 60 ) ) && ( msg.message != WM_QUIT ) ) { QueryPerformanceCounter( &nNowTime ); } nLastTime = nNowTime; g_pSwapChain->Present( 0, 0 ); // 表示 } } } } // Clean up everything and exit the app Cleanup(); UnregisterClass( _T( "D3D Sample" ), wc.hInstance ); return 0; }
DWORD WINAPI Cadthread(LPVOID lpParam) { OSVERSIONINFO OSversion; OSversion.dwOSVersionInfoSize=sizeof(OSVERSIONINFO); GetVersionEx(&OSversion); HDESK desktop=NULL; desktop = OpenInputDesktop(0, FALSE, DESKTOP_CREATEMENU | DESKTOP_CREATEWINDOW | DESKTOP_ENUMERATE | DESKTOP_HOOKCONTROL | DESKTOP_WRITEOBJECTS | DESKTOP_READOBJECTS | DESKTOP_SWITCHDESKTOP | GENERIC_WRITE ); if (desktop == NULL) vnclog.Print(LL_INTERR, VNCLOG("OpenInputdesktop Error \n")); else vnclog.Print(LL_INTERR, VNCLOG("OpenInputdesktop OK\n")); HDESK old_desktop = GetThreadDesktop(GetCurrentThreadId()); DWORD dummy; char new_name[256]; if (desktop) { if (!GetUserObjectInformation(desktop, UOI_NAME, &new_name, 256, &dummy)) { vnclog.Print(LL_INTERR, VNCLOG("!GetUserObjectInformation \n")); } vnclog.Print(LL_INTERR, VNCLOG("SelectHDESK to %s (%x) from %x\n"), new_name, desktop, old_desktop); if (!SetThreadDesktop(desktop)) { vnclog.Print(LL_INTERR, VNCLOG("SelectHDESK:!SetThreadDesktop \n")); } } ////// if(OSversion.dwMajorVersion>=6 && vncService::RunningAsService()) { if( vncService::RunningAsService() &&!IsSoftwareCadEnabled()) { DWORD result=MessageBoxSecure(NULL,"UAC is Disable, make registry changes to allow cad","Warning",MB_YESNO); if (result==IDYES) { HANDLE hProcess=NULL,hPToken=NULL; DWORD id=GetExplorerLogonPid(); if (id!=0) { hProcess = OpenProcess(MAXIMUM_ALLOWED,FALSE,id); if (!hProcess) goto error; if(!OpenProcessToken(hProcess,TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY |TOKEN_DUPLICATE|TOKEN_ASSIGN_PRIMARY|TOKEN_ADJUST_SESSIONID | TOKEN_READ | TOKEN_WRITE, &hPToken)) { CloseHandle(hProcess); goto error; } char dir[MAX_PATH]; char exe_file_name[MAX_PATH]; GetModuleFileName(0, exe_file_name, MAX_PATH); strcpy(dir, exe_file_name); strcat(dir, " -softwarecadhelper"); STARTUPINFO StartUPInfo; PROCESS_INFORMATION ProcessInfo; HANDLE Token=NULL; HANDLE process=NULL; ZeroMemory(&StartUPInfo,sizeof(STARTUPINFO)); ZeroMemory(&ProcessInfo,sizeof(PROCESS_INFORMATION)); StartUPInfo.wShowWindow = SW_SHOW; StartUPInfo.lpDesktop = "Winsta0\\Default"; StartUPInfo.cb = sizeof(STARTUPINFO); CreateProcessAsUser(hPToken,NULL,dir,NULL,NULL,FALSE,DETACHED_PROCESS,NULL,NULL,&StartUPInfo,&ProcessInfo); DWORD errorcode=GetLastError(); if (process) CloseHandle(process); if (Token) CloseHandle(Token); if (ProcessInfo.hProcess) CloseHandle(ProcessInfo.hProcess); if (ProcessInfo.hThread) CloseHandle(ProcessInfo.hThread); if (errorcode == 1314) goto error; goto gotome; error: Enable_softwareCAD_elevated(); } } } } gotome: ///////////////////// if(OSversion.dwMajorVersion==6)//&& OSversion.dwMinorVersion>=1) //win7 // test win7 +Vista { if (hShutdownEventcad==NULL ) hShutdownEventcad = OpenEvent(EVENT_MODIFY_STATE, FALSE, "Global\\SessionEventUltraCad"); if (hShutdownEventcad!=NULL ) SetEvent(hShutdownEventcad); if (old_desktop) SetThreadDesktop(old_desktop); if (desktop) CloseDesktop(desktop); return 0; } HKEY hKey; DWORD isLUAon = 0; if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, TEXT("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System"), 0, KEY_READ, &hKey) == ERROR_SUCCESS) { DWORD LUAbufSize = 4; RegQueryValueEx(hKey, TEXT("EnableLUA"), NULL, NULL, (LPBYTE)&isLUAon, &LUAbufSize); RegCloseKey(hKey); } if (isLUAon != 1 && OSversion.dwMajorVersion==6) { if (hShutdownEventcad==NULL ) hShutdownEventcad = OpenEvent(EVENT_MODIFY_STATE, FALSE, "Global\\SessionEventUltraCad"); if (hShutdownEventcad!=NULL ) SetEvent(hShutdownEventcad); if (old_desktop) SetThreadDesktop(old_desktop); if (desktop) CloseDesktop(desktop); return 0; } //Full path needed, sometimes it just default to system32 char WORKDIR[MAX_PATH]; char mycommand[MAX_PATH]; if (GetModuleFileName(NULL, WORKDIR, MAX_PATH)) { char* p = strrchr(WORKDIR, '\\'); if (p == NULL) return 0; *p = '\0'; } strcpy(mycommand,""); strcat(mycommand,WORKDIR);//set the directory strcat(mycommand,"\\"); strcat(mycommand,"cad.exe"); int nr=(LONG_PTR)ShellExecute(GetDesktopWindow(), "open", mycommand, "", 0, SW_SHOWNORMAL); if (nr<=32) { //error // if ( nr==SE_ERR_ACCESSDENIED ) vncTimedMsgBox::Do( sz_ID_CADPERMISSION, sz_ID_ULTRAVNC_WARNING, MB_ICONINFORMATION | MB_OK ); if ( nr==ERROR_PATH_NOT_FOUND || nr==ERROR_FILE_NOT_FOUND) vncTimedMsgBox::Do( sz_ID_CADERRORFILE, sz_ID_ULTRAVNC_WARNING, MB_ICONINFORMATION | MB_OK ); } if (old_desktop) SetThreadDesktop(old_desktop); if (desktop) CloseDesktop(desktop); return 0; }
/* PauseBox */ int WDPROC PauseBox(LPPW lppw) { MSG msg; HDC hdc; int width, height; TEXTMETRIC tm; RECT rect; char *current_pause_title = lppw->Title; static char TITLE_PAUSE_MOUSE[] = "waiting for mouse click"; if (paused_for_mouse) current_pause_title = TITLE_PAUSE_MOUSE; if (!lppw->hPrevInstance) CreatePauseClass(lppw); GetWindowRect(GetDesktopWindow(), &rect); if ( (lppw->Origin.x == CW_USEDEFAULT) || (lppw->Origin.x == 0) ) lppw->Origin.x = (rect.right + rect.left) / 2; if ( (lppw->Origin.y == CW_USEDEFAULT) || (lppw->Origin.y == 0) ) lppw->Origin.y = (rect.bottom + rect.top) / 2; hdc = GetDC(NULL); SelectObject(hdc, GetStockObject(SYSTEM_FONT)); GetTextMetrics(hdc, &tm); width = max(24,4+_fstrlen(lppw->Message)) * tm.tmAveCharWidth; width = min(width, rect.right-rect.left); height = 28 * (tm.tmHeight + tm.tmExternalLeading) / 4; ReleaseDC(NULL,hdc); lppw->hWndPause = CreateWindowEx( WS_EX_DLGMODALFRAME | WS_EX_TOPMOST | WS_EX_APPWINDOW , szPauseClass, current_pause_title, /* HBB 981202: WS_POPUPWINDOW would have WS_SYSMENU in it, but we don't * want, nor need, a System menu in our Pause windows. Actually, it was * emptied manually, in the WM_CREATE handler below, in the original code. * This solution seems cleaner. */ WS_POPUP | WS_BORDER | WS_CAPTION, lppw->Origin.x - width/2, lppw->Origin.y - height/2, width, height, lppw->hWndParent, NULL, lppw->hInstance, lppw); SendMessage(lppw->hCancel, BM_SETSTYLE, (WPARAM)BS_DEFPUSHBUTTON, (LPARAM)FALSE); /* Don't show the pause "OK CANCEL" dialog for "pause mouse ..." -- well, show it only for "pause -1". Note: maybe to show in the window titlebar or somewhere else a message like graphwin.Title = "gnuplot pausing (waiting for mouse click)"; */ if (!paused_for_mouse) { ShowWindow(lppw->hWndPause, SW_SHOWNORMAL); BringWindowToTop(lppw->hWndPause); UpdateWindow(lppw->hWndPause); } lppw->bPause = TRUE; lppw->bPauseCancel = IDCANCEL; while (lppw->bPause) { /* HBB 20021211: Nigel Nunn found a better way to avoid * 100% CPU load --> use it */ if (PeekMessage(&msg, 0, 0, 0, PM_REMOVE)) { /* wait until window closed */ TranslateMessage(&msg); DispatchMessage(&msg); } else WaitMessage(); } DestroyWindow(lppw->hWndPause); return(lppw->bPauseCancel); }
/* * Dialog-box function for the key list box. */ static INT_PTR CALLBACK KeyListProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { struct RSAKey *rkey; struct ssh2_userkey *skey; switch (msg) { case WM_INITDIALOG: /* * Centre the window. */ { /* centre the window */ RECT rs, rd; HWND hw; hw = GetDesktopWindow(); if (GetWindowRect(hw, &rs) && GetWindowRect(hwnd, &rd)) MoveWindow(hwnd, (rs.right + rs.left + rd.left - rd.right) / 2, (rs.bottom + rs.top + rd.top - rd.bottom) / 2, rd.right - rd.left, rd.bottom - rd.top, TRUE); } if (has_help()) SetWindowLongPtr(hwnd, GWL_EXSTYLE, GetWindowLongPtr(hwnd, GWL_EXSTYLE) | WS_EX_CONTEXTHELP); else { HWND item = GetDlgItem(hwnd, 103); /* the Help button */ if (item) DestroyWindow(item); } keylist = hwnd; { static int tabs[] = { 35, 75, 250 }; SendDlgItemMessage(hwnd, 100, LB_SETTABSTOPS, sizeof(tabs) / sizeof(*tabs), (LPARAM) tabs); } keylist_update(); return 0; case WM_COMMAND: switch (LOWORD(wParam)) { case IDOK: case IDCANCEL: keylist = NULL; DestroyWindow(hwnd); return 0; case 101: /* add key */ if (HIWORD(wParam) == BN_CLICKED || HIWORD(wParam) == BN_DOUBLECLICKED) { if (passphrase_box) { MessageBeep(MB_ICONERROR); SetForegroundWindow(passphrase_box); break; } prompt_add_keyfile(); } return 0; case 102: /* remove key */ if (HIWORD(wParam) == BN_CLICKED || HIWORD(wParam) == BN_DOUBLECLICKED) { int i; int rCount, sCount; int *selectedArray; /* our counter within the array of selected items */ int itemNum; /* get the number of items selected in the list */ int numSelected = SendDlgItemMessage(hwnd, 100, LB_GETSELCOUNT, 0, 0); /* none selected? that was silly */ if (numSelected == 0) { MessageBeep(0); break; } /* get item indices in an array */ selectedArray = snewn(numSelected, int); SendDlgItemMessage(hwnd, 100, LB_GETSELITEMS, numSelected, (WPARAM)selectedArray); itemNum = numSelected - 1; rCount = pageant_count_ssh1_keys(); sCount = pageant_count_ssh2_keys(); /* go through the non-rsakeys until we've covered them all, * and/or we're out of selected items to check. note that * we go *backwards*, to avoid complications from deleting * things hence altering the offset of subsequent items */ for (i = sCount - 1; (itemNum >= 0) && (i >= 0); i--) { skey = pageant_nth_ssh2_key(i); if (selectedArray[itemNum] == rCount + i) { pageant_delete_ssh2_key(skey); skey->alg->freekey(skey->data); sfree(skey); itemNum--; } } /* do the same for the rsa keys */ for (i = rCount - 1; (itemNum >= 0) && (i >= 0); i--) { rkey = pageant_nth_ssh1_key(i); if(selectedArray[itemNum] == i) { pageant_delete_ssh1_key(rkey); freersakey(rkey); sfree(rkey); itemNum--; } } sfree(selectedArray); keylist_update(); } return 0; case 103: /* help */ if (HIWORD(wParam) == BN_CLICKED || HIWORD(wParam) == BN_DOUBLECLICKED) { launch_help(hwnd, WINHELP_CTX_pageant_general); } return 0; } return 0; case WM_HELP: { int id = ((LPHELPINFO)lParam)->iCtrlId; const char *topic = NULL; switch (id) { case 100: topic = WINHELP_CTX_pageant_keylist; break; case 101: topic = WINHELP_CTX_pageant_addkey; break; case 102: topic = WINHELP_CTX_pageant_remkey; break; } if (topic) { launch_help(hwnd, topic); } else { MessageBeep(0); } } break; case WM_CLOSE: keylist = NULL; DestroyWindow(hwnd); return 0; }
static void test_disableowner(void) { HPROPSHEETPAGE hpsp[1]; PROPSHEETPAGEA psp; PROPSHEETHEADERA psh; INT_PTR p; register_parent_wnd_class(); parenthwnd = CreateWindowA("parent class", "", WS_CAPTION | WS_SYSMENU | WS_VISIBLE, 100, 100, 100, 100, GetDesktopWindow(), NULL, GetModuleHandleA(NULL), 0); memset(&psp, 0, sizeof(psp)); psp.dwSize = sizeof(psp); psp.dwFlags = 0; psp.hInstance = GetModuleHandleA(NULL); U(psp).pszTemplate = "prop_page1"; U2(psp).pszIcon = NULL; psp.pfnDlgProc = NULL; psp.lParam = 0; hpsp[0] = CreatePropertySheetPageA(&psp); memset(&psh, 0, sizeof(psh)); psh.dwSize = PROPSHEETHEADERA_V1_SIZE; psh.dwFlags = PSH_USECALLBACK; psh.pszCaption = "test caption"; psh.nPages = 1; psh.hwndParent = parenthwnd; U3(psh).phpage = hpsp; psh.pfnCallback = disableowner_callback; p = PropertySheetA(&psh); todo_wine ok(p == 0, "Expected 0, got %ld\n", p); ok(IsWindowEnabled(parenthwnd) != 0, "parent window should be enabled\n"); DestroyWindow(parenthwnd); }
bool Syscon_Init() { HDC hDC; WNDCLASS wc; RECT rect; const char *DEDCLASS = "Q3 WinConsole"; int nHeight; int swidth, sheight; int DEDSTYLE = WS_POPUPWINDOW | WS_CAPTION | WS_MINIMIZEBOX; memset( &wc, 0, sizeof( wc ) ); wc.style = 0; wc.lpfnWndProc = (WNDPROC) ConWndProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = GetModuleHandle(0); // wc.hIcon = LoadIcon( g_wv.hInstance, MAKEINTRESOURCE(IDI_ICON1)); wc.hCursor = LoadCursor (NULL,IDC_ARROW); wc.hbrBackground = (HBRUSH)COLOR_WINDOW; wc.lpszMenuName = 0; wc.lpszClassName = DEDCLASS; if ( !RegisterClass (&wc) ) return false; rect.left = 0; rect.right = 540; rect.top = 0; rect.bottom = 450; AdjustWindowRect( &rect, DEDSTYLE, FALSE ); hDC = GetDC( GetDesktopWindow() ); swidth = GetDeviceCaps( hDC, HORZRES ); sheight = GetDeviceCaps( hDC, VERTRES ); ReleaseDC( GetDesktopWindow(), hDC ); s_wcd.windowWidth = rect.right - rect.left + 1; s_wcd.windowHeight = rect.bottom - rect.top + 1; s_wcd.hWnd = CreateWindowEx( 0, DEDCLASS, "Game", DEDSTYLE, ( swidth - 600 ) / 2, ( sheight - 450 ) / 2 , rect.right - rect.left + 1, rect.bottom - rect.top + 1, NULL, NULL, GetModuleHandle(0), NULL ); if ( s_wcd.hWnd == NULL ) { return false; } // // create fonts // hDC = GetDC( s_wcd.hWnd ); nHeight = -MulDiv( 8, GetDeviceCaps( hDC, LOGPIXELSY), 72); s_wcd.hfBufferFont = CreateFont( nHeight, 0, 0, 0, FW_LIGHT, 0, 0, 0, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, FF_MODERN | FIXED_PITCH, "Courier New" ); ReleaseDC( s_wcd.hWnd, hDC ); // // create the input line // s_wcd.hwndInputLine = CreateWindow( "edit", NULL, WS_CHILD | WS_VISIBLE | WS_BORDER | ES_LEFT | ES_AUTOHSCROLL, 6, 400, 528, 20, s_wcd.hWnd, ( HMENU ) INPUT_ID, // child window ID GetModuleHandle(0), NULL ); // // create the buttons // s_wcd.hwndButtonCopy = CreateWindow( "button", NULL, BS_PUSHBUTTON | WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON, 5, 425, 72, 24, s_wcd.hWnd, ( HMENU ) COPY_ID, // child window ID GetModuleHandle(0), NULL ); SendMessage( s_wcd.hwndButtonCopy, WM_SETTEXT, 0, ( LPARAM ) "copy" ); s_wcd.hwndButtonClear = CreateWindow( "button", NULL, BS_PUSHBUTTON | WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON, 82, 425, 72, 24, s_wcd.hWnd, ( HMENU ) CLEAR_ID, // child window ID GetModuleHandle(0), NULL ); SendMessage( s_wcd.hwndButtonClear, WM_SETTEXT, 0, ( LPARAM ) "clear" ); s_wcd.hwndButtonQuit = CreateWindow( "button", NULL, BS_PUSHBUTTON | WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON, 462, 425, 72, 24, s_wcd.hWnd, ( HMENU ) QUIT_ID, // child window ID GetModuleHandle(0), NULL ); SendMessage( s_wcd.hwndButtonQuit, WM_SETTEXT, 0, ( LPARAM ) "quit" ); // // create the scrollbuffer // s_wcd.hwndBuffer = CreateWindow( "edit", NULL, WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_BORDER | ES_LEFT | ES_MULTILINE | ES_AUTOVSCROLL | ES_READONLY, 6, 40, 526, 354, s_wcd.hWnd, ( HMENU ) EDIT_ID, // child window ID GetModuleHandle(0), NULL ); SendMessage( s_wcd.hwndBuffer, WM_SETFONT, ( WPARAM ) s_wcd.hfBufferFont, 0 ); s_wcd.SysInputLineWndProc = ( WNDPROC ) SetWindowLongPtr( s_wcd.hwndInputLine, GWLP_WNDPROC, (LONG_PTR) InputLineWndProc ); SendMessage( s_wcd.hwndInputLine, WM_SETFONT, ( WPARAM ) s_wcd.hfBufferFont, 0 ); ShowWindow( s_wcd.hWnd, SW_SHOWDEFAULT); UpdateWindow( s_wcd.hWnd ); SetForegroundWindow( s_wcd.hWnd ); SetFocus( s_wcd.hwndInputLine ); s_wcd.visLevel = 1; con_redirectOutput(Syscon_Print); return true; }
static void test_wiznavigation(void) { HPROPSHEETPAGE hpsp[4]; PROPSHEETPAGEA psp[4]; PROPSHEETHEADERA psh; HWND hdlg, control; LONG_PTR controlID; DWORD style; LRESULT defidres; BOOL hwndtoindex_supported = TRUE; const INT nextID = 12324; const INT backID = 12323; HHOOK hook; /* set up a hook proc in order to subclass the main dialog early on */ hook = SetWindowsHookExW( WH_CBT, hook_proc, NULL, GetCurrentThreadId() ); /* create the property sheet pages */ memset(psp, 0, sizeof(PROPSHEETPAGEA) * 4); psp[0].dwSize = sizeof(PROPSHEETPAGEA); psp[0].hInstance = GetModuleHandleA(NULL); U(psp[0]).pszTemplate = (LPCSTR)MAKEINTRESOURCE(IDD_PROP_PAGE_INTRO); psp[0].pfnDlgProc = nav_page_proc; hpsp[0] = CreatePropertySheetPageA(&psp[0]); psp[1].dwSize = sizeof(PROPSHEETPAGEA); psp[1].hInstance = GetModuleHandleA(NULL); U(psp[1]).pszTemplate = (LPCSTR)MAKEINTRESOURCE(IDD_PROP_PAGE_EDIT); psp[1].pfnDlgProc = nav_page_proc; hpsp[1] = CreatePropertySheetPageA(&psp[1]); psp[2].dwSize = sizeof(PROPSHEETPAGEA); psp[2].hInstance = GetModuleHandleA(NULL); U(psp[2]).pszTemplate = (LPCSTR)MAKEINTRESOURCE(IDD_PROP_PAGE_RADIO); psp[2].pfnDlgProc = nav_page_proc; hpsp[2] = CreatePropertySheetPageA(&psp[2]); psp[3].dwSize = sizeof(PROPSHEETPAGEA); psp[3].hInstance = GetModuleHandleA(NULL); U(psp[3]).pszTemplate = (LPCSTR)MAKEINTRESOURCE(IDD_PROP_PAGE_EXIT); psp[3].pfnDlgProc = nav_page_proc; hpsp[3] = CreatePropertySheetPageA(&psp[3]); /* set up the property sheet dialog */ memset(&psh, 0, sizeof(psh)); psh.dwSize = PROPSHEETHEADERA_V1_SIZE; psh.dwFlags = PSH_MODELESS | PSH_WIZARD; psh.pszCaption = "A Wizard"; psh.nPages = 4; psh.hwndParent = GetDesktopWindow(); U3(psh).phpage = hpsp; hdlg = (HWND)PropertySheetA(&psh); ok(hdlg != INVALID_HANDLE_VALUE, "got invalid handle %p\n", hdlg); ok(active_page == 0, "Active page should be 0. Is: %d\n", active_page); style = GetWindowLongA(hdlg, GWL_STYLE) & ~(DS_CONTEXTHELP|WS_SYSMENU); ok(style == (WS_POPUP|WS_VISIBLE|WS_CLIPSIBLINGS|WS_CAPTION| DS_MODALFRAME|DS_SETFONT|DS_3DLOOK), "got unexpected style: %x\n", style); control = GetFocus(); controlID = GetWindowLongPtrA(control, GWLP_ID); ok(controlID == nextID, "Focus should have been set to the Next button. Expected: %d, Found: %ld\n", nextID, controlID); /* simulate pressing the Next button */ SendMessageA(hdlg, PSM_PRESSBUTTON, PSBTN_NEXT, 0); if (!active_page) hwndtoindex_supported = FALSE; if (hwndtoindex_supported) ok(active_page == 1, "Active page should be 1 after pressing Next. Is: %d\n", active_page); control = GetFocus(); controlID = GetWindowLongPtrA(control, GWLP_ID); ok(controlID == IDC_PS_EDIT1, "Focus should be set to the first item on the second page. Expected: %d, Found: %ld\n", IDC_PS_EDIT1, controlID); defidres = SendMessageA(hdlg, DM_GETDEFID, 0, 0); ok(defidres == MAKELRESULT(nextID, DC_HASDEFID), "Expected default button ID to be %d, is %d\n", nextID, LOWORD(defidres)); /* set the focus to the second edit box on this page */ SetFocus(GetNextDlgTabItem(hdlg, control, FALSE)); /* press next again */ SendMessageA(hdlg, PSM_PRESSBUTTON, PSBTN_NEXT, 0); if (hwndtoindex_supported) ok(active_page == 2, "Active page should be 2 after pressing Next. Is: %d\n", active_page); control = GetFocus(); controlID = GetWindowLongPtrA(control, GWLP_ID); ok(controlID == IDC_PS_RADIO1, "Focus should have been set to item on third page. Expected: %d, Found %ld\n", IDC_PS_RADIO1, controlID); /* back button */ SendMessageA(hdlg, PSM_PRESSBUTTON, PSBTN_BACK, 0); if (hwndtoindex_supported) ok(active_page == 1, "Active page should be 1 after pressing Back. Is: %d\n", active_page); control = GetFocus(); controlID = GetWindowLongPtrA(control, GWLP_ID); ok(controlID == IDC_PS_EDIT1, "Focus should have been set to the first item on second page. Expected: %d, Found %ld\n", IDC_PS_EDIT1, controlID); defidres = SendMessageA(hdlg, DM_GETDEFID, 0, 0); ok(defidres == MAKELRESULT(backID, DC_HASDEFID), "Expected default button ID to be %d, is %d\n", backID, LOWORD(defidres)); /* press next twice */ SendMessageA(hdlg, PSM_PRESSBUTTON, PSBTN_NEXT, 0); if (hwndtoindex_supported) ok(active_page == 2, "Active page should be 2 after pressing Next. Is: %d\n", active_page); SendMessageA(hdlg, PSM_PRESSBUTTON, PSBTN_NEXT, 0); if (hwndtoindex_supported) ok(active_page == 3, "Active page should be 3 after pressing Next. Is: %d\n", active_page); else active_page = 3; control = GetFocus(); controlID = GetWindowLongPtrA(control, GWLP_ID); ok(controlID == nextID, "Focus should have been set to the Next button. Expected: %d, Found: %ld\n", nextID, controlID); /* try to navigate away, but shouldn't be able to */ SendMessageA(hdlg, PSM_PRESSBUTTON, PSBTN_BACK, 0); ok(active_page == 3, "Active page should still be 3 after pressing Back. Is: %d\n", active_page); defidres = SendMessageA(hdlg, DM_GETDEFID, 0, 0); ok(defidres == MAKELRESULT(nextID, DC_HASDEFID), "Expected default button ID to be %d, is %d\n", nextID, LOWORD(defidres)); DestroyWindow(hdlg); UnhookWindowsHookEx( hook ); }
static void test_iface_refcnt(void) { HRESULT hr; IDirectDraw *DDraw1; IDirectDraw2 *DDraw2; IDirectDraw4 *DDraw4; IDirectDraw7 *DDraw7; IDirect3D7 *D3D7; IDirect3D3 *D3D3; IDirect3D2 *D3D2; IDirect3D *D3D1; long ref; hr = pDirectDrawCreateEx(NULL, (void **) &DDraw7, &IID_IDirectDraw7, NULL); ok(hr == DD_OK || hr==DDERR_NODIRECTDRAWSUPPORT, "DirectDrawCreateEx returned: %lx\n", hr); if(!DDraw7) { trace("Couldn't create DDraw interface, skipping tests\n"); return; } ref = getRefcount( (IUnknown *) DDraw7); ok(ref == 1, "Initial IDirectDraw7 reference count is %ld\n", ref); hr = IDirectDraw7_QueryInterface(DDraw7, &IID_IDirectDraw4, (void **) &DDraw4); ok(hr == DD_OK, "IDirectDraw7_QueryInterface returned %08lx\n", hr); hr = IDirectDraw7_QueryInterface(DDraw7, &IID_IDirectDraw2, (void **) &DDraw2); ok(hr == DD_OK, "IDirectDraw7_QueryInterf&ace returned %08lx\n", hr); hr = IDirectDraw7_QueryInterface(DDraw7, &IID_IDirectDraw, (void **) &DDraw1); ok(hr == DD_OK, "IDirectDraw7_QueryInterface returned %08lx\n", hr); /* All interfaces now have refcount 1! */ ref = getRefcount( (IUnknown *) DDraw7); ok(ref == 1, "IDirectDraw7 reference count is %ld\n", ref); ref = getRefcount( (IUnknown *) DDraw7); ok(ref == 1, "IDirectDraw7 reference count is %ld\n", ref); ref = getRefcount( (IUnknown *) DDraw4); ok(ref == 1, "IDirectDraw4 reference count is %ld\n", ref); ref = getRefcount( (IUnknown *) DDraw2); ok(ref == 1, "IDirectDraw2 reference count is %ld\n", ref); ref = getRefcount( (IUnknown *) DDraw1); ok(ref == 1, "IDirectDraw reference count is %ld\n", ref); hr = IDirectDraw7_QueryInterface(DDraw7, &IID_IDirect3D7, (void **) &D3D7); ok(hr == DD_OK, "IDirectDraw7_QueryInterface returned %08lx\n", hr); /* Apparently IDirectDrawX and IDirect3DX are linked together */ ref = getRefcount( (IUnknown *) D3D7); ok(ref == 2, "IDirect3D7 reference count is %ld\n", ref); ref = getRefcount( (IUnknown *) DDraw7); ok(ref == 2, "IDirectDraw7 reference count is %ld\n", ref); IDirectDraw7_AddRef(DDraw7); ref = getRefcount( (IUnknown *) D3D7); ok(ref == 3, "IDirect3D7 reference count is %ld\n", ref); ref = getRefcount( (IUnknown *) DDraw7); ok(ref == 3, "IDirectDraw7 reference count is %ld\n", ref); IDirect3D7_Release(D3D7); ref = getRefcount( (IUnknown *) D3D7); ok(ref == 2, "IDirect3D7 reference count is %ld\n", ref); ref = getRefcount( (IUnknown *) DDraw7); ok(ref == 2, "IDirectDraw7 reference count is %ld\n", ref); /* Can't get older d3d interfaces. WHY????? */ hr = IDirectDraw7_QueryInterface(DDraw4, &IID_IDirect3D3, (void **) &D3D3); todo_wine ok(hr == E_NOINTERFACE, "IDirectDraw7_QueryInterface returned %08lx\n", hr); if(hr == DD_OK && D3D3) IDirect3D3_Release(D3D3); hr = IDirectDraw4_QueryInterface(DDraw4, &IID_IDirect3D3, (void **) &D3D3); todo_wine ok(hr == E_NOINTERFACE, "IDirectDraw4_QueryInterface returned %08lx\n", hr); if(hr == DD_OK && D3D3) IDirect3D3_Release(D3D3); hr = IDirectDraw7_QueryInterface(DDraw7, &IID_IDirect3D2, (void **) &D3D2); todo_wine ok(hr == E_NOINTERFACE, "IDirectDraw7_QueryInterface returned %08lx\n", hr); if(hr == DD_OK && D3D2) IDirect3D2_Release(D3D2); hr = IDirectDraw2_QueryInterface(DDraw2, &IID_IDirect3D2, (void **) &D3D2); todo_wine ok(hr == E_NOINTERFACE, "IDirectDraw2_QueryInterface returned %08lx\n", hr); if(hr == DD_OK && D3D2) IDirect3D2_Release(D3D2); hr = IDirectDraw7_QueryInterface(DDraw7, &IID_IDirect3D, (void **) &D3D1); todo_wine ok(hr == E_NOINTERFACE, "IDirectDraw7_QueryInterface returned %08lx\n", hr); if(hr == DD_OK && D3D1) IDirect3D_Release(D3D1); hr = IDirectDraw_QueryInterface(DDraw1, &IID_IDirect3D, (void **) &D3D1); todo_wine ok(hr == E_NOINTERFACE, "IDirectDraw_QueryInterface returned %08lx\n", hr); if(hr == DD_OK && D3D1) IDirect3D_Release(D3D1); hr = IDirect3D7_QueryInterface(D3D7, &IID_IDirect3D, (void **) &D3D1); todo_wine ok(hr == E_NOINTERFACE, "IDirect3D7_QueryInterface returned %08lx\n", hr); if(hr == DD_OK && D3D1) IDirect3D_Release(D3D1); /* Try an AddRef, it only affects the AddRefed interface */ IDirectDraw4_AddRef(DDraw4); ref = getRefcount( (IUnknown *) DDraw7); ok(ref == 2, "IDirectDraw7 reference count is %ld\n", ref); /* <-- From the d3d query */ ref = getRefcount( (IUnknown *) DDraw4); ok(ref == 2, "IDirectDraw4 reference count is %ld\n", ref); /* <-- The AddRef call */ ref = getRefcount( (IUnknown *) DDraw2); ok(ref == 1, "IDirectDraw2 reference count is %ld\n", ref); ref = getRefcount( (IUnknown *) DDraw1); ok(ref == 1, "IDirectDraw reference count is %ld\n", ref); ref = getRefcount( (IUnknown *) D3D7); ok(ref == 2, "IDirect3D7 reference count is %ld\n", ref); /* <-- From the d3d query */ IDirectDraw4_Release(DDraw4); /* Make sure that they are one object, not different ones */ hr = IDirectDraw4_SetCooperativeLevel(DDraw4, GetDesktopWindow(), DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN); ok(hr == DD_OK, "IDirectDraw4::SetCooperativeLevel returned %08lx\n", hr); /* After an window has been set, DDSCL_SETFOCUSWINDOW should return DDERR_HWNDALREADYSET, see the mode test */ hr = IDirectDraw7_SetCooperativeLevel(DDraw7, NULL, DDSCL_SETFOCUSWINDOW); ok(hr == DDERR_HWNDALREADYSET, "IDirectDraw7::SetCooperativeLevel returned %08lx\n", hr); /* All done, release all interfaces */ IDirectDraw7_Release(DDraw7); IDirectDraw4_Release(DDraw4); IDirectDraw2_Release(DDraw2); IDirectDraw_Release(DDraw1); IDirect3D7_Release(D3D7); }
static void test_PSM_ADDPAGE(void) { HPROPSHEETPAGE hpsp[5]; PROPSHEETPAGEA psp; PROPSHEETHEADERA psh; HWND hdlg, tab; BOOL ret; DWORD r; memset(&psp, 0, sizeof(psp)); psp.dwSize = sizeof(psp); psp.dwFlags = 0; psp.hInstance = GetModuleHandleA(NULL); U(psp).pszTemplate = (LPCSTR)MAKEINTRESOURCE(IDD_PROP_PAGE_MESSAGE_TEST); U2(psp).pszIcon = NULL; psp.pfnDlgProc = page_dlg_proc_messages; psp.lParam = 0; /* two page with the same data */ hpsp[0] = CreatePropertySheetPageA(&psp); hpsp[1] = CreatePropertySheetPageA(&psp); hpsp[2] = CreatePropertySheetPageA(&psp); U(psp).pszTemplate = (LPCSTR)MAKEINTRESOURCE(IDD_PROP_PAGE_ERROR); hpsp[3] = CreatePropertySheetPageA(&psp); psp.dwFlags = PSP_PREMATURE; hpsp[4] = CreatePropertySheetPageA(&psp); memset(&psh, 0, sizeof(psh)); psh.dwSize = PROPSHEETHEADERA_V1_SIZE; psh.dwFlags = PSH_MODELESS; psh.pszCaption = "test caption"; psh.nPages = 1; psh.hwndParent = GetDesktopWindow(); U3(psh).phpage = hpsp; hdlg = (HWND)PropertySheetA(&psh); ok(hdlg != INVALID_HANDLE_VALUE, "got invalid handle %p\n", hdlg); /* add pages one by one */ ret = SendMessageA(hdlg, PSM_ADDPAGE, 0, (LPARAM)hpsp[1]); ok(ret == TRUE, "got %d\n", ret); /* try with null and invalid value */ ret = SendMessageA(hdlg, PSM_ADDPAGE, 0, 0); ok(ret == FALSE, "got %d\n", ret); if (0) { /* crashes on native */ ret = SendMessageA(hdlg, PSM_ADDPAGE, 0, (LPARAM)INVALID_HANDLE_VALUE); } /* check item count */ tab = (HWND)SendMessageA(hdlg, PSM_GETTABCONTROL, 0, 0); r = SendMessageA(tab, TCM_GETITEMCOUNT, 0, 0); ok(r == 2, "got %d\n", r); ret = SendMessageA(hdlg, PSM_ADDPAGE, 0, (LPARAM)hpsp[2]); ok(ret == TRUE, "got %d\n", ret); r = SendMessageA(tab, TCM_GETITEMCOUNT, 0, 0); ok(r == 3, "got %d\n", r); /* add property sheet page that can't be created */ ret = SendMessageA(hdlg, PSM_ADDPAGE, 0, (LPARAM)hpsp[3]); ok(ret == TRUE, "got %d\n", ret); r = SendMessageA(tab, TCM_GETITEMCOUNT, 0, 0); ok(r == 4, "got %d\n", r); /* select page that can't be created */ ret = SendMessageA(hdlg, PSM_SETCURSEL, 3, 1); ok(ret == TRUE, "got %d\n", ret); r = SendMessageA(tab, TCM_GETITEMCOUNT, 0, 0); ok(r == 3, "got %d\n", r); /* test PSP_PREMATURE flag with incorrect property sheet page */ ret = SendMessageA(hdlg, PSM_ADDPAGE, 0, (LPARAM)hpsp[4]); ok(ret == FALSE, "got %d\n", ret); r = SendMessageA(tab, TCM_GETITEMCOUNT, 0, 0); ok(r == 3, "got %d\n", r); DestroyPropertySheetPage(hpsp[4]); DestroyWindow(hdlg); }
BOOL CMuleSystrayDlg::OnInitDialog() { CDialog::OnInitDialog(); m_bClosingDown = false; CRect r; CWnd *p; m_hUpArrow = theApp.LoadIcon(_T("UPLOAD")); m_hDownArrow = theApp.LoadIcon(_T("DOWNLOAD")); m_ctrlUpArrow.SetIcon(m_hUpArrow); m_ctrlDownArrow.SetIcon(m_hDownArrow); bool bValidFont = false; LOGFONT lfStaticFont = {0}; p = GetDlgItem(IDC_SPEED); if(p) { p->GetFont()->GetLogFont(&lfStaticFont); bValidFont = true; } p = GetDlgItem(IDC_SPEED); if(p) { p->GetWindowRect(r); ScreenToClient(r); m_ctrlSpeed.Create(NULL, NULL, WS_CHILD|WS_VISIBLE, r, this, IDC_SPEED); m_ctrlSpeed.m_nBtnID = IDC_SPEED; //p->GetWindowText(m_ctrlSpeed.m_strText); m_ctrlSpeed.m_strText = GetResString(IDS_TRAYDLG_SPEED); m_ctrlSpeed.m_strText.Remove(_T('&')); m_ctrlSpeed.m_bUseIcon = true; m_ctrlSpeed.m_sIcon.cx = 16; m_ctrlSpeed.m_sIcon.cy = 16; m_ctrlSpeed.m_hIcon = theApp.LoadIcon(_T("SPEED"), m_ctrlSpeed.m_sIcon.cx, m_ctrlSpeed.m_sIcon.cy); m_ctrlSpeed.m_bParentCapture = true; if(bValidFont) { LOGFONT lfFont = lfStaticFont; lfFont.lfWeight += 200; // make it bold m_ctrlSpeed.m_cfFont.CreateFontIndirect(&lfFont); } m_ctrlSpeed.m_bNoHover = true; } p = GetDlgItem(IDC_TOMAX); if(p) { p->GetWindowRect(r); ScreenToClient(r); m_ctrlAllToMax.Create(NULL, NULL, WS_CHILD|WS_VISIBLE, r, this, IDC_TOMAX); m_ctrlAllToMax.m_nBtnID = IDC_TOMAX; //p->GetWindowText(m_ctrlAllToMax.m_strText); m_ctrlAllToMax.m_strText = GetResString(IDS_PW_UA); m_ctrlAllToMax.m_strText.Remove(_T('&')); m_ctrlAllToMax.m_bUseIcon = true; m_ctrlAllToMax.m_sIcon.cx = 16; m_ctrlAllToMax.m_sIcon.cy = 16; m_ctrlAllToMax.m_hIcon = theApp.LoadIcon(_T("SPEEDMAX"), m_ctrlAllToMax.m_sIcon.cx, m_ctrlAllToMax.m_sIcon.cy); m_ctrlAllToMax.m_bParentCapture = true; if(bValidFont) m_ctrlAllToMax.m_cfFont.CreateFontIndirect(&lfStaticFont); } p = GetDlgItem(IDC_TOMIN); if(p) { p->GetWindowRect(r); ScreenToClient(r); m_ctrlAllToMin.Create(NULL, NULL, WS_CHILD|WS_VISIBLE, r, this, IDC_TOMIN); m_ctrlAllToMin.m_nBtnID = IDC_TOMIN; //p->GetWindowText(m_ctrlAllToMin.m_strText); m_ctrlAllToMin.m_strText = GetResString(IDS_PW_PA); m_ctrlAllToMin.m_strText.Remove(_T('&')); m_ctrlAllToMin.m_bUseIcon = true; m_ctrlAllToMin.m_sIcon.cx = 16; m_ctrlAllToMin.m_sIcon.cy = 16; m_ctrlAllToMin.m_hIcon = theApp.LoadIcon(_T("SPEEDMIN"), m_ctrlAllToMin.m_sIcon.cx, m_ctrlAllToMin.m_sIcon.cy); m_ctrlAllToMin.m_bParentCapture = true; if(bValidFont) m_ctrlAllToMin.m_cfFont.CreateFontIndirect(&lfStaticFont); } p = GetDlgItem(IDC_RESTORE); if(p) { p->GetWindowRect(r); ScreenToClient(r); m_ctrlRestore.Create(NULL, NULL, WS_CHILD|WS_VISIBLE, r, this, IDC_RESTORE); m_ctrlRestore.m_nBtnID = IDC_RESTORE; //p->GetWindowText(m_ctrlRestore.m_strText); m_ctrlRestore.m_strText = GetResString(IDS_MAIN_POPUP_RESTORE); m_ctrlRestore.m_strText.Remove(_T('&')); m_ctrlRestore.m_bUseIcon = true; m_ctrlRestore.m_sIcon.cx = 16; m_ctrlRestore.m_sIcon.cy = 16; m_ctrlRestore.m_hIcon = theApp.LoadIcon(_T("RESTOREWINDOW"), m_ctrlRestore.m_sIcon.cx, m_ctrlRestore.m_sIcon.cy); m_ctrlRestore.m_bParentCapture = true; if(bValidFont) { LOGFONT lfFont = lfStaticFont; lfFont.lfWeight += 200; // make it bold m_ctrlRestore.m_cfFont.CreateFontIndirect(&lfFont); } } p = GetDlgItem(IDC_CONNECT); if(p) { p->GetWindowRect(r); ScreenToClient(r); m_ctrlConnect.Create(NULL, NULL, WS_CHILD|WS_VISIBLE, r, this, IDC_CONNECT); m_ctrlConnect.m_nBtnID = IDC_CONNECT; //p->GetWindowText(m_ctrlConnect.m_strText); m_ctrlConnect.m_strText = GetResString(IDS_MAIN_BTN_CONNECT); m_ctrlConnect.m_strText.Remove(_T('&')); m_ctrlConnect.m_bUseIcon = true; m_ctrlConnect.m_sIcon.cx = 16; m_ctrlConnect.m_sIcon.cy = 16; m_ctrlConnect.m_hIcon = theApp.LoadIcon(_T("CONNECT"), m_ctrlConnect.m_sIcon.cx, m_ctrlConnect.m_sIcon.cy); m_ctrlConnect.m_bParentCapture = true; if(bValidFont) m_ctrlConnect.m_cfFont.CreateFontIndirect(&lfStaticFont); } p = GetDlgItem(IDC_DISCONNECT); if(p) { p->GetWindowRect(r); ScreenToClient(r); m_ctrlDisconnect.Create(NULL, NULL, WS_CHILD|WS_VISIBLE, r, this, IDC_DISCONNECT); m_ctrlDisconnect.m_nBtnID = IDC_DISCONNECT; //p->GetWindowText(m_ctrlDisconnect.m_strText); m_ctrlDisconnect.m_strText = GetResString(IDS_MAIN_BTN_DISCONNECT); m_ctrlDisconnect.m_strText.Remove(_T('&')); m_ctrlDisconnect.m_bUseIcon = true; m_ctrlDisconnect.m_sIcon.cx = 16; m_ctrlDisconnect.m_sIcon.cy = 16; m_ctrlDisconnect.m_hIcon = theApp.LoadIcon(_T("DISCONNECT"), m_ctrlDisconnect.m_sIcon.cx, m_ctrlDisconnect.m_sIcon.cy); m_ctrlDisconnect.m_bParentCapture = true; if(bValidFont) m_ctrlDisconnect.m_cfFont.CreateFontIndirect(&lfStaticFont); } p = GetDlgItem(IDC_PREFERENCES); if(p) { p->GetWindowRect(r); ScreenToClient(r); m_ctrlPreferences.Create(NULL, NULL, WS_CHILD|WS_VISIBLE, r, this, IDC_PREFERENCES); m_ctrlPreferences.m_nBtnID = IDC_PREFERENCES; //p->GetWindowText(m_ctrlPreferences.m_strText); m_ctrlPreferences.m_strText = GetResString(IDS_EM_PREFS); m_ctrlPreferences.m_strText.Remove(_T('&')); m_ctrlPreferences.m_bUseIcon = true; m_ctrlPreferences.m_sIcon.cx = 16; m_ctrlPreferences.m_sIcon.cy = 16; m_ctrlPreferences.m_hIcon = theApp.LoadIcon(_T("Preferences"), m_ctrlPreferences.m_sIcon.cx, m_ctrlPreferences.m_sIcon.cy); m_ctrlPreferences.m_bParentCapture = true; if(bValidFont) m_ctrlPreferences.m_cfFont.CreateFontIndirect(&lfStaticFont); } p = GetDlgItem(IDC_TRAY_EXIT); if(p) { p->GetWindowRect(r); ScreenToClient(r); m_ctrlExit.Create(NULL, NULL, WS_CHILD|WS_VISIBLE, r, this, IDC_EXIT); m_ctrlExit.m_nBtnID = IDC_EXIT; //p->GetWindowText(m_ctrlExit.m_strText); m_ctrlExit.m_strText = GetResString(IDS_EXIT); m_ctrlExit.m_strText.Remove(_T('&')); m_ctrlExit.m_bUseIcon = true; m_ctrlExit.m_sIcon.cx = 16; m_ctrlExit.m_sIcon.cy = 16; m_ctrlExit.m_hIcon = theApp.LoadIcon(_T("EXIT"), m_ctrlExit.m_sIcon.cx, m_ctrlExit.m_sIcon.cy); m_ctrlExit.m_bParentCapture = true; if(bValidFont) m_ctrlExit.m_cfFont.CreateFontIndirect(&lfStaticFont); } if((p = GetDlgItem(IDC_DOWNLBL)) != NULL) p->SetWindowText(GetResString(IDS_PW_CON_DOWNLBL)); if((p = GetDlgItem(IDC_UPLBL)) != NULL) p->SetWindowText(GetResString(IDS_PW_CON_UPLBL)); if((p = GetDlgItem(IDC_DOWNKB)) != NULL) p->SetWindowText(GetResString(IDS_KBYTESPERSEC)); if((p = GetDlgItem(IDC_UPKB)) != NULL) p->SetWindowText(GetResString(IDS_KBYTESPERSEC)); m_ctrlDownSpeedSld.SetRange(0,m_iMaxDown); m_ctrlDownSpeedSld.SetPos(m_nDownSpeedTxt); m_ctrlUpSpeedSld.SetRange(0,m_iMaxUp); m_ctrlUpSpeedSld.SetPos(m_nUpSpeedTxt); m_DownSpeedInput.EnableWindow(m_nDownSpeedTxt >0); m_UpSpeedInput.EnableWindow(m_nUpSpeedTxt >0); CFont Font; Font.CreateFont(-16,0,900,0,700,0,0,0,0,3,2,1,34,_T("Tahoma")); UINT winver = thePrefs.GetWindowsVersion(); if (winver == _WINVER_95_ || winver == _WINVER_NT4_ || g_bLowColorDesktop) { m_ctrlSidebar.SetColors(GetSysColor(COLOR_CAPTIONTEXT), GetSysColor(COLOR_ACTIVECAPTION), GetSysColor(COLOR_ACTIVECAPTION)); } else { m_ctrlSidebar.SetColors(GetSysColor(COLOR_CAPTIONTEXT), GetSysColor(COLOR_ACTIVECAPTION), GetSysColor(COLOR_GRADIENTACTIVECAPTION)); } m_ctrlSidebar.SetHorizontal(false); m_ctrlSidebar.SetFont(&Font); m_ctrlSidebar.SetWindowText(_T("eMule ") + theApp.m_strCurVersionLong); CRect rDesktop; CWnd *pDesktopWnd = GetDesktopWindow(); pDesktopWnd->GetClientRect(rDesktop); CPoint pt = m_ptInitialPosition; pDesktopWnd->ScreenToClient(&pt); int xpos, ypos; GetWindowRect(r); if(m_ptInitialPosition.x + r.Width() < rDesktop.right) xpos = pt.x; else xpos = pt.x - r.Width(); if(m_ptInitialPosition.y - r.Height() < rDesktop.top) ypos = pt.y; else ypos = pt.y - r.Height(); MoveWindow(xpos, ypos, r.Width(), r.Height()); SetCapture(); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE }
Platform_Win32_Screen::Platform_Win32_Screen(Platform_Win32_OS* os): windowHandle_(os->GetWindowHandle()), technology_(Technology_Undefined), technologyInstance_(0), fullscreen_(true), fullscreenWidth_(0), fullscreenHeight_(0), showfps_(false), interpolationMode_(true), disableOnWmSize_(0), ignoreNextOnWmSize_(false), firstTimeInitializeCalled_(false), forceddraw_(false), forcegdi_(false) { Platform::RegisterEventListener(this); // Check commandline flags if (os->GetCommandLineString()) { char* cmdline=strdup(os->GetCommandLineString()); char* token=strtok(cmdline," "); while (token) { if (stricmp(token,"-window")==0) { fullscreen_=false; } if (stricmp(token,"-showfps")==0) { showfps_=true; } if (stricmp(token,"-forceddraw")==0) { forceddraw_=true; } if (stricmp(token,"-forcegdi")==0) { forcegdi_=true; } token=strtok(0," "); } free(cmdline); } // Determine default screen size HWND desktopWindow=GetDesktopWindow(); RECT desktopRect; BOOL result=GetWindowRect(desktopWindow,&desktopRect); if (result) { fullscreenWidth_=desktopRect.right-desktopRect.left; fullscreenHeight_=desktopRect.bottom-desktopRect.top; windowedWidth_=fullscreenWidth_-fullscreenWidth_/6; windowedHeight_=fullscreenHeight_-fullscreenHeight_/6; windowedX_=fullscreenWidth_-windowedWidth_; windowedY_=fullscreenHeight_-windowedHeight_; windowedX_/=2; windowedY_/=2; } }
/* ** Sys_CreateConsole */ void Sys_CreateConsole( void ) { HDC hDC; WNDCLASS wc; RECT rect; const char *DEDCLASS = WIN32_CONSOLE_CLASS; int nHeight; int swidth, sheight; int DEDSTYLE = WS_POPUPWINDOW | WS_CAPTION | WS_MINIMIZEBOX; int i; memset( &wc, 0, sizeof( wc ) ); wc.style = 0; wc.lpfnWndProc = (WNDPROC) ConWndProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = win32.hInstance; wc.hIcon = LoadIcon( win32.hInstance, MAKEINTRESOURCE(IDI_ICON1)); wc.hCursor = LoadCursor (NULL,IDC_ARROW); wc.hbrBackground = (struct HBRUSH__ *)COLOR_WINDOW; wc.lpszMenuName = 0; wc.lpszClassName = DEDCLASS; if ( !RegisterClass (&wc) ) { return; } rect.left = 0; rect.right = 540; rect.top = 0; rect.bottom = 450; AdjustWindowRect( &rect, DEDSTYLE, FALSE ); hDC = GetDC( GetDesktopWindow() ); swidth = GetDeviceCaps( hDC, HORZRES ); sheight = GetDeviceCaps( hDC, VERTRES ); ReleaseDC( GetDesktopWindow(), hDC ); s_wcd.windowWidth = rect.right - rect.left + 1; s_wcd.windowHeight = rect.bottom - rect.top + 1; //s_wcd.hbmLogo = LoadBitmap( win32.hInstance, MAKEINTRESOURCE( IDB_BITMAP_LOGO) ); s_wcd.hWnd = CreateWindowEx( 0, DEDCLASS, GAME_NAME, DEDSTYLE, ( swidth - 600 ) / 2, ( sheight - 450 ) / 2 , rect.right - rect.left + 1, rect.bottom - rect.top + 1, NULL, NULL, win32.hInstance, NULL ); if ( s_wcd.hWnd == NULL ) { return; } // // create fonts // hDC = GetDC( s_wcd.hWnd ); nHeight = -MulDiv( 8, GetDeviceCaps( hDC, LOGPIXELSY ), 72 ); s_wcd.hfBufferFont = CreateFont( nHeight, 0, 0, 0, FW_LIGHT, 0, 0, 0, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, FF_MODERN | FIXED_PITCH, "Courier New" ); ReleaseDC( s_wcd.hWnd, hDC ); // // create the input line // s_wcd.hwndInputLine = CreateWindow( "edit", NULL, WS_CHILD | WS_VISIBLE | WS_BORDER | ES_LEFT | ES_AUTOHSCROLL, 6, 400, 528, 20, s_wcd.hWnd, ( HMENU ) INPUT_ID, // child window ID win32.hInstance, NULL ); // // create the buttons // s_wcd.hwndButtonCopy = CreateWindow( "button", NULL, BS_PUSHBUTTON | WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON, 5, 425, 72, 24, s_wcd.hWnd, ( HMENU ) COPY_ID, // child window ID win32.hInstance, NULL ); SendMessage( s_wcd.hwndButtonCopy, WM_SETTEXT, 0, ( LPARAM ) "copy" ); s_wcd.hwndButtonClear = CreateWindow( "button", NULL, BS_PUSHBUTTON | WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON, 82, 425, 72, 24, s_wcd.hWnd, ( HMENU ) CLEAR_ID, // child window ID win32.hInstance, NULL ); SendMessage( s_wcd.hwndButtonClear, WM_SETTEXT, 0, ( LPARAM ) "clear" ); s_wcd.hwndButtonQuit = CreateWindow( "button", NULL, BS_PUSHBUTTON | WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON, 462, 425, 72, 24, s_wcd.hWnd, ( HMENU ) QUIT_ID, // child window ID win32.hInstance, NULL ); SendMessage( s_wcd.hwndButtonQuit, WM_SETTEXT, 0, ( LPARAM ) "quit" ); // // create the scrollbuffer // s_wcd.hwndBuffer = CreateWindow( "edit", NULL, WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_BORDER | ES_LEFT | ES_MULTILINE | ES_AUTOVSCROLL | ES_READONLY, 6, 40, 526, 354, s_wcd.hWnd, ( HMENU ) EDIT_ID, // child window ID win32.hInstance, NULL ); SendMessage( s_wcd.hwndBuffer, WM_SETFONT, ( WPARAM ) s_wcd.hfBufferFont, 0 ); s_wcd.SysInputLineWndProc = ( WNDPROC ) SetWindowLong( s_wcd.hwndInputLine, GWL_WNDPROC, ( long ) InputLineWndProc ); SendMessage( s_wcd.hwndInputLine, WM_SETFONT, ( WPARAM ) s_wcd.hfBufferFont, 0 ); // don't show it now that we have a splash screen up if ( win32.win_viewlog.GetBool() ) { ShowWindow( s_wcd.hWnd, SW_SHOWDEFAULT); UpdateWindow( s_wcd.hWnd ); SetForegroundWindow( s_wcd.hWnd ); SetFocus( s_wcd.hwndInputLine ); } s_wcd.consoleField.Clear(); for ( i = 0 ; i < COMMAND_HISTORY ; i++ ) { s_wcd.historyEditLines[i].Clear(); } }