Пример #1
0
BOOL Main_Apply_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam)
{
	HWND hList = GetDlgItem(hwnd,IDC_LIST_SEGMEN);

	CheckedListBox_SetFlatStyleChecks(hList, TRUE);
	
	

	char szFilePath[256 * 2] = {0};
	strncpy(szFilePath, database_idb, 256);
	char *lpTmpBuf = strrchr(szFilePath, '\\') + 1;
	if(lpTmpBuf == (char*)1)
	{
		return FALSE;
	}
	*lpTmpBuf = 0;
	get_root_filename(lpTmpBuf, 256);
	HANDLE hFile=CreateFile(szFilePath, GENERIC_WRITE | GENERIC_READ, 0, 
		NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);   //获得文件句柄
	if(hFile == INVALID_HANDLE_VALUE)
	{
		msg("Apply Path:%s\n", szFilePath);
		msg("失败!目标%s文件不存在 或 文件无法打开    ErrorCode:%d\n", szFilePath, GetLastError());
		MoveWindowCenter(g_hwndMain, hwnd);
		return FALSE;
	}
	CloseHandle(hFile);
	int i;
	segment_t *curseg;
	int seg_qty = get_segm_qty();
	netnode n("$ Apply SegMen");
	if(BADNODE == (nodeidx_t)n)
	{
		netnode n("$ Apply SegMen", 0, true);
		for(i=0 ; i < seg_qty; i++)
		{
			BOOL bStats = FALSE;
			char segname[0x100] = {0};
			curseg = getnseg(i);
			get_true_segm_name(curseg, segname, 255);
			ListBox_InsertString(hList, -1, segname);
			bStats = !IsFilterTable(segname);
			if(bStats)
			{
				msg("segname:%s, type:%d\n", segname, curseg->type);
				bStats = curseg->type == SEG_CODE;
			}
			if(get_fileregion_offset(curseg->startEA) > 0)
			{
				CheckedListBox_SetCheckState(hList, i, bStats);
				n.altset(i, bStats);
			}

		}
		n.altset(CHECK_BACKFILE_INDEX, 1);
		CheckDlgButton( hwnd,IDC_APPLY_CHECK_BACK,   BST_CHECKED   );
	}
	else
	{
		for(i=0 ; i < seg_qty; i++)
		{
			char segname[0x100] = {0};
			curseg = getnseg(i);
			get_true_segm_name(curseg, segname, 255);
			ListBox_InsertString(hList, -1, segname);
			if(get_fileregion_offset(curseg->startEA) > 0)
			{
				CheckedListBox_SetCheckState(hList, i, n.altval(i));
			}
		}
		if(n.altval(CHECK_BACKFILE_INDEX))
		{
			CheckDlgButton( hwnd, IDC_APPLY_CHECK_BACK,  BST_CHECKED  );
		}
	}
	
	MoveWindowCenter(g_hwndMain, hwnd);
	return FALSE;
}
Пример #2
0
LRESULT CALLBACK ApplyDlgProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) 
{
	static HWND hListBox=0;
	switch (message)  
	{  
		HANDLE_MSG (hwnd, WM_SIZE, Main_OnSize);
		HANDLE_MSG (hwnd, WM_CTLCOLORLISTBOX, Main_OnCtlColorListbox);
		HANDLE_MSG (hwnd, WM_COMMAND, Main_OnCommand);
	case WM_INITDIALOG:  
		{
			int i = 0;
			for(i = 0; i < 3; i++)
			{
				CreateButton(BS_CHECKBOX, "CheckBox", hwnd, 50, 120 + i * 30, 10 * strlen("CheckBox"), 24, 0x100 + i);
				//	CreateButton(BS_CHECKBOX, "CheckBox", hwnd, 50, 150, 50, 24, 3);
			}
			INITCOMMONCONTROLSEX icc;
			WNDCLASSEX wcx;


			icc.dwSize = sizeof(icc);
			icc.dwICC = ICC_WIN95_CLASSES;
			InitCommonControlsEx(&icc);
			InitCheckedListBox(g_hinstPlugin);
// 			hListBox = CreateWindow("ListBox",
// 				NULL,
// 				WS_VISIBLE |WS_CHILDWINDOW |WS_EX_CLIENTEDGE |WS_CHILD|WS_VSCROLL | WS_TABSTOP | LBS_SORT| LBS_NOTIFY | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS,
// 				// LVS_REPORT|WS_CHILD|WS_VISIBLE,
// 				230, 20, 60, 80, 
// 				hwnd, (HMENU)IDC_LIST_SEG, 
// 				(HINSTANCE) GetWindowLong(hwnd, GWL_HINSTANCE), 
// 				NULL);
			hListBox = GetDlgItem(hwnd, IDC_LIST_SEGMEN);
			//ShowWindow(hListBox,SW_SHOW);
			//SendMessage(hListBox,LB_ADDSTRING ,0,(LPARAM)"你好");
			//SendMessage(hListBox,LB_ADDSTRING ,0,(LPARAM)"我好");
			//SendMessage(hListBox,LB_ADDSTRING ,0,(LPARAM)"他好");
			CheckedListBox_SetFlatStyleChecks(hListBox, TRUE);
			ListBox_AddString(hListBox,"Ford");
			ListBox_AddString(hListBox,"Toyota");
			ListBox_AddString(hListBox,"Chevy");
			//
			//return hListBox;
			break;
		}
		//Dlg_Init(hwnd);
// 	case WM_CTLCOLORLISTBOX://ODT_LISTBOX
// 		if((UINT) wParam==0x2000)
// 		{
// 			LPMEASUREITEMSTRUCT lpmis = (LPMEASUREITEMSTRUCT) lParam;
// 			lpmis->itemWidth=400;
// 			lpmis->itemHeight=22;
// 		}
// 		break;
// 	case WM_DRAWITEM:
// 
// 		if((UINT) wParam==0x2000)
// 		{
// 			LPDRAWITEMSTRUCT pDI=(LPDRAWITEMSTRUCT) lParam;
// 			HBRUSH brsh=CreateSolidBrush(RGB(255-30*pDI->itemID, 128+40*pDI->itemID, 128+40*pDI->itemID));//yellow
// 			FillRect(pDI->hDC,&pDI->rcItem,brsh);
// 			DeleteObject(brsh);
// 			// text 
// 			SetBkMode(pDI->hDC,TRANSPARENT);
// 			char szText[260];
// 			SendMessage(hListBox,LB_GETTEXT,pDI->itemID,(LPARAM)szText);
// 			const DWORD dwStyle = DT_LEFT | DT_SINGLELINE | DT_VCENTER | DT_NOPREFIX | DT_END_ELLIPSIS;
// 			DrawText(pDI->hDC, szText, strlen(szText), &pDI->rcItem, dwStyle);
// 		}
// 		break;
// 	case WM_COMMAND:       
// 		{  
// 			if(wParam < 0x1000)
// 			{
// 				char szBuf[256] = {0};
// 				sprintf(szBuf, "wp:%X lp:%X\n", wParam, lParam);
// 				msg(szBuf);
// 				//MessageBox(NULL, szBuf, NULL, 0);
// 				if(BST_CHECKED == IsDlgButtonChecked(hwnd, LOWORD(wParam)) )
// 				{
// 					CheckDlgButton(hwnd,   LOWORD(wParam),   BST_UNCHECKED   );
// 				}
// 				else if(BST_UNCHECKED == IsDlgButtonChecked(hwnd, LOWORD(wParam)))
// 				{
// 					CheckDlgButton(hwnd,   LOWORD(wParam),   BST_CHECKED   );
// 				}
// 			}
// 			switch (LOWORD(wParam))  
// 			{  
// 				//相加
// 			
// 			case IDC_DLGSEG_OK:
// 				//Ssys_Add(hwnd);			//相加1
// 				break;
// 			case IDC_DLGSIG_CANCEL:
// 				break;
// 			}
// 
// 		}  
// 		break;

	case WM_CLOSE:  
		EndDialog(hwnd,IDOK);
		break;  
	}  
	return FALSE ; 
}