Frost Moon Project

Win32APIでリッチエディットを実装する際の注意点 - Frost Moon Project アクセスランキング

Home > Tips > Win32APIでリッチエディットを実装する際の注意点

Win32APIでリッチエディットを実装する際の注意点

  1. 問題1
  2. 問題1に対する解決方法
  3. 問題2
  4. 問題2に対する解決方法
  5. スクリーンショット
  6. ダウンロード
  7. ソース閲覧
    1. main.cpp
    2. resource.rc
    3. resource.h
    4. manifest.xml

問題1
Code::BlocksでダイアログベースのWin32アプリケーションを作成し、
ResEditでリッチエディットをぽとぺた。
それをReleaseでビルドすると、エラーは出ませんが、
実行してもウインドウが一向に表示されません。


Debugでビルドしても同じで、実行してみるとどうやら起動時にエラーで終了している様子。


問題1に対する解決方法
To create the Richedit control you must call the LoadLibrary function on the appropriate Richedit dynamic-
link library (DLL) somewhere prior to attempting to create the control. Doing this allows the control to
register its class name. For example, to use a Richedit version 2.0 or version 3.0 control in a dialog box,
you must call LoadLibrary("riched20.dll") prior to attempting to load and initialize the dialog box resource.
How To Create Richedit Control Version 2.0 and 3.0 with the Visual Studio Resource Editorより引用しました。
つまり、リッチエディットコントロールが作成される前に、
LoadLibrary("riched20.dll")して下さいね!!と言うことです。



LoadLibrary()したらFreeLibrary()しないといけないので、いつもの様にWM_CLOSEに記述。


問題2
上記で解決かと思いきや、XP環境で実行すると終了時に、
お馴染みの「問題が発生したため~」が表示されてしまいます。
問題2に対する解決方法
原因はFreeLibrary()の位置でした。
WM_CLOSEではだめで、WinMain()のDialogBox()より後の行に記述しなければいけません。
これはダイアログの場合ですが、通常のウインドウ場合、WM_DESTROYに記述すると「問題が発生したため~」が表示されると思います。
そんなわけで以下のように修正。


スクリーンショット


ダウンロード
[Source&Binary]RichEdit.zip(120412)
size: 7.04KB
md5: 7f56f63c94f5ddc3a2255efdf16cbd86
ソース閲覧







Copyright(C)Frost Moon Project


Home > Tips > Win32APIでリッチエディットを実装する際の注意点