📄 ccide.c
字号:
,
{
6, IDM_STOP, 0, TBSTYLE_BUTTON
}
,
{
0, 0, 0, TBSTYLE_SEP
}
,
{
0, IDM_RUN, 0, TBSTYLE_BUTTON
}
,
{
1, IDM_RUNTO, 0, TBSTYLE_BUTTON
}
,
{
0, 0, 0, TBSTYLE_SEP
}
,
{
3, IDM_STEPIN, 0, TBSTYLE_BUTTON
}
,
{
4, IDM_STEPOVER, 0, TBSTYLE_BUTTON
}
,
{
5, IDM_STEPOUT, 0, TBSTYLE_BUTTON
}
,
{
0, 0, 0, 0
}
,
};
static int readytodraw = FALSE;
void SetBusy(int state)
{
if (state)
{
if (!programBusy)
SetCursor(hCursHourglass);
programBusy++;
}
else
{
programBusy--;
if (programBusy <= 0)
{
SetCursor(hCursArrow);
programBusy = 0;
}
}
}
//-------------------------------------------------------------------------
VOID WINAPI CenterWindow(HWND hWnd)
{
RECT rect;
WORD wWidth, wHeight;
// find out how big we are
GetWindowRect(hWnd, &rect);
// get screen size
wWidth = GetSystemMetrics(SM_CXSCREEN);
wHeight = GetSystemMetrics(SM_CYSCREEN);
// move to center
MoveWindow(hWnd, (wWidth / 2) - ((rect.right - rect.left) / 2), (wHeight /
2) - ((rect.bottom - rect.top) / 2), rect.right - rect.left,
rect.bottom - rect.top, FALSE);
}
//-------------------------------------------------------------------------
int ExtendedMessageBox(char *title, int flag, char *fmt, ...)
{
int rv;
HWND wnd;
char string[512];
va_list argptr;
va_start(argptr, fmt);
vsprintf(string, fmt, argptr);
va_end(argptr);
wnd = GetFocus();
rv = MessageBox(0, string, title, flag);
SetFocus(wnd);
return rv;
}
//-------------------------------------------------------------------------
void projSetupThread(char *buf)
{
NewProject(buf);
}
//-------------------------------------------------------------------------
void ProjSetup(char select, char *string)
{
static char buf[256];
DWORD hand;
GetCurrentDirectory(256, buf);
strcpy(szProjectName, buf);
strcat(szProjectName, "\\hi.prj");
strcpy(buf, string);
abspath(buf);
CloseHandle(CreateThread(0, 0, (LPTHREAD_START_ROUTINE)projSetupThread,
(LPVOID)buf, 0, &hand));
}
//-------------------------------------------------------------------------
int IsSpecialWindow(HWND hwnd)
{
return (GetWindowLong(hwnd, 4) != EDITSIG);
}
//-------------------------------------------------------------------------
LRESULT CALLBACK _export BrowseToProc(HWND hwnd, UINT iMessage, WPARAM wParam,
LPARAM lParam)
{
char buf[3];
switch (iMessage)
{
case WM_COMMAND:
if (wParam == IDOK)
{
GetEditField(hwnd, IDC_BROWSETO, browseToText);
EndDialog(hwnd, 1);
break;
}
if (HIWORD(wParam) == EN_CHANGE)
{
DisableControl(hwnd, IDOK, !GetWindowText((HWND)lParam, buf, 2))
;
break;
}
if (wParam != IDCANCEL)
break;
case WM_CLOSE:
EndDialog(hwnd, 0);
break;
case WM_INITDIALOG:
browseToText[0] = 0;
CenterWindow(hwnd);
SetEditField(hwnd, IDC_BROWSETO, "");
SendDlgItemMessage(hwnd, IDC_BROWSETO, EM_LIMITTEXT, 250, 0);
DisableControl(hwnd, IDOK, 1);
break;
}
return 0;
}
//-------------------------------------------------------------------------
LRESULT CALLBACK _export WaitingProc(HWND hwnd, UINT iMessage, WPARAM wParam,
LPARAM lParam)
{
switch (iMessage)
{
case WM_COMMAND:
if (wParam == IDOK)
EndDialog(hwnd, 0);
break;
case WM_INITDIALOG:
CenterWindow(hwnd);
break;
}
return 0;
}
//-------------------------------------------------------------------------
LRESULT CALLBACK _export WatchAddProc(HWND hwnd, UINT iMessage, WPARAM wParam,
LPARAM lParam)
{
static char buf[256];
HWND editwnd;
switch (iMessage)
{
case WM_COMMAND:
switch (LOWORD(wParam))
{
case IDOK:
editwnd = GetDlgItem(hwnd, IDC_EDWATCH);
GetWindowText(editwnd, buf, 256);
SendMessage(editwnd, WM_SAVEHISTORY, 0, 0);
EndDialog(hwnd, (int)buf);
break;
case IDCANCEL:
EndDialog(hwnd, 0);
break;
}
switch (HIWORD(wParam))
{
case CBN_SELCHANGE:
EnableWindow(GetDlgItem(hwnd, IDOK), TRUE);
break;
case CBN_EDITCHANGE:
EnableWindow(GetDlgItem(hwnd, IDOK), GetWindowText((HWND)lParam,
buf, 2));
break;
}
break;
case WM_CLOSE:
PostMessage(hwnd, WM_COMMAND, IDCANCEL, 0);
break;
case WM_INITDIALOG:
CenterWindow(hwnd);
editwnd = GetDlgItem(hwnd, IDC_EDWATCH);
SubClassHistoryCombo(editwnd);
SendMessage(editwnd, WM_SETHISTORY, 0, (LPARAM)watchhist);
EnableWindow(GetDlgItem(hwnd, IDOK), FALSE);
SetFocus(GetDlgItem(hwnd, IDC_EDWATCH));
break;
}
return 0;
}
//-------------------------------------------------------------------------
void MakeToolBar(HWND hwnd)
{
hwndToolEdit = CreateToolBarWindow(DID_EDITTOOL, hwndFrame, hwndClient, 16,
15, ID_EDITTB, 18, editButtons, edithints, 0, "Edit tools", 210);
hwndToolBuild = CreateToolBarWindow(DID_BUILDTOOL, hwndFrame, hwndClient,
16, 15, ID_BUILDTB, 3, makeButtons, makehints, 0, "Build tools", 220);
hwndToolDebug = CreateToolBarWindow(DID_DEBUGTOOL, hwndFrame, hwndClient,
16, 15, ID_DEBUGTB, 8, debugButtons, debughints, 0, "Debug tools", 230);
}
//-------------------------------------------------------------------------
char *exceptval(int num)
{
static char buf[256];
switch (num)
{
case STATUS_ACCESS_VIOLATION:
return "ACCESS VIOLATION";
case STATUS_DATATYPE_MISALIGNMENT:
return "DATATYPE MISALIGNMENT";
case STATUS_ARRAY_BOUNDS_EXCEEDED:
return "ARRAY BOUNDS EXCEEDED";
case STATUS_FLOAT_DENORMAL_OPERAND:
return "FLOAT DENORMAL OPERAND";
case STATUS_FLOAT_DIVIDE_BY_ZERO:
return "FLOAT DIVIDE BY ZERO";
case STATUS_FLOAT_INEXACT_RESULT:
return "FLOAT INEXACT RESULT";
case STATUS_FLOAT_INVALID_OPERATION:
return "FLOAT INVALID OPERATION";
case STATUS_FLOAT_OVERFLOW:
return "FLOAT OVERFLOW";
case STATUS_FLOAT_STACK_CHECK:
return "FLOAT STACK CHECK";
case STATUS_FLOAT_UNDERFLOW:
return "FLOAT UNDERFLOW";
case STATUS_INTEGER_DIVIDE_BY_ZERO:
return "INTEGER DIVIDE BY ZERO";
case STATUS_INTEGER_OVERFLOW:
return "INTEGER OVERFLOW";
case STATUS_PRIVILEGED_INSTRUCTION:
return "PRIVILEGED INSTRUCTION";
case STATUS_IN_PAGE_ERROR:
return "IN PAGE ERROR";
case STATUS_ILLEGAL_INSTRUCTION:
return "ILLEGALINSTRUCTION";
case STATUS_NONCONTINUABLE_EXCEPTION:
return "NONCONTINUABLE EXCEPTION";
case STATUS_STACK_OVERFLOW:
return "STACK OVERFLOW";
case STATUS_INVALID_DISPOSITION:
return "INVALID DISPOSITION";
case STATUS_GUARD_PAGE_VIOLATION:
return "GUARD PAGE VIOLATION";
case STATUS_SEGMENT_NOTIFICATION:
return "SEGMENT NOTIFICATION";
case STATUS_INVALID_HANDLE:
return "INVALID HANDLE";
case STATUS_NO_MEMORY:
return "NO MEMORY";
case STATUS_CONTROL_C_EXIT:
return "CONTROL C EXIT";
case STATUS_FLOAT_MULTIPLE_FAULTS:
return "FLOAT MULTIPLE FAULTS";
case STATUS_FLOAT_MULTIPLE_TRAPS:
return "FLOAT MULTIPLE TRAPS";
case STATUS_ILLEGAL_VLM_REFERENCE:
return "ILLEGAL VLM REFERENCE";
case STATUS_REG_NAT_CONSUMPTION:
return "REG NAT CONSUMPTION";
default:
sprintf(buf, "Unknown Exception(%08x)", num);
return buf;
}
}
//-------------------------------------------------------------------------
BOOL CALLBACK WindowChangeEnumProc(HWND window, LPARAM param)
{
HWND hwndLV = (HWND)param;
MENUITEMINFO mi;
LV_ITEM item;
char buf[256];
int v;
if (GetParent(window) != hwndClient)
return TRUE;
if (!IsWindowVisible(window))
return TRUE;
GetWindowText(window, buf, 256);
item.iItem = winShowCount++;
item.iSubItem = 0;
item.mask = LVIF_PARAM | LVIF_TEXT;
item.lParam = (LPARAM)window;
item.pszText = buf;
v = ListView_InsertItem(hwndLV, &item);
ListView_SetCheckState(hwndLV, v, TRUE);
return TRUE;
}
//-------------------------------------------------------------------------
static int CreateWindowData(HWND hwnd, int changed)
{
RECT r;
HWND hwndLV = GetDlgItem(hwnd, IDC_FILELIST);
LV_COLUMN lvC;
GetWindowRect(hwndLV, &r);
lvC.mask = LVCF_WIDTH | LVCF_SUBITEM;
lvC.cx = r.right - r.left;
lvC.iSubItem = 0;
ListView_InsertColumn(hwndLV, 0, &lvC);
winShowCount = 0;
EnumChildWindows(hwndClient, WindowChangeEnumProc, (LPARAM)hwndLV);
return winShowCount;
}
//-------------------------------------------------------------------------
long APIENTRY WindowShowProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM
lParam)
{
LV_ITEM item;
static HFONT hfont;
switch (message)
{
case WM_INITDIALOG:
hfont = CreateFontIndirect(&fontdata);
SendMessage(GetDlgItem(hwnd, IDC_FILELIST), WM_SETFONT, (WPARAM)
hfont, 0);
if (!CreateWindowData(hwnd, TRUE))
EndDialog(hwnd, 1);
else
CenterWindow(hwnd);
return 0;
case WM_NOTIFY:
if (wParam == IDC_FILELIST)
{
if (((LPNMHDR)lParam)->code == NM_DBLCLK)
{
LPNMITEMACTIVATE plvdi = (LPNMITEMACTIVATE)lParam;
item.iItem = plvdi->iItem;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -