📄 debmain.c
字号:
Profile.DebuggeePriority = IDLE_PRIORITY_CLASS;
if( SendMessage( GetDlgItem( hDlg, IDC_NORMAL_PRIORITY_CLASS),
BM_GETCHECK, 0, 0 ) )
Profile.DebuggeePriority = NORMAL_PRIORITY_CLASS;
if( SendMessage( GetDlgItem( hDlg, IDC_HIGH_PRIORITY_CLASS),
BM_GETCHECK, 0, 0 ) )
Profile.DebuggeePriority = HIGH_PRIORITY_CLASS;
if( SendMessage( GetDlgItem( hDlg, IDC_REALTIME_PRIORITY_CLASS),
BM_GETCHECK, 0, 0 ) )
Profile.DebuggeePriority = REALTIME_PRIORITY_CLASS;
//-- Miscellaneous Options Group
Profile.fClearOnNew = (BOOL) SendMessage(
GetDlgItem( hDlg, IDC_CLEAR_ON_NEW),
BM_GETCHECK, 0 , 0 );
Profile.fVerbose = (BOOL) SendMessage(
GetDlgItem( hDlg, IDC_VERBOSE),
BM_GETCHECK, 0 , 0 );
#ifdef SHOW_SYMBOLS
Profile.fShowSymbols = (BOOL) SendMessage(
GetDlgItem( hDlg, IDC_SHOW_SYMBOLS),
BM_GETCHECK, 0 , 0 );
#endif
//- Debug Error Level Group
if( SendMessage( GetDlgItem( hDlg, IDC_DEBUG_MODE_NONE),
BM_GETCHECK, 0, 0 ) )
Profile.DebugErrorLevel = 0;
if( SendMessage( GetDlgItem( hDlg, IDC_DEBUG_MODE_ERROR),
BM_GETCHECK, 0, 0 ) )
Profile.DebugErrorLevel = SLE_ERROR;
if( SendMessage( GetDlgItem( hDlg, IDC_DEBUG_MODE_MINORERROR),
BM_GETCHECK, 0, 0 ) )
Profile.DebugErrorLevel = SLE_MINORERROR;
if( SendMessage( GetDlgItem( hDlg, IDC_DEBUG_MODE_WARNING),
BM_GETCHECK, 0, 0 ) )
Profile.DebugErrorLevel = SLE_WARNING;
Profile.fSavePreferences = (BOOL) SendMessage(
GetDlgItem( hDlg,
IDC_SAVE_PREFERENCES),
BM_GETCHECK, 0 , 0 );
EndDialog( hDlg, TRUE );
return( TRUE );
case IDCANCEL:
EndDialog( hDlg, FALSE );
return( TRUE );
case IDHELP:
return( TRUE );
}
break;
case WM_INITDIALOG:
//-- Debugger Setting Group
switch( Profile.DebugMode ) {
case DEBUG_PROCESS:
SendMessage( GetDlgItem( hDlg, IDC_DEBUG_PROCESS),
BM_SETCHECK, 1, 0);
break;
case ( DEBUG_PROCESS | DEBUG_ONLY_THIS_PROCESS ):
SendMessage( GetDlgItem( hDlg, IDC_DEBUG_ONLY_THIS_PROCESS),
BM_SETCHECK, 1, 0);
break;
}
//-- Debuggee Priority Group
switch( Profile.DebuggeePriority ) {
case IDLE_PRIORITY_CLASS:
SendMessage( GetDlgItem( hDlg, IDC_IDLE_PRIORITY_CLASS),
BM_SETCHECK, 1, 0);
break;
case NORMAL_PRIORITY_CLASS:
SendMessage( GetDlgItem( hDlg, IDC_NORMAL_PRIORITY_CLASS),
BM_SETCHECK, 1, 0);
break;
case HIGH_PRIORITY_CLASS:
SendMessage( GetDlgItem( hDlg, IDC_HIGH_PRIORITY_CLASS),
BM_SETCHECK, 1, 0);
break;
case REALTIME_PRIORITY_CLASS:
SendMessage( GetDlgItem( hDlg, IDC_REALTIME_PRIORITY_CLASS),
BM_SETCHECK, 1, 0);
break;
}
//-- Miscellaneous Options Group
SendMessage( GetDlgItem( hDlg, IDC_CLEAR_ON_NEW), BM_SETCHECK,
Profile.fClearOnNew, 0 );
SendMessage( GetDlgItem( hDlg, IDC_VERBOSE), BM_SETCHECK,
Profile.fVerbose, 0 );
SendMessage( GetDlgItem( hDlg, IDC_SAVE_PREFERENCES), BM_SETCHECK,
Profile.fSavePreferences, 0 );
#ifdef SHOW_SYMBOLS
SendMessage( GetDlgItem( hDlg, IDC_SHOW_SYMBOLS), BM_SETCHECK,
Profile.fShowSymbols, 0 );
#endif
//- Debug Error Level Group
switch( Profile.DebugErrorLevel ) {
case 0:
SendMessage( GetDlgItem( hDlg, IDC_DEBUG_MODE_NONE),
BM_SETCHECK, 1, 0);
break;
case SLE_ERROR:
SendMessage( GetDlgItem( hDlg, IDC_DEBUG_MODE_ERROR),
BM_SETCHECK, 1, 0);
break;
case SLE_MINORERROR:
SendMessage( GetDlgItem( hDlg, IDC_DEBUG_MODE_MINORERROR),
BM_SETCHECK, 1, 0);
break;
case SLE_WARNING:
SendMessage( GetDlgItem( hDlg, IDC_DEBUG_MODE_WARNING),
BM_SETCHECK, 1, 0);
break;
}
return( TRUE );
}
return( FALSE );
UNREFERENCED_PARAMETER( lParam );
}
// ************************************************************************
// FUNCTION : AttachDlgProc( HWND, UINT, WPARAM, LPARAM )
// PURPOSE : Processes messages for "Attach" dialog box
// MESSAGES :
// WM_COMMAND - Input received
// WM_INITDIALOG - initialize dialog box
// COMMENTS :
// Wait for user to click on "Ok" button, then close the dialog box.
// ************************************************************************
BOOL CALLBACK
AttachDlgProc( HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam )
{
static HWND hWndProcessList;
switch( uMsg ) {
case WM_COMMAND:
switch( LOWORD(wParam) ) {
case IDOK: {
LONG Index;
DWORD dwProcessId;
Index = (UINT) SendMessage( hWndProcessList, LB_GETCURSEL,
(WPARAM) NULL, (LPARAM) NULL );
dwProcessId = (DWORD) SendMessage( hWndProcessList,
LB_GETITEMDATA,
(WPARAM) Index, (LPARAM) NULL );
AttachToDebuggee( dwProcessId, Global.hWndListBox );
EndDialog( hDlg, TRUE );
return( TRUE );
}
case IDCANCEL:
EndDialog( hDlg, FALSE );
return( TRUE );
case IDHELP:
return( TRUE );
}
switch( HIWORD( wParam ) ) {
case LBN_DBLCLK:
SendMessage( hDlg, WM_COMMAND, (WPARAM) IDOK, (LPARAM) 0L );
return( TRUE );
}
break;
case WM_INITDIALOG:
hWndProcessList = GetDlgItem( hDlg, IDC_PROCESSLIST );
SendMessage( hWndProcessList, LB_RESETCONTENT, 0 , 0 );
for(; !EnumWindows( (WNDENUMPROC) EnumProcessListFunc,
(LPARAM) hWndProcessList ); )
; // continue looping until done
return( TRUE );
}
return( FALSE );
UNREFERENCED_PARAMETER( lParam );
}
// **************************************************************************
// FUNCTION : AboutDlgProc( HWND, UINT, WPARAM, LPARAM )
// PURPOSE : Processes messages for "About" dialog box
// MESSAGES :
// WM_COMMAND - Input received
// IDOK - OK button selected
// IDCANCEL - Cancel button selected
// ...
// WM_INITDIALOG - initialize dialog box
// WM_CLOSE - close the dialog box
// ...
// COMMENTS:
// No initialization is needed for this particular dialog box.
// In this case, TRUE must be returned to Windows.
// Wait for user to click on "Ok" button, then close the dialog box.
// **************************************************************************
BOOL CALLBACK
AboutDlgProc( HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam )
{
switch( uMsg ) {
case WM_COMMAND:
switch( LOWORD(wParam) ) {
case IDOK:
EndDialog( hDlg, TRUE );
return( TRUE );
case IDCANCEL:
EndDialog( hDlg, FALSE );
return( FALSE );
}
break;
case WM_INITDIALOG:
SetTimer( hDlg, 1, TIMEOUT_ANIMATED_ICON, TimerProc );
return( TRUE );
case WM_CLOSE:
EndDialog( hDlg, TRUE );
return( TRUE );
case WM_DESTROY:
KillTimer( hDlg, 1 );
return( TRUE );
}
return( FALSE );
UNREFERENCED_PARAMETER( lParam );
}
// ************************************************************************
// FUNCTION : NewListBoxWndProc( HWND, UINT, WPARAM, LPARAM )
// PURPOSE : Processes messages for "LISTBOX" class.
// COMMENTS : Prevents the user from moving the window
// by dragging the titlebar.
// ************************************************************************
LRESULT CALLBACK
NewListBoxWndProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam )
{
switch( uMsg ) {
case WM_NCLBUTTONDOWN:
if( wParam == HTCAPTION ) {
SetFocus( hWnd );
return( FALSE );
}
else
break;
}
return( CallWindowProc( Global.OldListBoxWndProc, hWnd, uMsg, wParam, lParam) );
}
// ************************************************************************
// FUNCTION : TimerProc( HWND, UINT, UINT, DWORD )
// PURPOSE : Timer callback fuction that changes the dialog's icon (thus
// a animated icon) for each timer message received.
// COMMENTS :
// ************************************************************************
VOID CALLBACK
TimerProc( HWND hDlg, UINT uMsg, UINT idEvent, DWORD dwTime )
{
#define NUM_ICONS 8
static UINT uIconNumber = 0;
static HWND hWndIcon = NULL;
static HWND hWndIconOld = NULL;
static LPCTSTR lpszIconNames[NUM_ICONS] = {
TEXT( "DebugIcon1" ), TEXT( "DebugIcon2" ),
TEXT( "DebugIcon3" ), TEXT( "DebugIcon4" ),
TEXT( "DebugIcon5" ), TEXT( "DebugIcon6" ),
TEXT( "DebugIcon7" ), TEXT( "DebugIcon8" ) };
if( (++uIconNumber) >= NUM_ICONS )
uIconNumber = 0;
hWndIconOld = hWndIcon;
hWndIcon = CreateIconWindow( hDlg, lpszIconNames[uIconNumber] );
if( hWndIcon != NULL )
DestroyWindow( hWndIconOld );
return;
UNREFERENCED_PARAMETER( uMsg );
UNREFERENCED_PARAMETER( idEvent );
UNREFERENCED_PARAMETER( dwTime );
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -