Skip to main content

Notice

Please note that most of the software linked on this forum is likely to be safe to use. If you are unsure, feel free to ask in the relevant topics, or send a private message to an administrator or moderator. To help curb the problems of false positives, or in the event that you do find actual malware, you can contribute through the article linked here.
Topic: How to use MFC for writting a component? (Read 2651 times) previous topic - next topic
0 Members and 1 Guest are viewing this topic.

How to use MFC for writting a component?

I am trying to write a visualization component, but I think I am doing something wrong, because as soon as I show the MFC window using ShowWindow, foobar crashes.

I know that there are some components out there that use MFC, the problem is that I am unable to find the source code of any of them.

Can someone give me a link to the source code of a MFC component, or help me with the crash?

Thanks in advance

Code: [Select]
Illegal operation:
Code: C0000005h, flags: 00000000h, address: 7C1756B4h
Access violation, operation: read, address: 00000020h
Call path:
WinMain=>app_mainloop
This is the first crash logged by this instance.
Code bytes (7C1756B4h):
7C175674h:  F1 33 ED 39 6E 68 0F 85 68 7C 00 00 5E 5D 83 C4
7C175684h:  1C C3 56 57 FF 74 24 10 8B 7C 24 10 57 8B F1 E8
7C175694h:  27 F4 FF FF 8B 06 8B CE FF 90 74 01 00 00 83 BE
7C1756A4h:  80 00 00 00 00 0F 85 90 7D 00 00 E8 0D F2 FE FF
7C1756B4h:  39 70 20 75 1A 8B 8E B0 00 00 00 85 C9 0F 84 A2
7C1756C4h:  F1 FC FF 8B 01 51 51 6A 00 FF 90 64 01 00 00 6A
7C1756D4h:  00 6A 00 68 6A 03 00 00 FF 76 20 FF 15 04 16 14
7C1756E4h:  7C 5F 33 C0 5E C2 08 00 56 FF 74 24 0C 8B F1 FF
Stack (0012F434h):
0012F414h:  00C1FF14 0047D506 FFFFFFFF 0043651B
0012F424h:  003FF278 003F0308 00000008 00C1FF20
0012F434h:  010C4970 0012F6AC 7C16FCA0 00000001
0012F444h:  0012F6AC 010C4970 010C4970 0015F2A8
0012F454h:  00000000 00000000 00000000 02266C78
0012F464h:  00000001 00000000 00000000 00000000
0012F474h:  021E0000 00000015 0000000D 0000000D
0012F484h:  3F1010B7 010C0178 00000017 00000001
0012F494h:  0000001D 00000015 00000018 00000000
0012F4A4h:  FFFFFF70 FFFFFF3A FFFFFF70 FFFFFF3A
0012F4B4h:  0180CFCC 7C170408 00000000 0012F540
0012F4C4h:  7C207E28 FFFFFFFF 0012F4EC 7C16E0B0
0012F4D4h:  0000036E 00000001 7C1706B0 0012F4E8
0012F4E4h:  0000036E 00000000 0012F54C 7C16E14F
0012F4F4h:  0000036E 00000001 0012F6AC 0012F600
0012F504h:  001305F6 00000000 001305F6 00000006
0012F514h:  00000001 002806E8 00000000 00000000
0012F524h:  00000000 0012F548 7C207A5C FFFFFFFF
0012F534h:  0012F554 0015F2A8 0012F500 0012F58C
0012F544h:  7C207C58 00000000 0012F56C 7C16E1B8
Registers:
EAX: 00000000, EBX: 7C175686, ECX: 0012F4C0, EDX: 7C21F164
ESI: 010C4970, EDI: 00000001, EBP: 0012F4CC, ESP: 0012F434
Crash location: "MFC71", loaded at 7C140000h - 7C243000h
Symbol: "Ordinal4174" (+0000002Eh)

Loaded modules:
foobar2000                      loaded at 00400000h - 00452000h
ntdll                            loaded at 7C910000h - 7C9C6000h
kernel32                        loaded at 7C800000h - 7C901000h
USER32                          loaded at 77D10000h - 77DA0000h
GDI32                            loaded at 77EF0000h - 77F37000h
ole32                            loaded at 774B0000h - 775ED000h
ADVAPI32                        loaded at 77DA0000h - 77E4C000h
RPCRT4                          loaded at 77E50000h - 77EE1000h
msvcrt                          loaded at 77BE0000h - 77C38000h
COMCTL32                        loaded at 773A0000h - 774A2000h
SHLWAPI                          loaded at 77F40000h - 77FB6000h
utf8api                          loaded at 10000000h - 1000D000h
comdlg32                        loaded at 76360000h - 763AA000h
SHELL32                          loaded at 7C9D0000h - 7D1EF000h
IMM32                            loaded at 76340000h - 7635D000h
LPK                              loaded at 62E30000h - 62E39000h
USP10                            loaded at 74D20000h - 74D8B000h
foo_albumlist                    loaded at 003F0000h - 003FB000h
foo_ape                          loaded at 00A40000h - 00A5F000h
foo_burninate                    loaded at 00A60000h - 00A6C000h
VERSION                          loaded at 77BD0000h - 77BD8000h
foo_cdda                        loaded at 00A70000h - 00A7E000h
foo_clienc                      loaded at 00A80000h - 00A8B000h
foo_console                      loaded at 00A90000h - 00A97000h
foo_diskwriter                  loaded at 00AA0000h - 00AB2000h
WINMM                            loaded at 76B00000h - 76B2E000h
SYNCOR11                        loaded at 6BD00000h - 6BD0D000h
foo_dsp_extra                    loaded at 00B40000h - 00B55000h
foo_flac                        loaded at 00B60000h - 00B7C000h
foo_freedb                      loaded at 00B80000h - 00BB2000h
WS2_32                          loaded at 71A30000h - 71A47000h
WS2HELP                          loaded at 71A20000h - 71A28000h
foo_id3v2                        loaded at 00BC0000h - 00BF0000h
MSVCP60                          loaded at 76030000h - 76095000h
foo_infobox                      loaded at 00BF0000h - 00C03000h
foo_info_samurize                loaded at 00C10000h - 00C2A000h
foo_input_std                    loaded at 00D50000h - 00DF2000h
MSACM32                          loaded at 77BB0000h - 77BC5000h
foo_masstag                      loaded at 00E00000h - 00E14000h
foo_midi                        loaded at 00E20000h - 00EAF000h
MFC42                            loaded at 73D50000h - 73E4E000h
OLEAUT32                        loaded at 770F0000h - 7717C000h
MFC42LOC                        loaded at 61DF0000h - 61DFE000h
foo_mod                          loaded at 00EB0000h - 00EB9000h
BASS                            loaded at 00EC0000h - 00F1A000h
uxtheme                          loaded at 5B150000h - 5B188000h
foo_output_std                  loaded at 00F20000h - 00F29000h
foo_out_dsound_ex                loaded at 00F30000h - 00F39000h
DSOUND                          loaded at 73E90000h - 73EEC000h
foo_out_ks                      loaded at 00F50000h - 00F5B000h
SETUPAPI                        loaded at 778F0000h - 779E7000h
foo_read_http                    loaded at 00F60000h - 00F69000h
foo_rgscan                      loaded at 00F70000h - 00F7D000h
foo_search_ex                    loaded at 00F80000h - 00F88000h
foo_spc                          loaded at 00F90000h - 00FA1000h
foo_speex                        loaded at 00FB0000h - 00FC8000h
foo_syfm                        loaded at 00FD0000h - 00FDA000h
foo_uie_simple_spectrum          loaded at 00FE0000h - 00FEB000h
foo_ui_columns                  loaded at 00FF0000h - 01027000h
foo_ui_std                      loaded at 01030000h - 01047000h
foo_unpack                      loaded at 01050000h - 01081000h
foo_vis_manager                  loaded at 01090000h - 01098000h
foo_vis_ryospectrum              loaded at 010A0000h - 010B1000h
MSVCP71                          loaded at 7C3A0000h - 7C41B000h
MSVCR71                          loaded at 7C340000h - 7C396000h
MFC71                            loaded at 7C140000h - 7C243000h
OPENGL32                        loaded at 5F120000h - 5F1EC000h
GLU32                            loaded at 5FEA0000h - 5FEC1000h
DDRAW                            loaded at 736E0000h - 73729000h
DCIMAN32                        loaded at 73B40000h - 73B46000h
MFC71ESP                        loaded at 5D360000h - 5D36F000h
foo_vis_samurize2                loaded at 015D0000h - 015F7000h
foo_vis_simple_spectrum          loaded at 01720000h - 0172C000h
foo_wavpack                      loaded at 01730000h - 01742000h
MSCTF                            loaded at 746B0000h - 746FB000h
msctfime                        loaded at 75160000h - 7518E000h
Secur32                          loaded at 77FC0000h - 77FD1000h
CLBCATQ                          loaded at 76F90000h - 7700F000h
COMRes                          loaded at 77010000h - 770E0000h
WINTRUST                        loaded at 76BF0000h - 76C1E000h
CRYPT32                          loaded at 77A50000h - 77AE5000h
MSASN1                          loaded at 77AF0000h - 77B02000h
IMAGEHLP                        loaded at 76C50000h - 76C78000h
ksuser                          loaded at 73E60000h - 73E64000h
DBGHELP                          loaded at 5D4B0000h - 5D551000h

Stack dump analysis:
Address: 7C16FCA0h, location: "MFC71", loaded at 7C140000h - 7C243000h
Symbol: "Ordinal488" (+00000604h)
Address: 7C170408h, location: "MFC71", loaded at 7C140000h - 7C243000h
Symbol: "Ordinal2955" (+00000008h)
Address: 7C207E28h, location: "MFC71", loaded at 7C140000h - 7C243000h
Symbol: "Ordinal1069" (+00002634h)
Address: 7C16E0B0h, location: "MFC71", loaded at 7C140000h - 7C243000h
Symbol: "Ordinal6275" (+00000022h)
Address: 7C1706B0h, location: "MFC71", loaded at 7C140000h - 7C243000h
Symbol: "Ordinal2955" (+000002B0h)
Address: 7C16E14Fh, location: "MFC71", loaded at 7C140000h - 7C243000h
Symbol: "Ordinal1028" (+0000007Dh)
Address: 7C207A5Ch, location: "MFC71", loaded at 7C140000h - 7C243000h
Symbol: "Ordinal1069" (+00002268h)
Address: 7C207C58h, location: "MFC71", loaded at 7C140000h - 7C243000h
Symbol: "Ordinal1069" (+00002464h)
Address: 7C16E1B8h, location: "MFC71", loaded at 7C140000h - 7C243000h
Symbol: "Ordinal1209" (+0000003Bh)
Address: 7C16E1BDh, location: "MFC71", loaded at 7C140000h - 7C243000h
Symbol: "Ordinal1209" (+00000040h)
Address: 7C16E1F6h, location: "MFC71", loaded at 7C140000h - 7C243000h
Symbol: "Ordinal1209" (+00000079h)
Address: 7C2079F4h, location: "MFC71", loaded at 7C140000h - 7C243000h
Symbol: "Ordinal1069" (+00002200h)
Address: 77D18734h, location: "USER32", loaded at 77D10000h - 77DA0000h
Symbol: "GetDC" (+0000006Dh)
Address: 7C16E1BDh, location: "MFC71", loaded at 7C140000h - 7C243000h
Symbol: "Ordinal1209" (+00000040h)
Address: 7C16E1BDh, location: "MFC71", loaded at 7C140000h - 7C243000h
Symbol: "Ordinal1209" (+00000040h)
Address: 77D18816h, location: "USER32", loaded at 77D10000h - 77DA0000h
Symbol: "GetDC" (+0000014Fh)
Address: 7C16E1BDh, location: "MFC71", loaded at 7C140000h - 7C243000h
Symbol: "Ordinal1209" (+00000040h)
Address: 77D40467h, location: "USER32", loaded at 77D10000h - 77DA0000h
Symbol: "DeregisterShellHookWindow" (+000001CFh)
Address: 77D18830h, location: "USER32", loaded at 77D10000h - 77DA0000h
Symbol: "GetDC" (+00000169h)
Address: 77D1B89Bh, location: "USER32", loaded at 77D10000h - 77DA0000h
Symbol: "GetParent" (+0000016Ch)
Address: 7C16E1BDh, location: "MFC71", loaded at 7C140000h - 7C243000h
Symbol: "Ordinal1209" (+00000040h)
Address: 77D2F3E3h, location: "USER32", loaded at 77D10000h - 77DA0000h
Symbol: "SendMessageA" (+00000049h)
Address: 7C174AB8h, location: "MFC71", loaded at 7C140000h - 7C243000h
Symbol: "Ordinal593" (+000000A4h)
Address: 7C174A5Ah, location: "MFC71", loaded at 7C140000h - 7C243000h
Symbol: "Ordinal593" (+00000046h)
Address: 77D1D4EEh, location: "USER32", loaded at 77D10000h - 77DA0000h
Symbol: "DefWindowProcA" (+00000000h)
Address: 77D1E905h, location: "USER32", loaded at 77D10000h - 77DA0000h
Symbol: "CallWindowProcA" (+0000001Bh)
Address: 77D1D4EEh, location: "USER32", loaded at 77D10000h - 77DA0000h
Symbol: "DefWindowProcA" (+00000000h)
Address: 7C16FCDBh, location: "MFC71", loaded at 7C140000h - 7C243000h
Symbol: "Ordinal1908" (+00000024h)
Address: 77D1D4EEh, location: "USER32", loaded at 77D10000h - 77DA0000h
Symbol: "DefWindowProcA" (+00000000h)
Address: 7C170408h, location: "MFC71", loaded at 7C140000h - 7C243000h
Symbol: "Ordinal2955" (+00000008h)
Address: 7C207E28h, location: "MFC71", loaded at 7C140000h - 7C243000h
Symbol: "Ordinal1069" (+00002634h)
Address: 7C16E0B0h, location: "MFC71", loaded at 7C140000h - 7C243000h
Symbol: "Ordinal6275" (+00000022h)
Address: 7C16E14Fh, location: "MFC71", loaded at 7C140000h - 7C243000h
Symbol: "Ordinal1028" (+0000007Dh)
Address: 7C207A5Ch, location: "MFC71", loaded at 7C140000h - 7C243000h
Symbol: "Ordinal1069" (+00002268h)
Address: 7C207C58h, location: "MFC71", loaded at 7C140000h - 7C243000h
Symbol: "Ordinal1069" (+00002464h)
Address: 7C16E1B8h, location: "MFC71", loaded at 7C140000h - 7C243000h
Symbol: "Ordinal1209" (+0000003Bh)
Address: 7C16E1BDh, location: "MFC71", loaded at 7C140000h - 7C243000h
Symbol: "Ordinal1209" (+00000040h)
Address: 7C16E1F6h, location: "MFC71", loaded at 7C140000h - 7C243000h
Symbol: "Ordinal1209" (+00000079h)
Address: 7C2079F4h, location: "MFC71", loaded at 7C140000h - 7C243000h
Symbol: "Ordinal1069" (+00002200h)
Address: 77D18734h, location: "USER32", loaded at 77D10000h - 77DA0000h
Symbol: "GetDC" (+0000006Dh)
Address: 7C16E1BDh, location: "MFC71", loaded at 7C140000h - 7C243000h
Symbol: "Ordinal1209" (+00000040h)

Version info:
foobar2000 v0.8.3
UNICODE

How to use MFC for writting a component?

Reply #1
I have no experience with components using MFC, but are you sure that you intialize MFC correctly? The MFC documentation should tell you what needs to be done.

 

How to use MFC for writting a component?

Reply #2
Because I had a lot of exams I could not reply before. I was not initializating MFC correctly, as I wasn't creating an instance of CWinApp. Thank you!

Other problem I had while working with MFC was that I was doing this (just in case someone having problems with MFC read this):

Code: [Select]
#include "../../SDK/foobar2000.h"
#include <afxwin.h>


foobar2000.h includes windows.h, and that cannot be done before including afxwin.h. So, you have to do it this way:

Code: [Select]
#include <afxwin.h>
#include "../../SDK/foobar2000.h"


But then it will fail miserably to compile because there will be missing definitions (interface, IDataObject...). So you have to include afxext.h too:

Code: [Select]
#include <afxwin.h>
#include <afxext.h>
#include "../../SDK/foobar2000.h"