前のログ 次のログ

No.1250 Re:シャットダウン  投稿者:ぜんちゃん [00/7/09(日)18:55分]
>VBからシャットダウンを行うことは可能でしょうか?

いろんな方がソースを公開されてますよ。
API関数の
OpenProcessToken
LookupPrivilegeValue
AdjustTokenPrivileges
ExitWindowsEx
を使用してるので、gooやLYCOSで関数名をキーに検索すればいいのでは?

No.1249 シャットダウン  投稿者:匿名 [00/7/09(日)10:39分]

VBからシャットダウンを行うことは可能でしょうか?

また、権限等の制限がありましたら、教えて下さい。
OSはNTです。
よろしくお願いします。

No.1248 Re:Floppy diskのフォーマット  投稿者:ぜんちゃん [00/7/07(金)20:53分]

>必要なデータをFloppy diskに移すときに、必ずFloppy diskを初期化

>したいのですが、どなたか方法を教えてくれませんか?

↓ここのことですね
http://www.microsoft.com/japan/support/kb/articles/j029/4/27.htm

No.1247 Re:バイナリアクセス  投稿者:ぜんちゃん [00/7/07(金)20:47分]

>どうやって、3バイト分のデータを読み込みせれば良いか教えてください。

1バイトが3つで3バイトじゃない。。。

Dim Bydata(2) As Byte

Get #FileNo, 1, Bydata()

Bydata(0)には1バイト目
Bydata(1)には2バイト目
Bydata(2)には3バイト目

No.1246 Floppy diskのフォーマット  投稿者:とし [00/7/07(金)15:01分]

この時代にFloppy diskでデータのやり取りをするだってうちの会社。


必要なデータをFloppy diskに移すときに、必ずFloppy diskを初期化
したいのですが、どなたか方法を教えてくれませんか?

で、ここが肝心なのですがフォーマットのダイアログ等を表示せず、
コードで直接Floppy diskを初期化してしまいたいのですが....。

No.1245 バイナリアクセス  投稿者:ターボ [00/7/07(金)12:18分]

バイナリファイルをバイナリ形式で開き

3バイト分のデータを読み込ませ10進数で表示させたいのですが、
データ型のサイズには1バイト(Byte)、2バイト(Integer)、
4バイト(Long)はあっても3バイトのデータ型はなさそう
です。
どうやって、3バイト分のデータを読み込みせれば良いか教えてください。


No.1244 段落記号の表示  投稿者:あいこ [00/7/07(金)3:57分]

始めまして「あいこ」です。

テキストエディターを作るときに、テキストボックス内に普通のワープロソフトのように
段落記号を表示するにはどうしたらよいでしょうか。
VB6を使っています。

No.1243 未だわからず。!  投稿者:Astoria [00/7/06(木)23:37分]

以前にも書き込みさせていただいた内容なのですが


いくら調べても、未だに分かりません。

n88にあった「Out」のように
パラレル(プリンター)ポートからパルスを出力するようなコードはないのでしょうか?

もしくは、それに変わるようなものは、、、。

ご教授お願いします。

No.1242 VB→ExcelでExcelファイル修正について  投稿者:しま [00/7/06(木)15:44分]

Windows95でVB5.0からExcel97ファイルをデータベースとして使うプログラムを作成しています。

Excelにデータを追加・削除した場合、「外部フォーマットトが違います」と
エラーがでる、あるいは終了時にVBが強制終了してしまうことがあります。
データベース修正時に単にデータを直接書き込むのは大丈夫なのですが、行や列の追加や削除
をすると大丈夫な時とだめな時があります。何をしてはいけないのかが把握できません。
とりあえず
・コピー時は、形式を選択して値のみ
・行・列の削除はしない。
・保存する時は、上書き保存
だと上手くいくことが多いですが、確実ではないです。
原因を知りたいのですが、どなたかご存知ないですか?

No.1241 oo4oでのActiveReportの使い方・・・  投稿者:nao [00/7/06(木)8:18分]

oo4oを、利用してActiveReportを出力したいのですが、

「OLE DB」を使ったらいいのかな?とは思うのですが、
どのようにプロパティを設定したらいいのか、分かりません。
ご存知の方が、いらっしゃいましたらお願いします。
 
(もしかして、Oracleでは利用できないのでしょうか?)

No.1240 oo4oでOracleよりデータを取得するには・・・  投稿者:nao [00/7/06(木)8:11分]

今回、oo4oでOracleよりデータを取得することになったのですが、

その時の「OpenDatabase」と「CreateDynaset」の設定方法が
わかりません。
ネット上に出ているサンプルは、下記のようになっているのですが、
これでいいのでしょうか?
(更新用と検索用では違うみたいなんですが・・・)
又、他のオプションを使うのは、どういう時なのでしょうか?

ご存知の方が、いらっしゃいましたらよろしくお願いします。

Dim gbSess As OraDatabase
Dim gbDB As OraDynaset
Dim wkSQL AS Variant
Dim rsM_得意先 As Object

''接続
Set gbSess = CreateObject("OracleInProcServer.XOraSession")
Set gbDB = gbSess.OpenDatabase("nao", "system/manager", ORADB_DEFAULT)

'テーブルOpen
wkSQL = "SELECT * FROM rsM_得意先 "
Set rsM_得意先 = gbDb.CreateDynaset(wkSQL, ORADYN_DEFAULT)


No.1239 RE:re:PL/SQL    投稿者:TOM [00/7/05(水)11:02分]

タカさん、お返事ありがとうございます。


実は、PL/SQLではなく、単純にoo4oでOracleよりデータを取得
することにしたのですが、なぜか、結果が1件の時にEOFがTrueで
返ってきてしまい、値にもNULLが入っているためデータが取得できません。
SQLPlusだとちゃんと1件とれるのですが・・・

どうしてでしょうか?何か問題があるのでしょうか?(oo4o方法に)
どうぞよろしくお願いします。

No.1238 ポートから出力  投稿者:Astoria [00/7/05(水)3:29分]

初めまして、


プログラミング歴は少しあるのですがVBに関してはまるで素人です。
で、自分でも調べてみたのですが、
n88にあった「Out」のように
パラレル(プリンター)ポートからパルスを出力するようなコードはないのでしょうか?

ご教授お願いします。

No.1237 Re:最大化・最小化  投稿者:ゆう(U) [00/7/04(火)23:11分]

Resizeイベント等で、フォームの大きさから逆算すると

良いだけです。

計算でサイズを求め、Moveメソッドや位置・サイズの
プロパティで調整すると良いです。

変更するコントロールは・・・
Controlsなどを利用すると良いでしょう。

No.1236 Re:リストビュー  投稿者:ゆう(U) [00/7/04(火)23:06分]

> リストビューでテキストの編集を不可にする

> 方法はないのでしょうか?
テキストとは何処を指しているのでしょうか?

ヘルプでラベル(Label)がつくプロパティのことでしょうか?
※ヘルプで調べなおしてみてください

No.1235 リストビュー  投稿者:ひで [00/7/04(火)20:14分]

VB6を使用しています。

リストビューでテキストの編集を不可にする
方法はないのでしょうか?

No.1234 ランタイムエラー。  投稿者:かず。 [00/7/04(火)19:09分]

パワービルダーという言語で請求書等を発行するシステムを作っています。 

それで、請求書を発行するときにExcelファイルを呼んで、Excelのマクロで請求書を作成・印刷しています。 
これで、1物件1物件印刷するには問題無いのですが、一覧から複数物件(10や20)選択して連続印刷すると、
途中でランタイムエラーで落ちてします事があります。
おそらく、メモリの関係かと思うのですが、何か対策はありますでしょうか?
ご存知の方、宜しくお願いします。

No.1233 re:PL/SQL  投稿者:タカ [00/7/04(火)9:17分]

>    m_Database.ExecuteSQL "BEGIN strSqlString; END;"

→ m_Database.DbExecuteSQL "BEGIN strSqlString; END;"
では?

No.1232 最大化・最小化  投稿者:レッツ [00/7/04(火)8:19分]

フォームを最大化、または最小化したときに、フォーム内に設定してある

ボタンや、GRID等(その他もろもろ)の大きさをフォームの大きさにあわせる
にはどうしたらよいのでしょうか?
やはり、文化オリエントさんから出ているVs-Resizer等を使わないとうまく制御
出来ないものなのでしょうか???
ご存知の方がいらっしゃいましたら、お教えください。

No.1231 クラスのバージョン互換について  投稿者:ガルル [00/7/03(月)16:51分]

クラスのバージョン互換の設定で、互換なし、バージョン互換、
バイナリ互換の3つを選択できるようになっていますが、
この意味をしらべてもよく理解ができませんでした。
なのでテスト段階で、クラスのexeを作成しながら

何度かテストしているうちに、クライアント側で 「クラスまたはOLEオートメーションは・・・」のようなエラーが
発生してしまい、そのたびにレジストリから手動でいちいち削除してます。 (なぜかそうすると実行できるようになる為)クラスIDやらGUIDが何度も 作られてしまうからなんでしょうが、このクラスIDやらGUIDの意味とバージョン互換あたりの
関係がはっきりわかりません。どなたか簡単に教えてください。

No.1230 PL/SQL  投稿者:TOM [00/7/03(月)15:20分]

久しぶりに投稿させていただきます。


今回、VBよりPL/SQLを使用することになったのですが、その時の
データベースのアクセスの方法として、オラクルオブジェクトを使用しています。
(参照設定にて「Oracle InProc Server 2.3 Type Library」を取り込みます。)

Private m_Session As OraSession
Private m_Database As OraDatabase
Private rec As OraDynaset

''接続
Set m_Session = CreateObject("OracleInProcServer.XOraSession")
Set m_Database = m_Session.OpenDatabase("JIN", "system/manager", 3&)

''SQL発行
m_Database.ExecuteSQL "BEGIN strSqlString; END;"

・・・・とやるのかなぁと思っているのですが、どうやら違うようです。(Withブロック変数
が定義されていません。のエラー)

CreateDynasetなどを使うであろう事もわかるのですが、サンプルが無く困っています。
どなたか経験された方がいましたら、どうかおしえて下さい。


No.1229 Re:既存のExcel起動について  投稿者:みゃお [00/7/03(月)11:50分]

>   Set myXlsBook = myXlsAPP.Workbooks.Open("エクセルファイルのPATH")

マクロからWorkbooks.Openでブックを開くと、警告は表示されません。
これはEXCELのみで試しても同じです。

No.1228 リッチテキストの印刷方法  投稿者:まーな [00/7/02(日)21:51分]

 VB6で簡易ワープロを作ってみました。

 リッチテキストを使い,文字の入力,加工,編集等はうまくできるところまで プログラムを作成しましたが,A4用紙に印刷すると,紙面一杯に印刷されてしまいます。
 用紙の上下・左右に余白(マージン)を20〜30センチ位取り, 適当な行間を付けたいのですが,どの参考書にも,この点の設定方法について解説したものはありません。
 どなたか,ご存じの方,教えていただけないでしょうか。
 参考書を教えていただくことでも結構です。
 よろしくお願い致します。

No.1227 既存のExcel起動について  投稿者:ワンッ! [00/6/30(金)22:14分]

VBから既存のExcelを起動する手段として、以下の2つの手段で試しましたが、結果が異なりました。

この既存のExcelファイルにはマクロが含まれていて、1のパターンで起動すると、おなじみの
「このbookにはマクロが含まれています・・・」のメッセージボックスが表示されますが、
2のパターンでは、なにも聞かれずにエクセルを起動できます。この理由がなぜだかわかる方教えてください。

1 Set myXlsApp = CerateObject("Excel.application")
Set myXlsBook = GetObject("エクセルファイルのPATH")

2 Set myXlsAPP = CreateObject("Excel.Application")
Set myXlsBook = myXlsAPP.Workbooks.Open("エクセルファイルのPATH")


No.1226 Re:EXCELとVBの連携    投稿者:てる [00/6/30(金)10:02分]

みゃお さま

こんにちは、レスありがとうございます。

>Copyメソッドでできませんか?
>マクロ記録すればコードはできると思いますが。

そうなんです。エクセルのマクロ記録で、記述したものを
そのままVBに持ってきていて。。。
失敗していました。COPYは、できるけど別のエクセルファイルの特定のセルに
貼り付けることができずに悩んでました。
クラスをよく理解できてなかったみたいです。
なんとか解決しました。ありがとうございました。

No.1225 Re:キャプチャ  投稿者:ぜんちゃん [00/6/29(木)17:30分]

>はてさて、今VB6でキャプチャを作りたいのですが、

>表示されている画像をどうやって取り込めばいいのかよくわかりません。
>学校の先生に聞いたらハンドルを取得しなあかんといわれたんですが、

画像を扱う場合は、ハンドルよりもデバイスコンテキストを取得しないとダメですね。
デバイスコンテキストを取得するにもハンドルは必要なんですが・・・

>ハンドルって何?(・・;
>って感じです。
正式にはウィンドウハンドルといいます。
ウィンドウズが管理するために各画面(コントロール)に割り当てたコードのことです。
このハンドルは画面が何らかのアクションにより更新するたびに変わっていくことがあるので、 取得のタイミングを注意しないとね。。。
Formや各コントロールのプロパティにhWndプロパティというのがあるはずです。
それがウィンドウハンドルです。

>画像の取り込み方でも、それが乗ってるページでも、ヒントでも
API関数を使わないと無理でしょうね。。。
かなり難しいですよ。
APIを使用する場合は、ヘタするとOSを壊すこともあるので、要注意ですよ。
まずは、APIに慣れることですね。

Findwindow  --ウィンドウハンドル取得関連
GetWindowDC --デバイスコンテキスト取得関連
GetDeviceCaps --キャプチャ関連
このあたりのキーワードでネット上をウロウロしてみてください。

No.1224 セットアップ  投稿者:匿名 [00/6/29(木)16:49分]

初めてセットアップディスクを作ったのですが

パッケージレポートで下記の指示が出ました。

インストール パッケージ内に mdac_typ.exe が含まれています。
このパッケージを Windows 95 または98 上にインストールする場合は、DCOM98 が必要になります。

Win98でインストールしたいのですが、こんなメッセージがでてどうしたらいいのか
わかりません。
必要ということは、プログラムに何かしないといけないのですか?

No.1223 ウィンドウハンドル  投稿者:匿名 [00/6/29(木)16:35分]

初歩的なことで申し訳ありませんが、

ウィンドウハンドルとは何なのか教えて下さい。

No.1222 キャプチャ(><;  投稿者:十六夜 [00/6/29(木)12:45分] http://www.biwa.ne.jp/~izayoi

初めまして、お邪魔しています。


はてさて、今VB6でキャプチャを作りたいのですが、
表示されている画像をどうやって取り込めばいいのかよくわかりません。
学校の先生に聞いたらハンドルを取得しなあかんといわれたんですが、
ハンドルって何?(・・;
って感じです。
画像の取り込み方でも、それが乗ってるページでも、ヒントでも
何でもいいので教えて欲しいです(><;
よろしくお願いしますm(_ _;)m

No.1221 Re:ファイル名をつけて保存について  投稿者:みゃお [00/6/29(木)10:04分]

GetSaveAsFileNameメソッドで得たファイル名を変数myFileNameに入れたとしたら

ActiveWorkbook.Saveas myFileName
これだけ。
面倒だったらGetSaveAsFileNameをやめてDialogs(xlDialogSaveAs)を使えば保存も勝手にやってくれます。
いろいろ手を加えたいときにはGetSaveAsFileNameの方がいいですが。

No.1220 Re:EXCELとVBの連携  投稿者:みゃお [00/6/29(木)9:58分]

>VBからEXCELのセルをコピーするには、どうしたらいいんでしょう?

Copyメソッドでできませんか?
マクロ記録すればコードはできると思いますが。

No.1219 グリッドでチェックボックス  投稿者:mask277 [00/6/28(水)22:53分]

VBに付いてる、FlexbleGrid や DataGrid のセルでチェックボックスやコンボボックスを使いたいのですが、

可能でしょうか? 市販のツールを買わないとダメなのでしょうか?


No.1218 outlookアドレス帳について  投稿者:JetDogg [00/6/28(水)12:24分]

Outlookのアドレス帳の内容を表示させたいのですが、

Helpでは、したのような例が載っていたのですが・・・。下の←の部分でエラーになってしまいます。
どなたかお願いいたします。

Set myOlApp = CreateObject("Outlook.Application")
Set myNameSpace = myOlApp.GetNameSpace("MAPI")
Set myAddressList = myNameSpace.AddressLists("Personal Address Book")'←ここでエラーになる
Set myAddressEntries = myAddressList.AddressEntries


No.1217 RE:Re^4:リストボックスで右クリック  投稿者:今回匿名 [00/6/27(火)15:53分]

> これでは複数選択ができないです。(T_T)

> 何か方法があるのでしょうか。

複数選択の場合は、LB_SETCURSEL から LB_SETSEL メッセージに変更して
みて下さい。wParam, lParamはMSDNを見て下さい。

No.1216 SMTPサーバー名の取得方法  投稿者:DOI [00/6/27(火)11:29分]

メール送信のプログラムを

作りたいのですか、SMTPサーバー名の取得方法をどなたかご存知ないですか?
参考になるページでもかまいません。
教えて下さいませ。

No.1215 追伸  投稿者:LINE [00/6/27(火)10:55分]

下の件で,FileListBoxでも

ListBoxでも0−なしでないと
だめでした。

No.1214 Re^4:リストボックスで右クリック  投稿者:LINE [00/6/27(火)10:53分]

こんにちは、今回匿名さん。LINEです。


私のところでできなかった原因は、
MultiSelectプロパティが2−拡張に
なっていたからのようです。
0−なしだとできました。1−標準だと
できませんでした。

これでは複数選択ができないです。(T_T)
何か方法があるのでしょうか。
MSDNで探さなければ・・・

No.1213 ファイル名をつけて保存について  投稿者:ゆうき [00/6/27(火)1:40分]

はじめまして。

べたべた初心者です。
VBAでマクロをくんでいます。
保存をしたいのですが、うまくいきません。
GetSaveAsで、ダイアログボックスの表示はできるのですが、
実際に保存はされませんよね?
この後って、どんなコードにすればいいのでしょうか。
どなたか教えてください。

No.1212 EXCELとVBの連携  投稿者:てる [00/6/27(火)1:23分]

こんにちは、てるです。

逆引きヘルプにエクセルとの連携を書いていただき、ありがとうございました。
エクセルとVBを連携させようと思っていたのが
私だけでなくてよかったです。
もしかしたら、超初心者の質問かもしれませんが、
VBからEXCELのセルをコピーするには、どうしたらいいんでしょう?
代入していくという手でチャレンジしたんですが、
どうも時間がかかります。
エクセルから開いたCSVファイルを既存のエクセルファイルに一部分だけコピーしたいのです。
代入していかないとだめなんでしょうか?




No.1211 VBからストアドプロシージャ起動  投稿者:くれくれくん [00/6/26(月)19:01分]

超初心者ですが、宜しくお願いいたします。

下記のような書き方で、VBからストアドプロシージャを起動するには
どうしたらよいですか?教えてください。
VB6.0  SQL−Server7.0

MDB−>SQL−SERVERに置き換えたいのです。
更には、ODBCは使用したくないのですが
(ストアドプロシージャやビューやトリガーを使用したいのです)
'前残出力
Set Qd = Db_Zaimu1.QueryDefs("Q_現金出納帳前残")
Qd![抽出年月] = cobNum(1) '現金出納帳前残入力
Set RS = Qd.OpenRecordset()
If RS.RecordCount = 0 Then
Call ExclMsg_GLBProc(EXCLMSG_02) '該当データなし
Exit Sub
End If

Do While RS.EOF = False
RS1.AddNew
RS1!勘定科目固定コード = RS!勘定科目固定コード
RS1!科目コード = RS!勘定科目固定コード
Qd1![検索固定コード] = RS!勘定科目固定コード
Set RsQ = Qd1.OpenRecordset()
If RsQ.RecordCount <> 0 Then
RS1!科目コード = RsQ!科目コード
RS1!科目名 = RsQ!勘定科目名
End If
RsQ.Close
RS1!借方金額 = 0
RS1!貸方金額 = 0
Zandaka = RS1!残高金額
KanjoCd = RS!勘定科目固定コード
RS1.Update
Call Suito_Proc(RS1, Qd1, Qd2, Zandaka, KanjoCd) '明細データ出力
RS.MoveNext
Loop
'### クローズ ###
RS.Close
(実例がとてもうれしいです。)
何方かご教授ください。
お願いいたします。

No.1210 WithEventsでお聞きしたい事があります。  投稿者:vb5.0Man [00/6/26(月)10:47分]

WithEventsでお聞きしたい事があります。まだかなりの未熟者です。m(_ _)mよろしくお願いします。

VB5.0を使っています。

クラスのDLLをCreateObjectを使い、WithEventsも動くように設定するところなんですが、
プログラムの前の方で、このように宣言すると、
Dim WithEvents AAA As object ←エラー箇所(参照設定のときはDLLの名前、KyuyoXを入れてます。)

Private Sub Command1_Click()
Set AAA = CreateObject("KyuyoX.Kyuyo")


と、「コンパイルエラー、修正・識別子」と表示されます。

* CreateObjectを使わずに、参照設定だと動きます。
先週から調べているのですが一向に解決策が浮かびません。(>_<)
vb5.0だからなのでしょうか?


参照設定を使わずに
CreateObjectとWithEventsを使った方法を是非、勉強したいので
アドバイスお願いします。m(;_;)m

No.1209 追記  投稿者:A0k1x [00/6/25(日)22:32分]

全角は2バイト、半角は1バイトで計算されるので、全角で打ちこむと

列は2ずつ増えます。(VBはUNICODEだが、このAPIはANSI等で返すようです)

No.1208 正確な行と列の確保:解決  投稿者:A0k1x [00/6/25(日)22:10分]

調べて行くうちに、成功してしまいましたので(苦笑、

ここにフィードバックさせてください。

一応、keydownしたときなど、nowline関数を呼び出して使ってください。
私の場合は、ステータスバーの1番目に、

「 [{現在行} / {全体行} ] 行 : {現在列} 列 」

を表示します。


なお、副産物として、現在収まっている文字列の(概算?)バイト数がわかります。
セーブする前にどれくらいのサイズかわかるようにできます。

こいつがステータスバー2番目に入るようにしてあります。

開発環境;VB6ProEdit+IE5
リッチテキストで使用していますが、テキストボックスでも使えるのではないかと思います。

Option Explicit
Private Declare Function SendMessage Lib "user32" Alias _
"SendMessageA" _
(ByVal hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
lParam As Any) As Long
Private Const EM_GETLINECOUNT = &HBA
Private Const EM_LINEINDEX = &HBB
Private Const EM_LINEFROMCHAR = &HC9
Private Const WM_GETTEXTLENGTH = &HE
Private Const EM_LINELENGTH = &HC1

Public Function NowLine() ' 行を得る関数。
Dim MaxRow As Long
Dim PosRow As Long
Dim PosCol As Long
Dim W_Byte As Long
MaxRow = SendMessage(rtfBox1.hwnd, EM_GETLINECOUNT, 0&, 0&) '/行最大
PosRow = SendMessage(rtfBox1.hwnd, EM_LINEFROMCHAR, -1&, 0&) '/現在行
W_Byte = SendMessage(rtfBox1.hwnd, WM_GETTEXTLENGTH, 0&, 0&) '/箱に収まっている文字(ansi)
PosCol = SendMessage(rtfBox1.hwnd, EM_LINELENGTH, W_Byte, 0&) '/現在列


StatusBar1.Panels(1).Text = "[" & PosRow + 1 & _
" / " & MaxRow & _
"]行目 : " & _
PosCol + 1 & "列"

'/副産物
If W_Byte > 1024 Then
StatusBar1.Panels(2).Text = Format(W_Byte / 1024, "0.00kB")
Else
StatusBar1.Panels(2).Text = W_Byte & "byte"
End If

End Function

No.1207 RE:RE^3:リストボックスで右クリック  投稿者:今回匿名 [00/6/24(土)23:29分]

Dim lParam As Long

Dim Result As Long
If Button = vbRightButton Then
lParam = CLng(X \ Screen.TwipsPerPixelX) Or _
CLng(X \ Screen.TwipsPerPixelY) * &H10000
Result = SendMessage(Filelb.hwnd, LB_ITEMFROMPOINT, 0&, ByVal lParam)
If (Result \ &H10000) = 0 Then
Result = SendMessage(Filelb.hwnd, LB_SETCURSEL, Result, ByVal 0&)
PopupMenu mFile, vbPopupMenuRightButton
End If
End If
で、当方は問題無く動作します。

>(LOWORDは下位ワードを取得する関数)
このソースが判らないので省略しました。それと、上位ワードがゼロの場合の戻り値ですので
LOWORDマクロを省略してもいいと思いますので試してみて下さい。

> サブクラス化をしているところがあるのですが,それが悪いのでしょうか。
>(WM_MOVEをフックして1つのウィンドウをもう1つのウィンドウの横に表示)
これだけの情報では、私には判りません。

No.1206 RE^3:リストボックスで右クリック      投稿者:LINE [00/6/24(土)20:13分]

こんにちは、今回匿名さん。


すみません、またしてもわかりません。

If Button = vbRightButton Then
xPos = CLng(X \ Screen.TwipsPerPixelX)
yPos = CLng(Y \ Screen.TwipsPerPixelY)
lParam = (xPos) Or (yPos * &H10000)
Result = SendMessage(Filelb.hwnd, LB_ITEMFROMPOINT, &H0, lParam)
Result = SendMessage(Filelb.hwnd, LB_SETCURSEL, LOWORD(Result), &H0)
PopupMenu mFile, vbPopupMenuRightButton
End If
(LOWORDは下位ワードを取得する関数)

以上のようなコードを書いています。今回匿名さんに指摘されたところを
追加・修正し,MSDNを見てみました。しかし,ちゃんと動作しません。
サブクラス化をしているところがあるのですが,それが悪いのでしょうか。
(WM_MOVEをフックして1つのウィンドウをもう1つのウィンドウの横に表示)

なお,今まで書き忘れてましたが、(^_^;)私の環境は以下のとうりです。
Win98SE(4.10.2222 A) + IE5 + VB6 PRO SP3 + Office 2k

よろしくお願い致します。

No.1205 自己レス  投稿者:sk2 [00/6/24(土)18:04分]

>2バイトコードの後で改行すると、現在列数が負の数になってしまいます。これを

>回避したいのですが、いい方法は無いでしょうか(涙

すいません、2バイトを含んだ時点でおかしくなります(涙
原因的に、selstartが1文字で1なので、2バイト=2にならないから、でよいのでしょうか。

No.1204 テキストボックスの総行数・現在行・現在桁の取得について  投稿者:sk2 [00/6/24(土)17:45分]

テキストボックスの総行数・現在行・現在桁の取得をみながら、やっていたんですが、

2バイトコードの後で改行すると、現在列数が負の数になってしまいます。これを
回避したいのですが、いい方法は無いでしょうか(涙

No.1203 RE:RE^2:リストボックスで右クリック    投稿者:今回匿名 [00/6/23(金)23:10分]

> おそらく第3、第4引数が間違っていると思うのですが、

推察の通りですね。MSDNで、LB_SETCURSEL, LB_ITEMFROMPOINT をキーワードに
検索すれば出てきます。例えば、LB_ITEMFROMPOINT の場合、
wParam = 0; // not used, must be zero
lParam = (LPARAM) MAKELPARAM(xPos, yPos); // coordinates of point
です。MAKELPARAMマクロをVBに直すと、lParam = (xPos) Or (yPos * &H10000)
になります。xPos, yPos の単位はピクセルですので、File1_MouseDown()のX, Y を
使う場合、
xPos = CLng(X \ Screen.TwipsPerPixelX), yPos = CLng(Y \ Screen.TwipsPerPixelY)
で、TwipsをPixelsに直す必要があります。
それから、SendMessage()の戻り値の上位ワードがゼロの場合、戻り値をIndexとして取得して
もいいと思います。
LB_SETCURSEL は、簡単です。wParamに、取得したIndexを指定すればOK。
詳細は、MSDNを参照して下さい。


No.1202 RE^2:リストボックスで右クリック  投稿者:LINE [00/6/23(金)21:28分]

こんにちは、今回匿名さん。


回答ありがとうございます。
しかし、次のコードを書いたのですが,動作しません。

Public Const LB_SETCURSEL = &H186
Public Const LB_ITEMFROMPOINT = &H1A9

Result = SendMessage(Form1.hwnd, LB_ITEMFROMPOINT, &H0, &H0)
Result = SendMessage(Form1.hwnd, LB_SETCURSEL, &H0, &H0)
PopupMenu mFile, vbPopupMenuRightButton

おそらく第3、第4引数が間違っていると思うのですが、
何を渡せばいいのかがわかりません。教えて頂けないでしょうか。

よろしくお願いします。

No.1201 訂正:リストボックスで右クリック  投稿者:今回匿名 [00/6/22(木)17:08分]

下の記事で書きこみミスがありましたので訂正します。

> 先ず、File1_MouseMove()で、
File1_MouseMove() から File1_MouseDown() に訂正です。m(_ _)m

前のログ 次のログ


VBレスキュー(花ちゃん)
Visual Basic6.0  VB6.0