mirror of
https://github.com/reactos/reactos.git
synced 2025-08-05 18:42:56 +00:00
- fix flickering of DirectDraw tests by Pigglesworth (Kamil Hornicek)
- enumerate all available display / sound adapters dynamically at start (does not work yet) - rewrite TabCtrl_OnSelChange to reflect changes svn path=/trunk/; revision=33188
This commit is contained in:
parent
dd03a00484
commit
84d4c7f4da
5 changed files with 225 additions and 48 deletions
|
@ -7,23 +7,22 @@
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include "precomp.h"
|
#include "precomp.h"
|
||||||
|
|
||||||
BOOL DDPrimarySurfaceTest(HWND hWnd);
|
BOOL DDPrimarySurfaceTest(HWND hWnd);
|
||||||
BOOL DDOffscreenBufferTest(HWND hWnd, BOOL Fullscreen);
|
BOOL DDOffscreenBufferTest(HWND hWnd, BOOL Fullscreen);
|
||||||
VOID DDRedrawFrame(LPDIRECTDRAWSURFACE lpDDSurface);
|
VOID DDRedrawFrame(LPDIRECTDRAWSURFACE lpDDSurface);
|
||||||
VOID DDUpdateFrame(LPDIRECTDRAWSURFACE lpDDPrimarySurface ,LPDIRECTDRAWSURFACE lpDDBackBuffer, BOOL Fullscreen, INT *posX, INT *posY, INT *gainX, INT *gainY, RECT *rectDD);
|
VOID DDUpdateFrame(LPDIRECTDRAWSURFACE lpDDPrimarySurface ,LPDIRECTDRAWSURFACE lpDDBackBuffer, BOOL Fullscreen, INT *posX, INT *posY, INT *gainX, INT *gainY, RECT *rectDD);
|
||||||
|
LRESULT CALLBACK WindowProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
|
||||||
|
|
||||||
#define TEST_DURATION 5000
|
#define TEST_DURATION 10000
|
||||||
#define WIDTH 800
|
#define WIDTH 640
|
||||||
#define HEIGHT 600
|
#define HEIGHT 480
|
||||||
#define DD_TEST_STEP 5
|
#define DD_TEST_STEP 5
|
||||||
#define DD_SQUARE_SIZE 100
|
#define DD_SQUARE_SIZE 100
|
||||||
#define DD_SQUARE_STEP 2
|
#define DD_SQUARE_STEP 2
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
BOOL StartDDTest(HWND hWnd, HINSTANCE hInstance, INT resTestDescription, INT resResult, INT TestNr)
|
BOOL StartDDTest(HWND hWnd, HINSTANCE hInstance, INT resTestDescription, INT resResult, INT TestNr)
|
||||||
{
|
{
|
||||||
WCHAR szTestDescription[256];
|
WCHAR szTestDescription[256];
|
||||||
|
@ -70,19 +69,50 @@ BOOL StartDDTest(HWND hWnd, HINSTANCE hInstance, INT resTestDescription, INT res
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID DDTests(HWND hWnd, HINSTANCE hInstance)
|
VOID DDTests()
|
||||||
{
|
{
|
||||||
|
WNDCLASSEX winClass;
|
||||||
|
HWND hWnd;
|
||||||
|
HINSTANCE hInstance = NULL;
|
||||||
WCHAR szDescription[256];
|
WCHAR szDescription[256];
|
||||||
WCHAR szCaption[256];
|
WCHAR szCaption[256];
|
||||||
|
|
||||||
|
winClass.cbSize = sizeof(WNDCLASSEX);
|
||||||
|
winClass.style = CS_DBLCLKS | CS_OWNDC | CS_HREDRAW | CS_VREDRAW;
|
||||||
|
winClass.lpfnWndProc = WindowProc;
|
||||||
|
winClass.cbClsExtra = 0;
|
||||||
|
winClass.cbWndExtra = 0;
|
||||||
|
winClass.hInstance = hInstance;
|
||||||
|
winClass.hIcon = 0;
|
||||||
|
winClass.hCursor = 0;
|
||||||
|
winClass.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
|
||||||
|
winClass.lpszMenuName = NULL;
|
||||||
|
winClass.lpszClassName = L"ddtest";
|
||||||
|
winClass.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
|
||||||
|
|
||||||
|
if (!RegisterClassEx(&winClass))
|
||||||
|
return;
|
||||||
|
|
||||||
|
hWnd = CreateWindowEx(0, winClass.lpszClassName, NULL,WS_POPUP,
|
||||||
|
(GetSystemMetrics(SM_CXSCREEN) - WIDTH)/2,
|
||||||
|
(GetSystemMetrics(SM_CYSCREEN) - HEIGHT)/2,
|
||||||
|
WIDTH, HEIGHT, NULL, NULL, hInstance, NULL);
|
||||||
|
|
||||||
|
if (!hWnd){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
LoadStringW(hInstance, IDS_DDTEST_DESCRIPTION, szDescription, sizeof(szDescription) / sizeof(WCHAR));
|
LoadStringW(hInstance, IDS_DDTEST_DESCRIPTION, szDescription, sizeof(szDescription) / sizeof(WCHAR));
|
||||||
LoadStringW(hInstance, IDS_DDTEST_DESCRIPTION, szCaption, sizeof(szCaption) / sizeof(WCHAR));
|
LoadStringW(hInstance, IDS_DDTEST_DESCRIPTION, szCaption, sizeof(szCaption) / sizeof(WCHAR));
|
||||||
if(MessageBox(NULL, szDescription, szCaption, MB_YESNO | MB_ICONQUESTION) == IDNO)
|
if(MessageBox(NULL, szDescription, szCaption, MB_YESNO | MB_ICONQUESTION) == IDNO)
|
||||||
PostQuitMessage(0);
|
return;
|
||||||
|
|
||||||
StartDDTest(hWnd, hInstance, IDS_DDPRIMARY_DESCRIPTION, IDS_DDPRIMARY_RESULT, 1);
|
StartDDTest(hWnd, hInstance, IDS_DDPRIMARY_DESCRIPTION, IDS_DDPRIMARY_RESULT, 1);
|
||||||
StartDDTest(hWnd, hInstance, IDS_DDOFFSCREEN_DESCRIPTION, IDS_DDOFFSCREEN_RESULT, 2);
|
StartDDTest(hWnd, hInstance, IDS_DDOFFSCREEN_DESCRIPTION, IDS_DDOFFSCREEN_RESULT, 2);
|
||||||
StartDDTest(hWnd, hInstance, IDS_DDFULLSCREEN_DESCRIPTION, IDS_DDFULLSCREEN_RESULT, 3);
|
StartDDTest(hWnd, hInstance, IDS_DDFULLSCREEN_DESCRIPTION, IDS_DDFULLSCREEN_RESULT, 3);
|
||||||
|
|
||||||
|
DestroyWindow(hWnd);
|
||||||
|
UnregisterClass(winClass.lpszClassName, hInstance);
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOL DDPrimarySurfaceTest(HWND hWnd){
|
BOOL DDPrimarySurfaceTest(HWND hWnd){
|
||||||
|
@ -334,3 +364,8 @@ VOID DDUpdateFrame(LPDIRECTDRAWSURFACE lpDDPrimarySurface ,LPDIRECTDRAWSURFACE l
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
LRESULT CALLBACK WindowProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
|
||||||
|
{
|
||||||
|
return DefWindowProc(hWnd, msg, wParam, lParam);
|
||||||
|
}
|
||||||
|
|
|
@ -173,9 +173,16 @@ InitializeDialog(HWND hwndDlg)
|
||||||
HWND hDlgCtrls[3];
|
HWND hDlgCtrls[3];
|
||||||
DWORD dwMemory;
|
DWORD dwMemory;
|
||||||
DEVMODE DevMode;
|
DEVMODE DevMode;
|
||||||
|
|
||||||
DISPLAY_DEVICEW DispDevice;
|
DISPLAY_DEVICEW DispDevice;
|
||||||
|
|
||||||
|
/// FIXME
|
||||||
|
/// use initialization context
|
||||||
|
///
|
||||||
|
ZeroMemory(&DispDevice, sizeof(DISPLAY_DEVICEW));
|
||||||
|
DispDevice.cb = sizeof(DISPLAY_DEVICEW);
|
||||||
|
if (!EnumDisplayDevicesW(NULL, 0, &DispDevice, 0))
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
/* query display device adapter */
|
/* query display device adapter */
|
||||||
ZeroMemory(&DispDevice, sizeof(DISPLAY_DEVICEW));
|
ZeroMemory(&DispDevice, sizeof(DISPLAY_DEVICEW));
|
||||||
DispDevice.cb = sizeof(DISPLAY_DEVICEW);
|
DispDevice.cb = sizeof(DISPLAY_DEVICEW);
|
||||||
|
@ -275,6 +282,56 @@ InitializeDialog(HWND hwndDlg)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void InitializeDisplayAdapters(PDXDIAG_CONTEXT pContext)
|
||||||
|
{
|
||||||
|
DISPLAY_DEVICEW DispDevice;
|
||||||
|
HWND * hDlgs;
|
||||||
|
HWND hwndDlg;
|
||||||
|
WCHAR szDisplay[20];
|
||||||
|
WCHAR szText[30];
|
||||||
|
DWORD dwOffset = 0;
|
||||||
|
|
||||||
|
while(TRUE)
|
||||||
|
{
|
||||||
|
ZeroMemory(&DispDevice, sizeof(DISPLAY_DEVICEW));
|
||||||
|
DispDevice.cb = sizeof(DISPLAY_DEVICEW);
|
||||||
|
if (!EnumDisplayDevicesW(NULL, pContext->NumDisplayAdapter + dwOffset, &DispDevice, 0))
|
||||||
|
return;
|
||||||
|
|
||||||
|
/* skip devices not attached to the desktop and mirror drivers */
|
||||||
|
if (!(DispDevice.StateFlags & DISPLAY_DEVICE_ATTACHED_TO_DESKTOP) || (DispDevice.StateFlags & DISPLAY_DEVICE_MIRRORING_DRIVER))
|
||||||
|
{
|
||||||
|
dwOffset++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (pContext->NumDisplayAdapter)
|
||||||
|
hDlgs = HeapReAlloc(GetProcessHeap(), 0, pContext->hDisplayWnd, (pContext->NumDisplayAdapter + 1) * sizeof(HWND));
|
||||||
|
else
|
||||||
|
hDlgs = HeapAlloc(GetProcessHeap(), 0, (pContext->NumDisplayAdapter + 1) * sizeof(HWND));
|
||||||
|
|
||||||
|
if (!hDlgs)
|
||||||
|
break;
|
||||||
|
|
||||||
|
pContext->hDisplayWnd = hDlgs;
|
||||||
|
hwndDlg = CreateDialogParamW(hInst, MAKEINTRESOURCEW(IDD_DISPLAY_DIALOG), pContext->hMainDialog, DisplayPageWndProc, (LPARAM)pContext);
|
||||||
|
if (!hwndDlg)
|
||||||
|
break;
|
||||||
|
|
||||||
|
szDisplay[0] = L'\0';
|
||||||
|
LoadStringW(hInst, IDS_DISPLAY_DIALOG, szDisplay, sizeof(szDisplay)/sizeof(WCHAR));
|
||||||
|
szDisplay[(sizeof(szDisplay)/sizeof(WCHAR))-1] = L'\0';
|
||||||
|
|
||||||
|
swprintf (szText, L"%s %u", szDisplay, pContext->NumDisplayAdapter + 1);
|
||||||
|
InsertTabCtrlItem(GetDlgItem(pContext->hMainDialog, IDC_TAB_CONTROL), pContext->NumDisplayAdapter + 1, szText);
|
||||||
|
|
||||||
|
hDlgs[pContext->NumDisplayAdapter] = hwndDlg;
|
||||||
|
pContext->NumDisplayAdapter++;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
INT_PTR CALLBACK
|
INT_PTR CALLBACK
|
||||||
DisplayPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
|
DisplayPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
|
||||||
{
|
{
|
||||||
|
@ -295,11 +352,7 @@ DisplayPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
|
||||||
{
|
{
|
||||||
case IDC_BUTTON_TESTDD:
|
case IDC_BUTTON_TESTDD:
|
||||||
/* FIXME log result errors */
|
/* FIXME log result errors */
|
||||||
ShowWindow(pContext->hMainDialog, SW_HIDE);
|
DDTests();
|
||||||
StartDDTest(pContext->hMainDialog, hInst, IDS_DDPRIMARY_DESCRIPTION, IDS_DDPRIMARY_RESULT, 1);
|
|
||||||
StartDDTest(pContext->hMainDialog, hInst, IDS_DDOFFSCREEN_DESCRIPTION, IDS_DDOFFSCREEN_RESULT, 2);
|
|
||||||
StartDDTest(pContext->hMainDialog, hInst, IDS_DDFULLSCREEN_DESCRIPTION, IDS_DDFULLSCREEN_RESULT, 3);
|
|
||||||
ShowWindow(pContext->hMainDialog, SW_SHOW);
|
|
||||||
/* FIXME resize window */
|
/* FIXME resize window */
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,21 +28,29 @@ DestroyTabCtrlDialogs(PDXDIAG_CONTEXT pContext)
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
VOID
|
VOID
|
||||||
InsertTabCtrlItem(HWND hDlgCtrl, INT Position, UINT uId)
|
InsertTabCtrlItem(HWND hDlgCtrl, INT Position, LPWSTR uId)
|
||||||
{
|
{
|
||||||
WCHAR szName[100];
|
WCHAR szName[100];
|
||||||
TCITEMW item;
|
TCITEMW item;
|
||||||
|
|
||||||
/* load item name */
|
|
||||||
szName[0] = L'\0';
|
|
||||||
if (!LoadStringW(hInst, uId, szName, 100))
|
|
||||||
return;
|
|
||||||
szName[99] = L'\0';
|
|
||||||
|
|
||||||
/* setup item info */
|
/* setup item info */
|
||||||
memset(&item, 0, sizeof(TCITEM));
|
memset(&item, 0, sizeof(TCITEM));
|
||||||
item.mask = TCIF_TEXT;
|
item.mask = TCIF_TEXT;
|
||||||
item.pszText = szName;
|
|
||||||
|
/* load item name */
|
||||||
|
if (!HIWORD(uId))
|
||||||
|
{
|
||||||
|
szName[0] = L'\0';
|
||||||
|
if (!LoadStringW(hInst, LOWORD(uId), szName, 100))
|
||||||
|
return;
|
||||||
|
szName[99] = L'\0';
|
||||||
|
item.pszText = szName;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
item.pszText = uId;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
SendMessageW(hDlgCtrl, TCM_INSERTITEM, Position, (LPARAM)&item);
|
SendMessageW(hDlgCtrl, TCM_INSERTITEM, Position, (LPARAM)&item);
|
||||||
}
|
}
|
||||||
|
@ -55,42 +63,55 @@ TabCtrl_OnSelChange(PDXDIAG_CONTEXT pContext)
|
||||||
|
|
||||||
/* retrieve new page */
|
/* retrieve new page */
|
||||||
CurSel = TabCtrl_GetCurSel(hTabCtrlWnd);
|
CurSel = TabCtrl_GetCurSel(hTabCtrlWnd);
|
||||||
if (CurSel < 0 || CurSel > 7)
|
if (CurSel < 0 || CurSel > pContext->NumDisplayAdapter + pContext->NumSoundAdapter + 5)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/* show active page */
|
/* hide all windows */
|
||||||
for(Index = 0; Index < 7; Index++)
|
for(Index = 0; Index < 5; Index++)
|
||||||
{
|
ShowWindow(pContext->hDialogs[Index], SW_HIDE);
|
||||||
if (Index == CurSel)
|
|
||||||
ShowWindow(pContext->hDialogs[Index], SW_SHOW);
|
|
||||||
else
|
|
||||||
ShowWindow(pContext->hDialogs[Index], SW_HIDE);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
for(Index = 0; Index < pContext->NumDisplayAdapter; Index++)
|
||||||
|
ShowWindow(pContext->hDisplayWnd[Index], SW_HIDE);
|
||||||
|
|
||||||
|
for(Index = 0; Index < pContext->NumSoundAdapter; Index++)
|
||||||
|
ShowWindow(pContext->hSoundWnd[Index], SW_HIDE);
|
||||||
|
|
||||||
|
|
||||||
|
if (CurSel == 0 || CurSel > pContext->NumDisplayAdapter + pContext->NumSoundAdapter)
|
||||||
|
{
|
||||||
|
ShowWindow(pContext->hDialogs[min(0, CurSel-pContext->NumDisplayAdapter-pContext->NumSoundAdapter)], SW_SHOW);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (CurSel -1 < pContext->NumDisplayAdapter)
|
||||||
|
{
|
||||||
|
ShowWindow(pContext->hDisplayWnd[CurSel-1], SW_SHOW);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
CurSel -= pContext->NumDisplayAdapter + 1;
|
||||||
|
ShowWindow(pContext->hSoundWnd[CurSel], SW_SHOW);
|
||||||
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
InitializeTabCtrl(HWND hwndDlg, PDXDIAG_CONTEXT pContext)
|
InitializeTabCtrl(HWND hwndDlg, PDXDIAG_CONTEXT pContext)
|
||||||
{
|
{
|
||||||
/* create the dialogs */
|
/* create the dialogs */
|
||||||
pContext->hDialogs[0] = CreateDialogParamW(hInst, MAKEINTRESOURCEW(IDD_SYSTEM_DIALOG), hwndDlg, SystemPageWndProc, (LPARAM)pContext);
|
pContext->hDialogs[0] = CreateDialogParamW(hInst, MAKEINTRESOURCEW(IDD_SYSTEM_DIALOG), hwndDlg, SystemPageWndProc, (LPARAM)pContext);
|
||||||
pContext->hDialogs[1] = CreateDialogParamW(hInst, MAKEINTRESOURCEW(IDD_DISPLAY_DIALOG), hwndDlg, DisplayPageWndProc, (LPARAM)pContext);
|
pContext->hDialogs[1] = CreateDialogParamW(hInst, MAKEINTRESOURCEW(IDD_MUSIC_DIALOG), hwndDlg, MusicPageWndProc, (LPARAM)pContext);
|
||||||
pContext->hDialogs[2] = CreateDialogParamW(hInst, MAKEINTRESOURCEW(IDD_SOUND_DIALOG), hwndDlg, SoundPageWndProc, (LPARAM)pContext);
|
pContext->hDialogs[2] = CreateDialogParamW(hInst, MAKEINTRESOURCEW(IDD_INPUT_DIALOG), hwndDlg, InputPageWndProc, (LPARAM)pContext);
|
||||||
pContext->hDialogs[3] = CreateDialogParamW(hInst, MAKEINTRESOURCEW(IDD_MUSIC_DIALOG), hwndDlg, MusicPageWndProc, (LPARAM)pContext);
|
pContext->hDialogs[3] = CreateDialogParamW(hInst, MAKEINTRESOURCEW(IDD_NETWORK_DIALOG), hwndDlg, NetworkPageWndProc, (LPARAM)pContext);
|
||||||
pContext->hDialogs[4] = CreateDialogParamW(hInst, MAKEINTRESOURCEW(IDD_INPUT_DIALOG), hwndDlg, InputPageWndProc, (LPARAM)pContext);
|
pContext->hDialogs[4] = CreateDialogParamW(hInst, MAKEINTRESOURCEW(IDD_HELP_DIALOG), hwndDlg, HelpPageWndProc, (LPARAM)pContext);
|
||||||
pContext->hDialogs[5] = CreateDialogParamW(hInst, MAKEINTRESOURCEW(IDD_NETWORK_DIALOG), hwndDlg, NetworkPageWndProc, (LPARAM)pContext);
|
|
||||||
pContext->hDialogs[6] = CreateDialogParamW(hInst, MAKEINTRESOURCEW(IDD_HELP_DIALOG), hwndDlg, HelpPageWndProc, (LPARAM)pContext);
|
|
||||||
|
|
||||||
/* insert tab ctrl items */
|
/* insert tab ctrl items */
|
||||||
hTabCtrlWnd = GetDlgItem(hwndDlg, IDC_TAB_CONTROL);
|
hTabCtrlWnd = GetDlgItem(hwndDlg, IDC_TAB_CONTROL);
|
||||||
InsertTabCtrlItem(hTabCtrlWnd, 0, IDS_SYSTEM_DIALOG);
|
InsertTabCtrlItem(hTabCtrlWnd, 0, MAKEINTRESOURCEW(IDS_SYSTEM_DIALOG));
|
||||||
InsertTabCtrlItem(hTabCtrlWnd, 1, IDS_DISPLAY_DIALOG);
|
InitializeDisplayAdapters(pContext);
|
||||||
InsertTabCtrlItem(hTabCtrlWnd, 2, IDS_SOUND_DIALOG);
|
InitializeDirectSoundPage(pContext);
|
||||||
InsertTabCtrlItem(hTabCtrlWnd, 3, IDS_MUSIC_DIALOG);
|
InsertTabCtrlItem(hTabCtrlWnd, pContext->NumDisplayAdapter + pContext->NumSoundAdapter + 1, MAKEINTRESOURCEW(IDS_MUSIC_DIALOG));
|
||||||
InsertTabCtrlItem(hTabCtrlWnd, 4, IDS_INPUT_DIALOG);
|
InsertTabCtrlItem(hTabCtrlWnd, pContext->NumDisplayAdapter + pContext->NumSoundAdapter + 2, MAKEINTRESOURCEW(IDS_INPUT_DIALOG));
|
||||||
InsertTabCtrlItem(hTabCtrlWnd, 5, IDS_NETWORK_DIALOG);
|
InsertTabCtrlItem(hTabCtrlWnd, pContext->NumDisplayAdapter + pContext->NumSoundAdapter + 3, MAKEINTRESOURCEW(IDS_NETWORK_DIALOG));
|
||||||
InsertTabCtrlItem(hTabCtrlWnd, 6, IDS_HELP_DIALOG);
|
InsertTabCtrlItem(hTabCtrlWnd, pContext->NumDisplayAdapter + pContext->NumSoundAdapter + 4, MAKEINTRESOURCEW(IDS_HELP_DIALOG));
|
||||||
|
|
||||||
TabCtrl_OnSelChange(pContext);
|
TabCtrl_OnSelChange(pContext);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -20,7 +20,11 @@
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
HWND hMainDialog;
|
HWND hMainDialog;
|
||||||
HWND hDialogs[7];
|
ULONG NumDisplayAdapter;
|
||||||
|
HWND * hDisplayWnd;
|
||||||
|
ULONG NumSoundAdapter;
|
||||||
|
HWND * hSoundWnd;
|
||||||
|
HWND hDialogs[5];
|
||||||
|
|
||||||
}DXDIAG_CONTEXT, *PDXDIAG_CONTEXT;
|
}DXDIAG_CONTEXT, *PDXDIAG_CONTEXT;
|
||||||
|
|
||||||
|
@ -39,9 +43,16 @@ INT_PTR CALLBACK NetworkPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPAR
|
||||||
INT_PTR CALLBACK HelpPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
|
INT_PTR CALLBACK HelpPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
|
||||||
BOOL GetRegValue(HKEY hBaseKey, LPWSTR SubKey, LPWSTR ValueName, DWORD Type, LPWSTR Result, DWORD Size);
|
BOOL GetRegValue(HKEY hBaseKey, LPWSTR SubKey, LPWSTR ValueName, DWORD Type, LPWSTR Result, DWORD Size);
|
||||||
|
|
||||||
/* DirectDraw tests */
|
VOID InsertTabCtrlItem(HWND hDlgCtrl, INT Position, LPWSTR uId);
|
||||||
BOOL StartDDTest(HWND hWnd, HINSTANCE hInstance, INT resTestDescription, INT resResult, INT TestNr);
|
|
||||||
|
|
||||||
|
/* DirectDraw tests */
|
||||||
|
VOID DDTests();
|
||||||
|
|
||||||
|
/* DirectSound initialization */
|
||||||
|
void InitializeDirectSoundPage(PDXDIAG_CONTEXT pContext);
|
||||||
|
|
||||||
|
/* display adapter initialization */
|
||||||
|
void InitializeDisplayAdapters(PDXDIAG_CONTEXT pContext);
|
||||||
|
|
||||||
BOOL GetFileVersion(LPCWSTR szAppName, WCHAR * szVer, DWORD szVerSize);
|
BOOL GetFileVersion(LPCWSTR szAppName, WCHAR * szVer, DWORD szVerSize);
|
||||||
BOOL GetFileModifyTime(LPCWSTR pFullPath, WCHAR * szTime, int szTimeSize);
|
BOOL GetFileModifyTime(LPCWSTR pFullPath, WCHAR * szTime, int szTimeSize);
|
||||||
|
|
|
@ -9,6 +9,62 @@
|
||||||
|
|
||||||
#include "precomp.h"
|
#include "precomp.h"
|
||||||
|
|
||||||
|
BOOL CALLBACK DSEnumCallback(LPGUID lpGuid, LPCWSTR lpcstrDescription, LPCWSTR lpcstrModule, LPVOID lpContext)
|
||||||
|
{
|
||||||
|
PDXDIAG_CONTEXT pContext = (PDXDIAG_CONTEXT)lpContext;
|
||||||
|
HWND * hDlgs;
|
||||||
|
HWND hwndDlg;
|
||||||
|
WCHAR szSound[20];
|
||||||
|
WCHAR szText[30];
|
||||||
|
|
||||||
|
if (!lpGuid)
|
||||||
|
return TRUE;
|
||||||
|
|
||||||
|
if (pContext->NumSoundAdapter)
|
||||||
|
hDlgs = HeapReAlloc(GetProcessHeap(), 0, pContext->hSoundWnd, (pContext->NumSoundAdapter + 1) * sizeof(HWND));
|
||||||
|
else
|
||||||
|
hDlgs = HeapAlloc(GetProcessHeap(), 0, (pContext->NumSoundAdapter + 1) * sizeof(HWND));
|
||||||
|
|
||||||
|
if (!hDlgs)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
pContext->hSoundWnd = hDlgs;
|
||||||
|
hwndDlg = CreateDialogParamW(hInst, MAKEINTRESOURCEW(IDD_SOUND_DIALOG), pContext->hMainDialog, SoundPageWndProc, (LPARAM)pContext);
|
||||||
|
if (!hwndDlg)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
szSound[0] = L'\0';
|
||||||
|
LoadStringW(hInst, IDS_SOUND_DIALOG, szSound, sizeof(szSound)/sizeof(WCHAR));
|
||||||
|
szSound[(sizeof(szSound)/sizeof(WCHAR))-1] = L'\0';
|
||||||
|
|
||||||
|
swprintf (szText, L"%s %u", szSound, pContext->NumSoundAdapter + 1);
|
||||||
|
|
||||||
|
|
||||||
|
InsertTabCtrlItem(GetDlgItem(pContext->hMainDialog, IDC_TAB_CONTROL), pContext->NumDisplayAdapter + pContext->NumSoundAdapter + 1, szText);
|
||||||
|
|
||||||
|
hDlgs[pContext->NumSoundAdapter] = hwndDlg;
|
||||||
|
pContext->NumSoundAdapter++;
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void InitializeDirectSoundPage(PDXDIAG_CONTEXT pContext)
|
||||||
|
{
|
||||||
|
HRESULT hResult;
|
||||||
|
//IDirectSound8 *pObj;
|
||||||
|
|
||||||
|
/* create DSound object */
|
||||||
|
// hResult = DirectSoundCreate8(NULL, (LPDIRECTSOUND8*)&pObj, NULL);
|
||||||
|
// if (hResult != DS_OK)
|
||||||
|
// return;
|
||||||
|
hResult = DirectSoundEnumerateW(DSEnumCallback, pContext);
|
||||||
|
|
||||||
|
/* release the DSound object */
|
||||||
|
// pObj->lpVtbl->Release(pObj);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
INT_PTR CALLBACK
|
INT_PTR CALLBACK
|
||||||
SoundPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
|
SoundPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
|
||||||
{
|
{
|
||||||
|
@ -18,6 +74,7 @@ SoundPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
|
||||||
case WM_INITDIALOG:
|
case WM_INITDIALOG:
|
||||||
{
|
{
|
||||||
SetWindowPos(hDlg, NULL, 10, 32, 0, 0, SWP_NOACTIVATE | SWP_NOOWNERZORDER | SWP_NOSIZE | SWP_NOZORDER);
|
SetWindowPos(hDlg, NULL, 10, 32, 0, 0, SWP_NOACTIVATE | SWP_NOOWNERZORDER | SWP_NOSIZE | SWP_NOZORDER);
|
||||||
|
//InitializeDirectSoundPage(hDlg);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue