| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209 |
- /*
- ** Command & Conquer Generals Zero Hour(tm)
- ** Copyright 2025 Electronic Arts Inc.
- **
- ** This program is free software: you can redistribute it and/or modify
- ** it under the terms of the GNU General Public License as published by
- ** the Free Software Foundation, either version 3 of the License, or
- ** (at your option) any later version.
- **
- ** This program is distributed in the hope that it will be useful,
- ** but WITHOUT ANY WARRANTY; without even the implied warranty of
- ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- ** GNU General Public License for more details.
- **
- ** You should have received a copy of the GNU General Public License
- ** along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
- /////////////////////////////////////////////////////////////////////////EA-V1
- // $File: //depot/GeneralsMD/Staging/code/Libraries/Source/debug/debug_dlg/debug_dlg.cpp $
- // $Author: mhoffe $
- // $Revision: #1 $
- // $DateTime: 2003/07/03 11:55:26 $
- //
- // ©2003 Electronic Arts
- //
- // Debug exception dialog test program
- //////////////////////////////////////////////////////////////////////////////
- #define STRICT
- #define WIN32_LEAN_AND_MEAN
- #include <windows.h>
- #include <commctrl.h>
- #include <stdio.h>
- // Pardon my coding here but this is for testing only...
- #pragma comment (lib,"comctl32")
- BOOL CALLBACK DialogProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
- {
- switch(uMsg)
- {
- case WM_INITDIALOG:
- {
- SendDlgItemMessage(hWnd,100,WM_SETTEXT,0,(LPARAM)"EXCEPTION_TYPE");
- SendDlgItemMessage(hWnd,101,WM_SETTEXT,0,(LPARAM)"Explains exception type further here...\n"
- "123456789012345678901234567890123456789012345678901234567890");
- SendDlgItemMessage(hWnd,102,WM_SETTEXT,0,(LPARAM)"Module/File/Line, Address");
- SendDlgItemMessage(hWnd,103,WM_SETTEXT,0,(LPARAM)"File version, build type");
- HWND list;
- list=GetDlgItem(hWnd,104);
- LVCOLUMN c;
- c.mask=LVCF_TEXT|LVCF_WIDTH;
- c.pszText="";
- c.cx=0;
- ListView_InsertColumn(list,0,&c);
- c.mask=LVCF_TEXT|LVCF_WIDTH|LVCF_FMT;
- c.pszText="Address";
- c.cx=60;
- c.fmt=LVCFMT_RIGHT;
- ListView_InsertColumn(list,1,&c);
- c.mask=LVCF_TEXT|LVCF_WIDTH;
- c.pszText="Module";
- c.cx=120;
- ListView_InsertColumn(list,2,&c);
- c.pszText="Symbol";
- c.cx=300;
- ListView_InsertColumn(list,3,&c);
- c.pszText="File";
- c.cx=130;
- ListView_InsertColumn(list,4,&c);
- c.pszText="Line";
- c.cx=80;
- ListView_InsertColumn(list,5,&c);
- LVITEM item;
- item.iItem=0;
- item.iSubItem=0;
- item.mask=0;
- item.iItem=ListView_InsertItem(list,&item);
- item.mask=LVIF_TEXT;
- item.iSubItem++;
- item.pszText="01234567";
- ListView_SetItem(list,&item);
- item.iSubItem++;
- item.pszText="MSVCRTD.dll+0xad38";
- ListView_SetItem(list,&item);
- item.iSubItem++;
- item.pszText="mainCRTStartupSuperLongSymbolOYeahThisIsCool+0xd23e0";
- ListView_SetItem(list,&item);
- item.iSubItem++;
- item.pszText="reallyreallyverylongfilename.cpp";
- ListView_SetItem(list,&item);
-
- item.iSubItem++;
- item.pszText="5748+0xad38";
- ListView_SetItem(list,&item);
- for (int k=1;k<30;k++)
- {
- item.iItem=k;
- item.iSubItem=0;
- item.iItem=ListView_InsertItem(list,&item);
- item.mask=LVIF_TEXT;
- item.iSubItem++;
- item.pszText="88888888";
- ListView_SetItem(list,&item);
- item.iSubItem++;
- item.pszText="MSVCRTD.dll+0xad38";
- ListView_SetItem(list,&item);
- item.iSubItem++;
- item.pszText="Debug::DebugException::Symbol+0xd23e0";
- ListView_SetItem(list,&item);
- item.iSubItem++;
- item.pszText="regularfilename.cpp";
- ListView_SetItem(list,&item);
-
- item.iSubItem++;
- item.pszText="5748+0x38";
- ListView_SetItem(list,&item);
- }
- HFONT hf;
- hf=CreateFont(13,0,0,0,FW_NORMAL,
- FALSE,FALSE,FALSE,ANSI_CHARSET,
- OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,
- DEFAULT_QUALITY,FIXED_PITCH|FF_MODERN,NULL);
- SendDlgItemMessage(hWnd,105,WM_SETFONT,(WPARAM)hf,MAKELPARAM(TRUE,0));
- SendDlgItemMessage(hWnd,105,LB_ADDSTRING,0,(LPARAM)"EAX:0x00000666 EBX:0x7ffdf000 ECX:0x00000000");
- SendDlgItemMessage(hWnd,105,LB_ADDSTRING,0,(LPARAM)"EDX:0x00422208 ESI:0x02100210 EDI:0x0012fec4");
- SendDlgItemMessage(hWnd,105,LB_ADDSTRING,0,(LPARAM)"EIP:0x0040103d ESP:0x0012fe78 EBP:0x0012fec4");
- SendDlgItemMessage(hWnd,105,LB_ADDSTRING,0,(LPARAM)"Flags:%00000000000000010000001000000110");
- SendDlgItemMessage(hWnd,105,LB_ADDSTRING,0,(LPARAM)"CS:0x001b DS:0x0023 SS:0x0023");
- SendDlgItemMessage(hWnd,105,LB_ADDSTRING,0,(LPARAM)"ES:0x0023 FS:0x0038 GS:0x0000");
- SendDlgItemMessage(hWnd,105,LB_ADDSTRING,0,(LPARAM)"");
- SendDlgItemMessage(hWnd,105,LB_ADDSTRING,0,(LPARAM)"CW:%0000001001111111");
- SendDlgItemMessage(hWnd,105,LB_ADDSTRING,0,(LPARAM)"SW:%0000000000000000");
- SendDlgItemMessage(hWnd,105,LB_ADDSTRING,0,(LPARAM)"TW:%1111111111111111");
- SendDlgItemMessage(hWnd,105,LB_ADDSTRING,0,(LPARAM)"ErrOfs: 0x00000000 ErrSel: 0x03020000");
- SendDlgItemMessage(hWnd,105,LB_ADDSTRING,0,(LPARAM)"DataOfs: 0x00000000 DataSel: 0xffff0000");
- SendDlgItemMessage(hWnd,105,LB_ADDSTRING,0,(LPARAM)"Cr0NpxState: 0x00000000");
- SendDlgItemMessage(hWnd,105,LB_ADDSTRING,0,(LPARAM)"ST(0) 10020203100210021002 -1.#IND00");
- SendDlgItemMessage(hWnd,105,LB_ADDSTRING,0,(LPARAM)"ST(1) 01031002010320020103 -1.#IND00");
- SendDlgItemMessage(hWnd,105,LB_ADDSTRING,0,(LPARAM)"ST(2) 10021002100210021002 -1.#IND00");
- SendDlgItemMessage(hWnd,105,LB_ADDSTRING,0,(LPARAM)"ST(3) 02031002020320020203 -1.#IND00");
- SendDlgItemMessage(hWnd,105,LB_ADDSTRING,0,(LPARAM)"ST(4) 10021002100210021002 -1.#IND00");
- SendDlgItemMessage(hWnd,105,LB_ADDSTRING,0,(LPARAM)"ST(5) 12031002100210021002 -1.#IND00");
- SendDlgItemMessage(hWnd,105,LB_ADDSTRING,0,(LPARAM)"ST(6) 14021402100212031002 -1.#IND00");
- SendDlgItemMessage(hWnd,105,LB_ADDSTRING,0,(LPARAM)"ST(7) 12031002100210021002 -1.#IND00");
- }
- return TRUE;
- case WM_COMMAND:
- switch(LOWORD(wParam))
- {
- case IDOK:
- EndDialog(hWnd,IDOK);
- break;
- }
- return FALSE;
- default:
- return FALSE;
- }
- }
- int CALLBACK WinMain(HINSTANCE hInst, HINSTANCE, LPSTR, int)
- {
- // show dialog box first
- InitCommonControls();
- DialogBox(hInst,MAKEINTRESOURCE(100),NULL,DialogProc);
- // write out resource data (if possible)
- FILE *f=fopen("..\\rc_exception.inl","wt");
- if (f)
- {
- fprintf(f,"static unsigned char rcException[]={ // program generated, do not edit\n");
- HRSRC h=FindResource(hInst,MAKEINTRESOURCE(100),RT_DIALOG);
- DWORD size=SizeofResource(hInst,h);
- unsigned char *data=(unsigned char *)LockResource(LoadResource(hInst,h));
- for (unsigned k=0;k<size;k+=8)
- {
- for (unsigned i=0;i<8;i++)
- fprintf(f,"0x%02x,",k+i<size?data[k+i]:0);
- fprintf(f,"\n");
- }
- fprintf(f,"0 };\n");
- fclose(f);
- }
- return 0;
- }
|