gdiplus.dllを使わないプログラム開発

このQ&Aのポイント
  • gdiplus.dllを使用しないダイアログベースのプログラム開発方法とは?
  • Windows2000以降で動作するプログラムを作成する際に、gdiplus.dllを読み込まない設定方法を教えてください。
  • Visual C++ 2008を使用して、gdiplus.dllを使用しないダイアログベースのプログラムを作成することは可能でしょうか?
回答を見る
  • ベストアンサー

gdiplus.dllを使わないプログラム開発

はじめまして、 ”Microsoft Visual C++ 2008”にてダイアログベースのプログラムを書いています。 windows2000に対応するために、gdiplus.dllを使用しないプログラムを作成したいのですが、 新規作成したプロジェクトをそのままビルドしただけでもgdiplus.dllが読込まれてしまいます。 読込まなくするには、どのように設定を行なえばよいのでしょうか。 それとも”Visual C++ 2008”ではgdiplus.dllを使用しないダイアログベースのプログラム開発は不可能なのでしょうか。 動作対象OS:win2000(SPなし)以降 開発環境: 言語:Visual C++ 2008(visual studio 2008 professional edition) テンプレート:MFCアプリケーション アプリケーションの種類:ダイアログベース 以上、よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • FAY
  • ベストアンサー率49% (95/193)
回答No.2

アプリケーションクラス (CHogeApp) の派生元を CWinAppEx から CWinApp に変更すれば 一応 gdiplus.dll は必要なくなりますが、当然CWinAppExでのみサポートされている機能は使えなくなります。 プロジェクトの作成時には変更できないので、プロジェクトを作成した後に変更します。

kazumasuzu
質問者

お礼

CWinAppに変更したところ、読込まれなくなりました。 ありがとうございました。

その他の回答 (1)

  • chie65535
  • ベストアンサー率43% (8526/19383)
回答No.1

Windows2000など、GDI+がデフォルトでインストールされない環境では「ユーザーがGDI+をインストールする」のが普通です。 なので「GDI+を使わずにプログラミングする必要はない」です。 gdiplus.dllの再配布に関して http://lamoo.s53.xrea.com/develop/gdiplus/gdiplus.html Windows2000環境で、ユーザーがgdiplus.dllをインストールするよう指示しているソフトの例 http://club.stocknavi.com/support/faq.php?c=sn&category=general&fq_id=53 http://www7.atwiki.jp/nico_player/pages/16.html たぶん、GDI+を使わずにプログラミングするには、GDI+を初期化しないバージョンのスタートアップライブラリ、GDI+を使用しないバージョンのGUIライブラリを使用するよう、プロジェクトのライブラリ指定を変更しなければならないと思います。 つまり、アプリケーションの種類をダイアログベースにしないで、ウィンドウの作成や描画をすべて自前で行う必要がある、と言う事です。 因みに、GDI+がネイティブで提供されるようになったのはXP以降ですから、XPが出る前の、GDI+が存在しない時代の古いC++コンパイラでアプリケーションを作成すれば、GDI+を使わないアプリケーションが出来上がります(もちろん、その時代には「ダイアログベース」なんて物は存在しないので、ウィンドゥの作成や描画はすべて自前で記述しないとならない)

kazumasuzu
質問者

お礼

回答ありがとうございました。

関連するQ&A

  • gdiplus.dll が無い

    大変困っています、皆様どうぞよろしくお願いいたします。 excel2010 でファイルに名前を付けて保存時に、突然終了してします。 エラー時の詳細を見ましたら、「gdiplus.dll unloaded」 となっていました。 以下にそのエラー詳細を記述いたします。 -------------------------------- 問題イベント名:BEX アプリケーション名: excel.exe アプリケーションのバージョン:14.0.4756.1000 アプリケーションのタイムスタンプ: 4b9c08e8 障害モジュールの名前: gdiplus.dll_unloaded 障害モジュールのバージョン: 0.0.0.0 障害モジュールのタイムスタンプ: 4cd536ec 例外オフセット: 742a836d 例外コード: c0000005 例外データ: 00000008 OSバージョン: 6.0.6001.2.1.0.256.6 ロケール ID: 1041 この問題に関する追加情報: LCID: 1041 skulcid: 1041 ---------------------------------- ■PC環境   windows vista SP1(会社のPCなのでwindows update が禁止されていてできません)   office 2000 と excel2010 共存しています   Lenovo ThinkPad L412 CPU: cereron メモリ:8G   .NET Framework 3.5  ■試してみた事   office2000, excel2010 の再インストール   .NET Framework 3.5 の修復(MSから提供されていました) office2000 はvista と互換性がない事は理解しています。(だいたい使えています) gdiplus.dll は PCの何処にもありませんでした。 他のPCからgdiplus.dll を system32フォルダーに copyしても同じく excel2010 は突然終わってしまいます。 海外のサイトに gdiplus.dll 修復とかダウンロードかあるのですが、怪しいサイトと聞いています(?) どうぞよろしくお願いいたします。

  • dll作成

    Visual studio2012利用し、 Win32プロジェクト から DLLを選んで、テンプレートに、関数を記入。ヘッダファイルを追加し、そこに関数の宣言を書いた。 ビルドすると、Debugフォルダに.dllは作成され、exeファイルが作成されない。 デバックなしで開始するとdllは開始できません。とメッセージがでます。 作成されたdllファイルの開始の仕方を、教えてください。

  • C#でのDLL

    OS  :WindowsXP Pro SP1 開発環境:VisualStudio .NET 2003 開発言語:C# 開発形態:Windowsアプリケーション 開発初心者です。よろしくお願い致します。 テキストファイルを読み込んで、その中にある文字列を3つほど返却値として返すDLLを作成したいと思っています。 新規にクラスライブラリのテンプレートでプロジェクトを作成し、プロジェクトメニューからコンポーネントの追加をしました。 質問事項 1.まず、DLLを作成する手順として、上記の方法でよろしいのでしょうか? 2.ファイルからテキストを取得するところまではできるのですが、それを返却値として、呼び出し元の別プロジェクトへは、どうすればよいのでしょうか? どなたか、ご教授お願い致します。

  • .NET C++ 2002でのダイアログベースアプリケーションの作り方

    .NET C++ 2002のマネージコードでダイアログベースのアプリケーションを作ろうと考えています。手始めに自動で作成される空のアプリケーションを実行すると、コンソールアプリケーションのようになってしまいます(Hello Worldを表示して終了)。 <手順> (1) Visual Studio.NET 2002を開き、新規プロジェクトの作成で、「Managed C++アプリケーション」を選択 (2) 自動的に作成されたアプリケーションをビルド・実行 VB.NETやC#.NETでは「WINDOWSアプリケーション」を選択すると、ダイアログベースのアプリケーションを作れますが、同様のことをC++.NETで行うには、どうすればよいのでしょうか。

  • ネイティブからマネージドdllの呼び出し方法

    主題について、どなたかご教授願います。 主題の詳細として、ネイティブコード(Win32 アプリ C++)からマネージド(Visual studio C#)のDLLを呼び出したいと考えています。 一度、C#フォームアプリケーションにて、ダイアログ(フォーム)をもったアプリを作成し、アプリを作成したプロジェクトの出力をクラスライブラリに変更して.dllと.tlbを作成しました。 しかし、その後の呼び出し方法が不明なため、ネイティブコードからの呼び出し方法がわかっていない状態となっています。 つきましては、下記の質問について、どなたかお答えしていただけないでしょうか? 1:C#でのダイアログをもったDLLの作成は可能か(上記の作成方法が正確か否か) 2:上記が可能であれば、その作成方法 3:C++Win32 アプリケーションからの呼び出し方 サンプルや参考サイトなど、どんな情報でも構いませんので、ご教授のほど、よろしくお願い致します。

  • VistaでビルドしたexeがXPで動作しない。

    Visual Studio 2003 (OS:XP)で開発していたプロジェクトを、Visual Studio 2005(OS:Vista)に移行しているのですが、VistaでビルドしたexeをXPへインストールすると下記のエラーが表示され動作しません。 【表示されるエラー】 「プロシージャ エントリ ポイント _except_handler4_common が ダイナミック リンク ライブラリ msvcrt.dllから見つかりませんでした」 MFCのダイアログベースで、インストールはセットアッププロジェクトで作成したインストーラーを使用しています。 VistaでビルドしたexeをXPで動作させるには、どのようにしたら良いのでしょうか? 以上、よろしくお願いします。

  • リソースのみのDLLの作り方と使い方

    複数のJPEGファイルをDLL化して、ダイアログベース(VC++6)のアプリケーション上 で表示したいのですが、DLLってどうやって作成していくのでしょうか?

  • DLL関数を使ったプログラム

     DLL関数を使ったプログラムを動かしたんですが、ERRORが解決できず 困っています。DLLを作成したのはいいのですが、それをLoadLibraryで読み込もうとしても指定したプロシージャが見つからないというエラーになるようです。使用している環境はVisual Studio.NET2003です。  以下はDLLのソースです。 // plug.c // #include <windows.h> #include <stdio.h> __declspec(dllexport) void CALLBACK TestFunc() {    printf("DLLのTestFunc()関数が実行されました。\n"); } これをビルドするとplug.dllとplug.expとplug.libが作成されました。  そしてこれを使用したプログラムが // stab.c // #include <windows.h> #include <stdio.h> typedef void (*TestFunc)(void); void main() {     HMODULE hModule;     DWORD error;     TestFunc funcPointer;     hModule = LoadLibrary(TEXT("plug"));     error = GetLastError();//error値が127     funcPointer = (TestFunc)GetProcAddress(hModule,TEXT("TestFunc"));     funcPointer();     FreeLibrary(hModule);     getchar(); } LoadLibrary関数を使用してアプリのメモリ空間にDLLを読み込もうとしているんですが、ここでハンドルが正確に渡されていないみたいなんです。どうしてこうなるのか分かりません。わかる方いらっしゃったらよろしくお願いします。

  • VC++統合開発環境で

    Visual C++ 2008 の統合開発環境を使ってプロジェクトビルドを行った場合、実行ファイルはどこに作られるのでしょうか?プロジェクトが置かれているフォルダを探してみましたが見つかりませんでした。ビルドは正常終了しているのですが・・・。回答よろしくお願いします。

  • Microsoft Visual C++ 6.0での複数ある中からのプロジェクトの選び方について

    Microsoft Visual C++ 6.0を使用して、ダイアログエディタでダイアログボックスを作成したものを含んだプログラムを作りたいのですが、Microsoft Visual C++ 6.0を初めて開いた時、「ファイル」-「新規作成」よりプロジェクトを選択するような画面が出ていますが、どのプロジェクトにするのが1番良いのでしょうか。