[MinGW-Users] Problems using AddClipboardFormatListener, RemoveClipboardFormatListener and WM_CLIPBOARDUPDATE

アーカイブの一覧に戻る
Zerro hz088****@gmail*****
Tue Nov 26 04:52:38 JST 2024


Hi Paul,

The MinGW project has been orphaned already for some time.

Maybe you could try the MinGW-w64 project, which does seem to be 
maintained well.

Regards, ~Z

On 11/25/24 7:24 PM, Paul Dewhirst wrote:
> I've written a simple program which reports data placed on the clipboard.
> It uses AddClipboardFormatListener, RemoveClipboardFormatListener and
> WM_CLIPBOARDUPDATE.
> It compiles OK with the Microsoft C/C++ compiler, but fails to compile with gcc.
>
> The first problem is "error: 'WM_CLIPBOARDUPDATE' undeclared".  So I added
> "#define WM_CLIPBOARDUPDATE 0x031D" to the program.  Now it fails to link with
> "undefined reference to `AddClipboardFormatListener'" and "undefined
> reference to
> `RemoveClipboardFormatListener'".
>
> The winuser.h and libuser32.a in my installation of gcc do not contain
> these items.
> Perhaps if I download the latest win32api it will have files which do
> contain these items.
> I downloaded w32api-5.3.4-mingw32-dev.tar.xz and extracted winuser.h
> and libuser32.a,
> but these don't contain the items either.
>
> So I produced my own header and library file to include these items.
> I used the details for OpenClipboard as a guide because this has the
> same parameter
> and result profile.
>
> File listener.h:
> #define WM_CLIPBOARDUPDATE 0x031D
> WINUSERAPI BOOL WINAPI AddClipboardFormatListener (HWND);
> WINUSERAPI BOOL WINAPI RemoveClipboardFormatListener (HWND);
>
> File listener.def:
> LIBRARY user32.dll
> EXPORTS
> AddClipboardFormatListener at 4
> RemoveClipboardFormatListener at 4
>
> Then run dlltool:
> dlltool -d listener.def -l libextra.a
>
> Then compile using these files:
> gcc -g -o c:\bin\clip_view.exe clip_view.c -L. –lextra
>
> This compiles and links but it fails when run with "The procedure entry point
> AddClipboardFormatListener at 4 could not be located in the dynamic link
> library user32.dll.
> Using findstr /m, AddClipboardFormatListener is found in user32.dll but
> AddClipboardFormatListener at 4 is not found.  Using findstr /m,
> OpenClipboard is found
> in user32.dll but OpenClipboard at 4 is not found.  I do not understand why
> AddClipboardFormatListener fails but OpenClipboard works.
>
> If I comment out the function declarations in listener.h and remove
> the @4 in listener.def,
> rerun dlltool and recompile, it compiles, links and runs OK.  I don't
> like doing this because
> the calling conventions won't agree.  Perhaps it is OK for
> AddClipboardFormatListener
> which is only called once, but might cause problems for something
> called repeatedly.
> Can anybody work out what is going on here?
>
> I compared a user32.def generated using pexports-0.48-mingw32-bin from
> my Windows 7
> user32.dll with the user32.def from w32api-5.3.4-mingw32-src (with the
> @nn stripped).
> There are about 200 differences.  I think it would be a big job to
> update all the
> header files and the library file for these differences, so I don't
> expect it to happen.
> So it would be good if we could sort out using our own header and library files
> to include the needed missing items.
>
> I'm sorry if this post does not comply with the Posting Etiquette, as
> described at
> https://mingw.osdn.io/index.html?page=mailing.html#list-etiquette.
> I keep trying to view this, but Firefox reports "Unable to connect" and
> ping mingw.osdn.io reports "Request timed out."
>
> _______________________________________________
> MinGW-Users mailing list
> MinGW****@lists*****



More information about the MinGW-Users mailing list
アーカイブの一覧に戻る