📄 debmisc.c
字号:
ChooseFontStruct.lStructSize = sizeof( CHOOSEFONT );
ChooseFontStruct.hwndOwner = hWndListBox;
ChooseFontStruct.hDC = (HDC) NULL;
ChooseFontStruct.lpLogFont = &(Profile.LogFont);
ChooseFontStruct.iPointSize = (INT) NULL;
ChooseFontStruct.Flags = CF_INITTOLOGFONTSTRUCT |
CF_SCREENFONTS | CF_EFFECTS |
CF_ENABLEHOOK;
ChooseFontStruct.rgbColors = Profile.rgbForeColor;
ChooseFontStruct.lCustData = (DWORD) NULL;
ChooseFontStruct.lpfnHook = (LPCFHOOKPROC) ChooseFontHookProc;
ChooseFontStruct.lpTemplateName = (LPTSTR) NULL;
ChooseFontStruct.hInstance = (HANDLE) NULL;
ChooseFontStruct.lpszStyle = (LPTSTR) NULL;
ChooseFontStruct.nFontType = SCREEN_FONTTYPE;
ChooseFontStruct.nSizeMin = (INT) NULL;
ChooseFontStruct.nSizeMax = (INT) NULL;
}
if( ChooseFont( &ChooseFontStruct ) ) {
HDC hDC;
hFont = CreateFontIndirect( &(Profile.LogFont) );
hDC = GetDC( hWndListBox );
SelectObject( hDC, hFont );
Profile.rgbForeColor = ChooseFontStruct.rgbColors;
InvalidateRect( hWndListBox, NULL, TRUE );
SendMessage( hWndListBox, WM_CTLCOLORLISTBOX, (DWORD) hDC,
(LONG) hWndListBox );
SendMessage( hWndListBox, WM_SETFONT, (DWORD) hFont, TRUE );
ReleaseDC( hWndListBox, hDC );
}
return( TRUE );
}
// ************************************************************************
// FUNCTION : ChooseNewBackColor( HWND )
// PURPOSE : Choose the background color for a listbox
// COMMENTS : Return TRUE on success else FALSE
// ************************************************************************
BOOL
ChooseNewBackColor( HWND hWndListBox )
{
static BOOL fFirstTime = TRUE;
static CHOOSECOLOR ChooseColorStruct;
static DWORD dwCustColors[16];
if( fFirstTime ) {
int i;
fFirstTime = FALSE;
//-- set the custom colors to white
for( i = 0; i < 16; i++ )
dwCustColors[i] = RGB(255,255,255);
ChooseColorStruct.lStructSize = sizeof( CHOOSECOLOR );
ChooseColorStruct.hwndOwner = hWndListBox;
ChooseColorStruct.hInstance = (HANDLE) NULL;
ChooseColorStruct.rgbResult = Profile.rgbBackColor;
ChooseColorStruct.lpCustColors = (LPDWORD) dwCustColors;
ChooseColorStruct.Flags = CC_RGBINIT;
ChooseColorStruct.lCustData = 0L;
ChooseColorStruct.lpfnHook = (LPCCHOOKPROC) NULL;
ChooseColorStruct.lpTemplateName = (LPTSTR) NULL;
}
if( ChooseColor( &ChooseColorStruct ) ) {
HDC hDC;
Profile.rgbBackColor = (COLORREF) ChooseColorStruct.rgbResult;
hDC = GetDC( hWndListBox );
SendMessage( hWndListBox, WM_CTLCOLORLISTBOX, (DWORD) hDC,
(LONG) hWndListBox );
ReleaseDC( hWndListBox, hDC );
InvalidateRect( hWndListBox, NULL, TRUE );
}
return( TRUE );
}
// ************************************************************************
// FUNCTION : MakeCommonDebugEventString( LPTSTR, LPDEBUG_EVENT )
// PURPOSE : Fill in the Debug Event information into a string buffer
// COMMENTS : The string buffer contains the information common to all
// debug events ( PID, TID ).
// ************************************************************************
BOOL
MakeCommonDebugEventString( LPTSTR lpszBuffer, LPDEBUG_EVENT lpDebugEvent )
{
StringPrintF( lpszBuffer, TEXT( "PID:0x%X \t TID:0x%X \t " ),
lpDebugEvent->dwProcessId, lpDebugEvent->dwThreadId );
return( TRUE );
}
// ************************************************************************
// FUNCTION : CreateTextButtonBar( HWND, LPINT )
// PURPOSE : Creates a Text Button Bar from the resource strings.
// COMMENTS : Returns window handle to the created text button bar
// ************************************************************************
HWND
CreateTextButtonBar( HWND hWndParent, LPINT lpTextButtonBarHeight )
{
TEXTBUTTON TextButton[9];
static TCHAR szButtonOpen[32];
static TCHAR szButtonAttach[32];
static TCHAR szButtonCut[32];
static TCHAR szButtonCopy[32];
static TCHAR szButtonDelete[32];
static TCHAR szButtonHelp[32];
LoadString( NULL, IDS_BUTTON_OPEN, szButtonOpen, sizeof(szButtonOpen)/sizeof(TCHAR) );
LoadString( NULL, IDS_BUTTON_ATTACH, szButtonAttach, sizeof(szButtonAttach)/sizeof(TCHAR) );
LoadString( NULL, IDS_BUTTON_CUT, szButtonCut, sizeof(szButtonCut)/sizeof(TCHAR) );
LoadString( NULL, IDS_BUTTON_COPY, szButtonCopy, sizeof(szButtonCopy)/sizeof(TCHAR) );
LoadString( NULL, IDS_BUTTON_DELETE, szButtonDelete, sizeof(szButtonDelete)/sizeof(TCHAR) );
LoadString( NULL, IDS_BUTTON_HELP, szButtonHelp, sizeof(szButtonHelp)/sizeof(TCHAR) );
TextButton[0].lpButtonText = szButtonOpen;
TextButton[0].idButton = IDM_FILE_OPEN;
TextButton[0].hWndButton = NULL;
TextButton[1].lpButtonText = szButtonAttach;
TextButton[1].idButton = IDM_FILE_ATTACH;
TextButton[1].hWndButton = NULL;
TextButton[2].lpButtonText = NULL;
TextButton[2].idButton = TB_SPACE;
TextButton[2].hWndButton = NULL;
TextButton[3].lpButtonText = szButtonCut;
TextButton[3].idButton = IDM_EDIT_CUT;
TextButton[3].hWndButton = NULL;
TextButton[4].lpButtonText = szButtonCopy;
TextButton[4].idButton = IDM_EDIT_COPY;
TextButton[4].hWndButton = NULL;
TextButton[5].lpButtonText = szButtonDelete;
TextButton[5].idButton = IDM_EDIT_DELETE;
TextButton[5].hWndButton = NULL;
TextButton[6].lpButtonText = NULL;
TextButton[6].idButton = TB_SPACE;
TextButton[6].hWndButton = NULL;
TextButton[7].lpButtonText = szButtonHelp;
TextButton[7].idButton = IDM_HELP_CONTENTS;
TextButton[7].hWndButton = NULL;
TextButton[8].lpButtonText = (LPTSTR) NULL;
TextButton[8].idButton = (INT) NULL;
TextButton[8].hWndButton = (HWND) NULL;
return( TextButtonBar( hWndParent, TextButton, lpTextButtonBarHeight ) );
}
// ************************************************************************
// FUNCTION : CreateIconWindow( HWND, LPCTSTR )
// PURPOSE :
// COMMENTS :
// ************************************************************************
HWND
CreateIconWindow( HWND hDlg, LPCTSTR lpstrIcon )
{
return ( CreateWindow( TEXT( "static" ), lpstrIcon,
WS_CHILD | WS_CLIPSIBLINGS | WS_VISIBLE | SS_ICON,
7, 5, 0, 0,
hDlg, NULL, GetModuleHandle( NULL ), NULL ) );
}
// ************************************************************************
// FUNCTION : GetPrivateProfileSettings( LPCTSTR, LPCTSTR, PPROFILE )
// PURPOSE : Retrieves the stored preferences and options from the
// profile (registry)
// COMMENTS :
// ************************************************************************
BOOL
GetPrivateProfileSettings( LPCTSTR lpszAppTitle, LPCTSTR lpszIniPathName,
PPROFILE pProfile )
{
pProfile->xPos = (INT) GetPrivateProfileInt( lpszAppTitle, TEXT( "xPos" ), CW_USEDEFAULT, lpszIniPathName );
pProfile->yPos = (INT) GetPrivateProfileInt( lpszAppTitle, TEXT( "yPos" ), CW_USEDEFAULT, lpszIniPathName );
pProfile->nWidth = (INT) GetPrivateProfileInt( lpszAppTitle, TEXT( "nWidth" ), CW_USEDEFAULT, lpszIniPathName );
pProfile->nHeight = (INT) GetPrivateProfileInt( lpszAppTitle, TEXT( "nHeight" ), CW_USEDEFAULT, lpszIniPathName );
pProfile->fMaximized = (BOOL) GetPrivateProfileInt( lpszAppTitle, TEXT( "fMaximized" ), (INT) FALSE, lpszIniPathName );
pProfile->fMinimized = (BOOL) GetPrivateProfileInt( lpszAppTitle, TEXT( "fMinimized" ), (INT) FALSE, lpszIniPathName );
pProfile->fToolBar = (BOOL) GetPrivateProfileInt( lpszAppTitle, TEXT( "fToolBar" ), (INT) TRUE, lpszIniPathName );
pProfile->fSavedDirectory = (BOOL) GetPrivateProfileInt( lpszAppTitle, TEXT( "fSavedDirectory" ), (INT) TRUE, lpszIniPathName );
GetPrivateProfileString( lpszAppTitle, TEXT( "szInitialDir" ), NULL, pProfile->szInitialDir,
sizeof( pProfile->szInitialDir ), lpszIniPathName );
pProfile->LogFont.lfHeight = (LONG) GetPrivateProfileInt( lpszAppTitle, TEXT( "lfHeight" ), (INT) 13 , lpszIniPathName );
pProfile->LogFont.lfWidth = (LONG) GetPrivateProfileInt( lpszAppTitle, TEXT( "lfWidth" ), (INT) 0 , lpszIniPathName );
pProfile->LogFont.lfWeight = (LONG) GetPrivateProfileInt( lpszAppTitle, TEXT( "lfWeight" ), (INT) 400 , lpszIniPathName );
pProfile->LogFont.lfItalic = (BYTE) GetPrivateProfileInt( lpszAppTitle, TEXT( "lfItalic" ), (INT) FALSE, lpszIniPathName );
pProfile->LogFont.lfUnderline = (BYTE) GetPrivateProfileInt( lpszAppTitle, TEXT( "lfUnderline" ), (INT) FALSE, lpszIniPathName );
pProfile->LogFont.lfStrikeOut = (BYTE) GetPrivateProfileInt( lpszAppTitle, TEXT( "lfStrikeOut" ), (INT) FALSE, lpszIniPathName );
pProfile->LogFont.lfPitchAndFamily = (BYTE) GetPrivateProfileInt( lpszAppTitle, TEXT( "lfPitchAndFamily" ), (INT) FF_DONTCARE, lpszIniPathName );
GetPrivateProfileString( lpszAppTitle, TEXT( "lfFaceName" ), TEXT( "System" ), pProfile->LogFont.lfFaceName,
LF_FACESIZE, lpszIniPathName );
pProfile->rgbForeColor = (COLORREF) GetPrivateProfileInt( lpszAppTitle, TEXT( "rgbForeColor" ),
(INT) GetSysColor(COLOR_WINDOWTEXT), lpszIniPathName );
pProfile->rgbBackColor = (COLORREF) GetPrivateProfileInt( lpszAppTitle, TEXT( "rgbBackColor" ),
(INT) GetSysColor(COLOR_WINDOW), lpszIniPathName );
pProfile->fClearOnNew = (BOOL) GetPrivateProfileInt( lpszAppTitle, TEXT( "fClearOnNew" ), (INT) TRUE, lpszIniPathName );
pProfile->fVerbose = (BOOL) GetPrivateProfileInt( lpszAppTitle, TEXT( "fVerbose" ), (INT) FALSE, lpszIniPathName );
pProfile->fShowSymbols = (BOOL) GetPrivateProfileInt( lpszAppTitle, TEXT( "fShowSymbols" ), (INT) FALSE, lpszIniPathName );
pProfile->DebugMode = (LONG) GetPrivateProfileInt( lpszAppTitle, TEXT( "DebugMode" ), (INT) DEBUG_PROCESS , lpszIniPathName );
pProfile->DebuggeePriority = (LONG) GetPrivateProfileInt( lpszAppTitle, TEXT( "DebuggeePriority" ), (INT) NORMAL_PRIORITY_CLASS, lpszIniPathName );
pProfile->DebugErrorLevel = (DWORD) GetPrivateProfileInt( lpszAppTitle, TEXT( "DebugErrorLevel" ), (INT) 0, lpszIniPathName );
pProfile->fSavePreferences = (BOOL) GetPrivateProfileInt( lpszAppTitle, TEXT( "fSavePreferences" ), (INT) FALSE, lpszIniPathName );
pProfile->fSaveOnExit = (BOOL) GetPrivateProfileInt( lpszAppTitle, TEXT( "fSaveOnExit" ), (INT) TRUE, lpszIniPathName );
return( TRUE );
}
// ************************************************************************
// FUNCTION : WritePrivateProfileSettings( LPCTSTR, LPCTSTR, PPROFILE )
// PURPOSE : Saves the preferences and options to the profile (registry)
// COMMENTS :
// ************************************************************************
BOOL
WritePrivateProfileSettings( LPCTSTR lpszAppTitle, LPCTSTR lpszIniPathName,
PPROFILE pProfile )
{
if( pProfile->fSaveOnExit ) {
WritePrivateProfileInt( lpszAppTitle, TEXT( "xPos" ), (INT) pProfile->xPos, lpszIniPathName );
WritePrivateProfileInt( lpszAppTitle, TEXT( "yPos" ), (INT) pProfile->yPos, lpszIniPathName );
WritePrivateProfileInt( lpszAppTitle, TEXT( "nWidth" ), (INT) pProfile->nWidth, lpszIniPathName );
WritePrivateProfileInt( lpszAppTitle, TEXT( "nHeight" ), (INT) pProfile->nHeight, lpszIniPathName );
WritePrivateProfileInt( lpszAppTitle, TEXT( "fMaximized" ), (INT) pProfile->fMaximized, lpszIniPathName );
WritePrivateProfileInt( lpszAppTitle, TEXT( "fMinimized" ), (INT) pProfile->fMinimized, lpszIniPathName );
WritePrivateProfileInt( lpszAppTitle, TEXT( "fToolBar" ), (INT) pProfile->fToolBar, lpszIniPathName );
WritePrivateProfileInt( lpszAppTitle, TEXT( "fSavedDirectory" ), (INT) pProfile->fSavedDirectory, lpszIniPathName );
WritePrivateProfileString( lpszAppTitle, TEXT( "szInitialDir" ), pProfile->szInitialDir, lpszIniPathName );
WritePrivateProfileInt( lpszAppTitle, TEXT( "lfHeight" ), (INT) pProfile->LogFont.lfHeight, lpszIniPathName );
WritePrivateProfileInt( lpszAppTitle, TEXT( "lfWidth" ), (INT) pProfile->LogFont.lfWidth, lpszIniPathName );
WritePrivateProfileInt( lpszAppTitle, TEXT( "lfWeight" ), (INT) pProfile->LogFont.lfWeight, lpszIniPathName );
WritePrivateProfileInt( lpszAppTitle, TEXT( "lfItalic" ), (INT) pProfile->LogFont.lfItalic, lpszIniPathName );
WritePrivateProfileInt( lpszAppTitle, TEXT( "lfUnderline" ), (INT) pProfile->LogFont.lfUnderline, lpszIniPathName );
WritePrivateProfileInt( lpszAppTitle, TEXT( "lfStrikeOut" ), (INT) pProfile->LogFont.lfStrikeOut, lpszIniPathName );
WritePrivateProfileInt( lpszAppTitle, TEXT( "lfPitchAndFamily" ), (INT) pProfile->LogFont.lfPitchAndFamily, lpszIniPathName );
WritePrivateProfileString( lpszAppTitle, TEXT( "lfFaceName" ), pProfile->LogFont.lfFaceName, lpszIniPathName );
WritePrivateProfileInt( lpszAppTitle, TEXT( "rgbForeColor" ), (INT) pProfile->rgbForeColor, lpszIniPathName );
WritePrivateProfileInt( lpszAppTitle, TEXT( "rgbBackColor" ), (INT) pProfile->rgbBackColor, lpszIniPathName );
if( pProfile->fSavePreferences ) {
WritePrivateProfileInt( lpszAppTitle, TEXT( "fClearOnNew" ), (INT) pProfile->fClearOnNew, lpszIniPathName );
WritePrivateProfileInt( lpszAppTitle, TEXT( "fVerbose" ), (INT) pProfile->fVerbose, lpszIniPathName );
WritePrivateProfileInt( lpszAppTitle, TEXT( "fShowSymbols" ), (INT) pProfile->fShowSymbols, lpszIniPathName );
WritePrivateProfileInt( lpszAppTitle, TEXT( "DebugMode" ), (INT) pProfile->DebugMode, lpszIniPathName );
WritePrivateProfileInt( lpszAppTitle, TEXT( "DebuggeePriority" ), (INT) pProfile->DebuggeePriority, lpszIniPathName );
WritePrivateProfileInt( lpszAppTitle, TEXT( "DebugErrorLevel" ), (INT) pProfile->DebugErrorLevel, lpszIniPathName );
}
WritePrivateProfileInt( lpszAppTitle, TEXT( "fSavePreferences" ), (INT) pProfile->fSavePreferences, lpszIniPathName );
}
WritePrivateProfileInt( lpszAppTitle, TEXT( "fSaveOnExit" ), (INT) pProfile->fSaveOnExit, lpszIniPathName );
return( TRUE );
}
// ************************************************************************
// FUNCTION: WritePrivateProfileInt( LPCTSTR, LPCTSTR, INT, LPCTSTR )
// PURPOSE : Writes the value of an integer from a specified keyname within
// a specified section of the Private Profile
// COMMENTS: Matched pair to GetPrivateProfileInt
// ************************************************************************
BOOL
WritePrivateProfileInt( LPCTSTR lpAppName, LPCTSTR lpKeyName, INT Value, LPCTSTR lpFileName )
{
TCHAR ValBuf[16];
wsprintf( ValBuf, TEXT( "%i" ), Value);
return( WritePrivateProfileString( lpAppName, lpKeyName, ValBuf, lpFileName ) );
}
// ************************************************************************
// FUNCTION : UpdateMenuSettings( HWND )
// PURPOSE : Adds check marks to active menu items
// COMMENTS :
// ************************************************************************
BOOL
UpdateMenuSettings( HWND hWnd )
{
if( Profile.fToolBar )
CheckMenuItem( GetMenu(hWnd), IDM_OPTIONS_TOOLBAR, MF_CHECKED );
if( Profile.fSavedDirectory )
CheckMenuItem( GetMenu(hWnd), IDM_OPTIONS_SAVEDDIR, MF_CHECKED );
if( Profile.fSaveOnExit )
CheckMenuItem( GetMenu(hWnd), IDM_OPTIONS_SAVEONEXIT, MF_CHECKED );
return( TRUE );
}
// ************************************************************************
// FUNCTION : OutOfMemoryMessageBox( HWND )
// PURPOSE : If called, displays an "Out of Memory" message box
// COMMENTS :
// ************************************************************************
BOOL
OutOfMemoryMessageBox( HWND hWndOwner )
{
MessageBox(
hWndOwner,
TEXT( "Out of Memory" ),
TEXT( "Memory Error" ),
MB_ICONSTOP | MB_APPLMODAL );
return( TRUE );
}
// ************************************************************************
// FUNCTION : MaxDebuggeesMessageBox( HWND )
// PURPOSE : If called, displays an "Max Debuggees" message box
// COMMENTS :
// ************************************************************************
BOOL
MaxDebuggeesMessageBox( HWND hWndOwner )
{
MessageBox( hWndOwner,
TEXT( "This build of the Debug Event Browser\n" )
TEXT( "is limited to debugging only one debuggee\n" )
TEXT( "at a time." ),
TEXT( "Cannot Open Debuggee" ),
MB_OK | MB_ICONEXCLAMATION );
return( TRUE );
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -