static void CreateUsageList(void) { HWND hwnd = (HWND)SendMessage(hwndClient, WM_MDIGETACTIVE, 0, 0); PROJECTITEM *pj; sqlite3 *db = BrowseOpenDBByHWND(hwnd, &pj); if (db) { char mangled[2048], *srcName = brsName; BROWSELIST *rv = NULL, **scan; FreeUsageList(); GetQualifiedName(mangled, &srcName, FALSE, FALSE); if (!strrchr(mangled+1, '@')) { DEBUG_INFO *inf; int id; mangled[0] = '_'; if (id = LookupSymbolBrowse(db, mangled)) { BROWSELIST *next = calloc(sizeof(BROWSELIST), 1); next->next = rv ; rv = next; strcpy(next->name, mangled+1); next->id = id; } rv = LookupCPPNamesBrowse(db, mangled , rv); mangled[0] = '@'; } rv = LookupCPPNamesBrowse(db, mangled, rv); LookupLineInfo(db, rv); LookupUsageInfo(db, rv); while (rv) { BROWSELIST *next = rv->next; free(rv); rv = next; } PostMessage(hwndBrowse, WM_USER, 0, 0); DBClose(db); } }
void BrowseTo(HWND hwnd, char *msg) { static char name[256]; int ofs; if (defaultWorkArea) return ; if (!browsing) { if (msg) { strcpy(name, msg); browsing = TRUE; } else browsing = SendMessage(hwnd, WM_WORDUNDERCURSOR, 0, (LPARAM)name); if (!PropGetBool(NULL, "BROWSE_INFORMATION") && browsing) { ExtendedMessageBox("Browse Info Alert", MB_OK, "Browse information not enabled"); browsing = FALSE; return ; } } else { SendMessage(hwnd, WM_WORDUNDERCURSOR, 0, (LPARAM)name); } if (browsing) { sqlite3 *db = NULL; DWINFO info; CHARRANGE charrange; int curline; char *filname; PROJECTITEM *pj; if (msg) { curline = - 2; filname = ""; } else { SendDlgItemMessage(hwnd, ID_EDITCHILD, EM_EXGETSEL, (WPARAM)0, (LPARAM) &charrange); curline = SendDlgItemMessage(hwnd, ID_EDITCHILD, EM_EXLINEFROMCHAR, 0, (LPARAM)charrange.cpMin) + 1; filname = (char*)SendMessage(hwnd, WM_FILENAME, 0, 0); } memset(&info, 0, sizeof(info)); db = BrowseOpenDBByHWND(hwnd, &pj); if (!db) { return ; } if (FindLine(db, filname, curline, name, info.dwName, &info.dwLineNo)) { char *p = strrchr(info.dwName, '\\'); if (p) strcpy(info.dwTitle, p + 1); info.logMRU = FALSE; info.newFile = FALSE; InsertBrowse(name, curline); CreateDrawWindow(&info, TRUE); } DBClose(db); } browsing = FALSE; }