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; }
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 ; }