ab.com コミュニティ

ActiveBasicを通したコミュニケーション
現在時刻 - 2024年4月27日(土) 14:32

全ての表示時間は UTC+09:00 です




返信する
ユーザー名:
件名:
メッセージ本文:
メッセージを入力してください。60000 字まで入力できます。 

フォントサイズ:
フォントカラー
オプション:
BBCode: ON
[img]: ON
[flash]: OFF
[url]: ON
スマイリー: OFF
BBCode を無効にする
URL を自動的にパースしない
クイズ
お手数ですがカタカナで「エービー」と4文字を入力してください。:
答えを正確に入力してください。答えられるかどうかでスパムボットか否かを判定します。
   

トピックのレビュー - アイコン選択ダイアログについて
作成者 メッセージ
  記事の件名:  バグ?  引用付きで返信する
このままだとパスが出なくて、(WindowsMe)
ChangeIconDialogの中の
コード:
If SHChangeIconDialogA(hwnd, str, MAX_PATH, Index) <> FALSE Then
を、
コード:
If SHChangeIconDialogA(hwnd, VarPtr(str[0]), MAX_PATH, Index) <> FALSE Then
に換えたらうまくいきました。
投稿記事 Posted: 2008年7月27日(日) 18:16
  記事の件名:   引用付きで返信する
コード:
Typedef	PChangeIconDialogW = *Function(hWnd As HWND, lpszFilename As *Word, Reserved As Long, ByRef lpIconIndex As Long) As Long
Typedef	PChangeIconDialogA = *Function(hWnd As HWND, lpszFilename As String, Reserved As Long, ByRef lpIconIndex As Long) As Long
を追加したらなんとか出来ました。
ありがとうございました。

これでOKなのか、やや不安がありますが…
投稿記事 Posted: 2006年4月01日(土) 19:49
  記事の件名:   引用付きで返信する
回答ありがとうございます。

PChangeIconDialogW

PChangeIconDialogA
が無効な識別子と出るのですが、
どうすればよいのでしょうか?
投稿記事 Posted: 2006年4月01日(土) 11:12
  記事の件名:   引用付きで返信する
まず、ByRef lpszFilename As *ByteのByRefは不要です。
strはポインタですがどこも指していないのでまずいです。
また,この関数は非公開なので,9xではマルチバイト文字,NTではユニコード文字を使用するのでその区別も必要です。

興味があったので自分なりにどうにかしてみました。
それらをChangeIconDialogという関数を作り,そこに押し込めてみました。
このように使えます。
コード:
Dim Index As Long
Dim strPath As String
strPath = ChangeIconDialog(hMainWnd, Index)
MessageBox(0, strPath, Str$(Index), MB_OK)
ChangeIconDialog関数の定義です。プロジェクト内の適当なところにコピーしてください。 あるいはOleUIChangeIconという公開関数を使うという方法もあります。
ただこの関数で表示されるダイアログは見慣れないものだということが欠点です。
投稿記事 Posted: 2006年4月01日(土) 00:08
  記事の件名:  アイコン選択ダイアログについて  引用付きで返信する
いろいろと試行錯誤の末、なんとかダイアログの表示に成功したのですが、
選択したアイコンファイルのパスが取得できません。
コード:
	Dim hShell As HINSTANCE
	Dim SHChangeIconDialog As *Function(hWnd As HWND, ByRef lpszFilename As *Byte, Reserved As Long, ByRef lpIconIndex As Long) As Long
	Dim str As *Byte, index As Long, flag As Long
	Dim dwSize As Long, pwFileName As *Word
	hShell = LoadLibrary("Shell32") As HINSTANCE
	SHChangeIconDialog = GetProcAddress(hShell, 62 As *Byte) As *Function
	flag=SHChangeIconDialog(hMainWnd, str, -1, index)
	If flag=1 Then
		MessageBox(hMainWnd, MakeStr(str), Str$(index), MB_OK)
	End If
	FreeLibrary(hShell As DWord)
どこをどう直せばいいのかさっぱりです。
ヒントでもいいので、よろしくお願いします。
投稿記事 Posted: 2006年3月31日(金) 21:10

全ての表示時間は UTC+09:00 です


ページ移動:  
Powered by phpBB® Forum Software © phpBB Limited
Japanese translation principally by ocean