예제 #1
0
/*
* FindDlgCreate
*
* Purpose:
*
* Create and initialize Find Dialog.
*
*/
VOID FindDlgCreate(
    _In_ HWND hwndParent
)
{
    LVCOLUMN col;
    HICON    hIcon;

    //do not allow second copy
    if (g_wobjDialogs[WOBJ_FINDDLG_IDX]) {
        SetActiveWindow(g_wobjDialogs[WOBJ_FINDDLG_IDX]);
        return;
    }

    FindDialog = CreateDialogParam(g_hInstance, MAKEINTRESOURCE(IDD_DIALOG_SEARCH), hwndParent, &FindDlgProc, 0);
    if (FindDialog == NULL) {
        return;
    }
    g_wobjDialogs[WOBJ_FINDDLG_IDX] = FindDialog;

    FindDlgGrip = supCreateSzGripWindow(FindDialog);

    //set dialog icon, because we use shared dlg template this icon must be
    //removed after use, see aboutDlg/propDlg.
    hIcon = LoadImage(g_hInstance, MAKEINTRESOURCE(IDI_ICON_MAIN), IMAGE_ICON, 0, 0, LR_SHARED);
    if (hIcon) {
        SetClassLongPtr(g_wobjDialogs[WOBJ_FINDDLG_IDX], GCLP_HICON, (LONG_PTR)hIcon);
        DestroyIcon(hIcon);
    }

    FindDlgList = GetDlgItem(FindDialog, ID_SEARCH_LIST);
    if (FindDlgList) {
        bFindDlgSortInverse = FALSE;
        ListView_SetImageList(FindDlgList, ListViewImages, LVSIL_SMALL);
        ListView_SetExtendedListViewStyle(FindDlgList, LVS_EX_FULLROWSELECT | LVS_EX_DOUBLEBUFFER | LVS_EX_GRIDLINES | LVS_EX_LABELTIP);

        RtlSecureZeroMemory(&col, sizeof(col));
        col.mask = LVCF_TEXT | LVCF_SUBITEM | LVCF_FMT | LVCF_WIDTH | LVCF_ORDER | LVCF_IMAGE;
        col.iSubItem = 1;
        col.pszText = TEXT("Name");
        col.fmt = LVCFMT_LEFT | LVCFMT_BITMAP_ON_RIGHT;
        col.iOrder = 0;
        col.iImage = ImageList_GetImageCount(ListViewImages) - 1;
        col.cx = 300;
        ListView_InsertColumn(FindDlgList, 1, &col);

        col.iSubItem = 2;
        col.pszText = TEXT("Type");
        col.iOrder = 1;
        col.iImage = -1;
        col.cx = 100;
        ListView_InsertColumn(FindDlgList, 2, &col);
    }
    FindDlgAddTypes(FindDialog);
}
예제 #2
0
/*
* extrasCreateSSDTDialog
*
* Purpose:
*
* Create and initialize KiServiceTable Dialog.
*
*/
VOID extrasCreateSSDTDialog(
	_In_ HWND hwndParent
	)
{
	LVCOLUMN  col;

	//allow only one dialog
	if (g_wobjDialogs[WOBJ_SSDTDLG_IDX]) {
		if (IsIconic(g_wobjDialogs[WOBJ_SSDTDLG_IDX]))
			ShowWindow(g_wobjDialogs[WOBJ_SSDTDLG_IDX], SW_RESTORE);
		else
			SetActiveWindow(g_wobjDialogs[WOBJ_SSDTDLG_IDX]);
		return;
	}

	RtlSecureZeroMemory(&SdtDlgContext, sizeof(SdtDlgContext));
	SdtDlgContext.hwndDlg = CreateDialogParam(g_hInstance, MAKEINTRESOURCE(IDD_DIALOG_EXTRASLIST),
		hwndParent, &SdtDialogProc, 0);

	if (SdtDlgContext.hwndDlg == NULL) {
		return;
	}

	g_wobjDialogs[WOBJ_SSDTDLG_IDX] = SdtDlgContext.hwndDlg;	

	SdtDlgContext.SizeGrip = supCreateSzGripWindow(SdtDlgContext.hwndDlg);

	SetWindowText(SdtDlgContext.hwndDlg, TEXT("System Service Table"));

	extrasSetDlgIcon(SdtDlgContext.hwndDlg);

	SdtDlgContext.ListView = GetDlgItem(SdtDlgContext.hwndDlg, ID_EXTRASLIST);
	if (SdtDlgContext.ListView) {

		ListView_SetImageList(SdtDlgContext.ListView, ListViewImages, LVSIL_SMALL);
		ListView_SetExtendedListViewStyle(SdtDlgContext.ListView,
			LVS_EX_FULLROWSELECT | LVS_EX_DOUBLEBUFFER | LVS_EX_GRIDLINES | LVS_EX_LABELTIP);

		//columns
		RtlSecureZeroMemory(&col, sizeof(col));
		col.mask = LVCF_TEXT | LVCF_SUBITEM | LVCF_FMT | LVCF_WIDTH | LVCF_ORDER | LVCF_IMAGE;
		col.iSubItem++;
		col.pszText = TEXT("Id");
		col.fmt = LVCFMT_LEFT | LVCFMT_BITMAP_ON_RIGHT;
		col.iImage = ImageList_GetImageCount(ListViewImages) - 1;
		col.cx = 80;
		ListView_InsertColumn(SdtDlgContext.ListView, col.iSubItem, &col);

		col.iSubItem++;
		col.pszText = TEXT("Service Name");
		col.iOrder++;
		col.iImage = -1;
		col.cx = 200;
		ListView_InsertColumn(SdtDlgContext.ListView, col.iSubItem, &col);

		col.iSubItem++;
		col.pszText = TEXT("Address");
		col.iOrder++;
		col.cx = 130;
		ListView_InsertColumn(SdtDlgContext.ListView, col.iSubItem, &col);

		col.iSubItem++;
		col.pszText = TEXT("Module");
		col.iOrder++;
		col.cx = 200;
		ListView_InsertColumn(SdtDlgContext.ListView, col.iSubItem, &col);

		//remember columns count
		SdtDlgContext.lvColumnCount = col.iSubItem;

		SdtListTable();
		SendMessage(SdtDlgContext.hwndDlg, WM_SIZE, 0, 0);
		
		ListView_SortItemsEx(SdtDlgContext.ListView, &SdtDlgCompareFunc, 0);
	}
}