1 :
デフォルトの名無しさん :
02/12/27 13:50 スレ立てるまでもない、
Win32 Application *Programmer* Interface
についての質問はこちらへどうぞ。
やさしいお兄さんたちが答えてくれるかも。
でも、質問する前に検索ぐらいしる!!
過去スレ・参考
>>2-5
2 :
デフォルトの名無しさん :02/12/27 13:50
4 :
かおりん祭 ◇VqKAORinK6 :02/12/27 14:02
∋oノハヽo∈ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ 从o゚ー゚从< 新スレおめでとうございま-す♪ = ⊂ ) \_______ = (__/"(__) トテテテ
沢村は出入り禁止だ!!
スタートメニューとかお気に入りの項目って 右クリックしたときと左クリックしたときで挙動が違うよね。 あれをやりたいんだけど TrackPopupMenuで TPM_LEFTBUTTON | TPM_RIGHTBUTTON を指定したときに 親ウィンドウにWM_COMMANDが送られてくるんだけど、 これが右クリックか左クリックか分からない。 どうしたらいい?
age
>>7 ここだけの話、奴らはメニューのフリをした独自ウィンドウなんだ。
ナイショダヨ
>>9 えっ!自分で作れってこと?
サンプルはどっかにありませんか?
11 :
デフォルトの名無しさん :02/12/28 00:10
>>7 WM_COMMANDとWM_CONTEXTMENUを処理してやれば?
>7 > メニューのフリをした独自ウィンドウ なんだが、不完全に似たことをするなら > TPM_LEFTBUTTON | TPM_RIGHTBUTTON から TPM_RIGHTBUTTON を外して かわりに WM_MENURBUTTONUP を処理する。
13 :
デフォルトの名無しさん :02/12/28 02:25
スタートメニューは隠れAPIがあるんじゃ。
タスクバーのハンドルをFindWindowで取得して MoveWindowでリサイズしようとしても出来ませんでした。 どなたかご教授いただけないでしょうか。
追伸: タスクバーのスタートボタンなどはMoveWindowsでウィンドウサイズを 変更できるんです。 なぜタスクバーだけうまくいかないんでしょうか・・・。
16 :
デフォルトの名無しさん :02/12/28 11:48
携帯からだけど ソースあげてみ ハンドル取得するところと、ウィンドウサイズ変えるところ
> 携帯からだけど わざわざ・・・
HWND hTaskbar = FindWindowEx(NULL, NULL, "Shell_TrayWnd", ""); MoveWindow(hTaskbar, x, y, cx, cy, TRUE); 携帯からとは・・・。 筋金入りの2ちゃんねらーですな。 よろしくお願いします。
んで hTaskbar の中身は確認したのか?
タスクバーのハンドルをFindWindowで取得して MoveWindowでリサイズしようとしても出来ませんでした。 タスクバーのスタートボタンなどはMoveWindowsでウィンドウサイズを 変更できるんです。 なぜタスクバーだけうまくいかないんでしょうか・・・。 どなたかご教授いただけないでしょうか。 HWND hTaskbar = FindWindowEx(NULL, NULL, "Shell_TrayWnd", ""); MoveWindow(hTaskbar, x, y, cx, cy, TRUE);
実際 MoveWindow でリサイズできないウィンドウってのは作れるわけだし ウィンドウのサイズの変更はウィンドウ側で制御できるんだから タスクバーがそのようにしているんでないの?
> 実際 MoveWindow でリサイズできないウィンドウってのは作れるわけだし それは知りませんでした。 つまり無理だということですか・・・。 もうちょっと足掻いて駄目だったら諦めます・・・。
23 :
名無し@沢村 :02/12/28 18:40
>>20 無理じゃないよ。実際windowsのタスクバーはリサイズできるわけだし…。
もっと研究してごらん?
さっき携帯から書いた筋金入り(重症の方が的確だな)だけど、出来た。 SetWindowPos(hTaskbar,NULL,100,100,500,500,SWP_NOZORDER|SWP_NOSENDCHANGING); なんでこんな事をしたいのかはしらないが
名無し@沢村は無視で。 プログラミングしたこともないのにあれこれ突っ込むヒキコモリです。
26 :
デフォルトの名無しさん :02/12/28 20:23
メニューをフローティングツールバーのように移動できるようにする方法ないですか? 一応、猫で分かる~のサイトは見たのですが、あれと違うアプローチの仕方ってないでしょうか?
>>26 C+APIでだったら地道に実装するしかないかと。
というか質問の意味を質問させて欲しい。
メニューをフローティングツールバーのように移動、というのを
もうすこし具体的に頼みます
>>24 おおおっ!!
ありがとうございます。早速試させて頂きます。
実は横長画面のノートでタスクバーを横においてるんですが
なぜかシャットダウンのたびにタスクバーの幅が短くなってしまって
対策プログラムを作ろうと思ってたんです。
>>27 メニューバーを、レバーコントロールみたいに、ドラッグしながら移動可能にしたいんですよ。
メニューバーってのは、文字だけの「ファイル(F) 編集(E)・・・」とかいうあれです。
>>29 環境は?C+APIですか?なら自分で実装するしかないです。
猫、のアプローチってどんな方法?
32 :
デフォルトの名無しさん :02/12/28 21:41
文字を表示させる関数(TextOutとか)はどれが一番使いやすいのですか?
>>31 いや~面倒だと思うよ。MFCを使えばある程度簡単に実装できるだろうと思うけれど。
俺の直感では、やはりRebarを使ってなんとかやろうと思うだろうけど、
それだと猫氏のページと同じ方法だし、もしかしたら1から作る方が楽かもしれない。
シェブロンを出さなくていい&フローティング無しならば、wtlを使う方法があるが・・・
これは激簡単だけれど、ATL(C++)のかなりの理解が必要となるから、自信があるなら紹介します。
>>32 場合によりけりです。俺は何も考えずに表示するだけでよければ迷わずMessageBoxです。
35 :
名無し@沢村 :02/12/28 22:13
>>34 俺はMessageBoxをデバッグに使ってるね。
自作のDebug関数の中に入れて、どんな型の引数でも表示できるようにオーバーロードしてるよ。
>>33 やっぱり面倒ですか。
IEとかその他のアプリでも当たり前のように使われてるので
そういうAPIがあると期待してたのですが。
ATLやWTLは、今回は使いたくないので、なんとかAPIでやってみます。
ありがとうございました。
>>36 ちなみにRebarを使う方法はIEの存在が前提になると思います。多分。
40 :
デフォルトの名無しさん :02/12/29 00:40
物理メモリのみを確保したいんですが、どうすればいいのでしょうか?
>>40 VirtualLockを使えばできます。これ以上の説明も必要?
MSDNちょっとみてきます。 できればもうちょっと説明していただけるとうれしいです。
Win98で、C:\にあるファイルとフォルダのパスを列挙する プログラムを作りたいんだけど、MSDNのFindFirstFileの説明で ルートディレクトリ内のファイルを検索するには、この関数で "C:\*" のようなファイル名を指定し、引き続き GetFileAttributes 関数を 使ってルートディレクトリ内を検索してください。 って書いてあるけど、FindFirstFile("C:\\*", &f);は FindFirstFileが失敗します。どうしたらいいの?
すまんこ、FindFirstFile("C:\\*", &f);は失敗しませんでした。
>>42 説明はいいんだけれど、解らないことを具体的に聞いてね。
解りづらい部分だと思うから、解らないところを絞ってほしい。
メモリーはnewでしか確保したことなくてnew以外のWinのメモリ確保の 仕方すらまだわかってません。 で、ちょっとさがしたらVirtualAllocを使ってVirtualLockでスワップ不可にして 物理メモリに確保でよろしいのでしょうか?
>>46 特に難しい話ではないです。ロックしたいアドレスを指定すればいいだけ。
sample:
#include <Windows.h>
#define BUF 300
int main(void){char *p=new char[BUF];
BOOL b;
b=VirtualLock(p,BUF);
if(b==0) MessageBox(0,"","失敗",0);
else VirtualUnlock(p,BUF);
delete p;return 0;}
ここで例えば
b=VirtualLock(p,BUF*1000000);
とやると当然失敗する。
GetLastErrorはその時
1453"クォータが不足しているため、要求されたサービスを完了できません。"
になる。
>>47 丁寧にサンプルまでつけていただきどうもです。
ここまでしていただければよくわかります。
フリーな物理メモリは取れるようですから、
それを見た上で適量を確保すればいいっぽいですね。
OS入れなおしたばっかなんで今はできないですが、晩にでもやって報告に来ます。
ファイル解析で時間かかるんで、物理メモリのみの確保だとかなり速くなるんで楽しみです。
CDの挿入を検出し, かつautorunの実行の可否をプログラムから制御するには どうしたらよいのでしょうか。 何かメッセージが飛んでくるとかいうのをどこかで読んだ気がするんですが。
>>49 俺が知っているのはレジストリのNoDriveTypeAutoRunだけだが…
そんなメッセージがあるのかな?
>>49 捕まえるとしたら
WM_DEVICECHANGE
DBT_DEVICEARRIVAL
あたりかな?
IQueryCancelAutoPlayで制御できるみたいです。XP限定ですが。
ReBarコントロールで、XPライクなLUNAインターフェースを実現するには、どうすればいいですか? 自分で勉強をしようと思いますので、マイクロソフトのMSDN内に、LUNAインターフェースに関する技術文書はありますか?
検索すればいいじゃん。
>>54 そうか・・・。
あまり詳しい人はいないのか。
59 :
デフォルトの名無しさん :02/12/29 18:05
SetStretchBltModeのHALHTONEの原理はどうなっているの? 色の平均化とかSDKには書いていたけど、どんなふうに平均化しているの? ペゾルドの本でもチラッとしか書いてなかったよ。
62 :
デフォルトの名無しさん :02/12/29 18:49
>>60 いや、だからさぁ、これを使った後に、StretchBltを使って拡大縮小する場合、
ビットマップが比較的に汚くならないでしょ?
このHALFTONEってどういうことをやっているのかなって思ったわけね。
だから、SetStretchBltModeでHALFTONEを指定して、StretchBltした
場合の内部の処理を知りたいんでした。
>>62 詳しく説明してくれてthx。最初HALHTONEで検索してて意味不明だった(恥
世の中に、それに関してどんな処理があるのかすら解らないです。スマソ。
ここで解決しなければ、ゲーム制作技術板に行くと詳しい人がいるかもしれません。
>>59 ↑ペゾルドを読んだことがこいつの自慢らしい。
>>64 その程度は調べた、という風に解釈してやろうじゃないか。煽りは別板で
StretchBltで具体的にどう補間されるかってビデオカード次第だった気もするが。 いまだとテクスチャの補間と一緒にバイリニアとかトライリニアとかでやってんじゃない?
>>66 そういえば、GetDeviceCapsにRC_STRETCHBLTという項目があるしね。
今、猫さんのホームページを見ながらWin32APIの勉強をしています。
http://www.kumei.ne.jp/c_lang/ で、今困っていまして・・・。
猫さんのHPの一部を抜粋↓
「dllのバージョンは5.81以降が必要です。
IE5.0以降がインストールされていれば大丈夫です。
また、生のVC++6.0ではコンパイルできません。
SPをインストールしてもヘッダファイルやライブラリは更新されないので、マイクロソフトのページなどからプラットフォームSDKを更新する必要があります。」
そのプラットフォームSDKを探しているのですが、マイクロソフトのHP内で見つかりません。
MSDNの中とかも探しているんですが・・。
どこにプラットフォームSDKがあるかご存知の方はいませんか?
このままではプログラム開発が進まなくて困ってます。
70 :
デフォルトの名無しさん :02/12/29 21:18
Win32APIのみでフレームウィンドウを使うにはどうすればいいの? 既出だったらごめん。(というか、多分既出)
そんぐらい検索すれ
>>69 ありました。CoreSDKをダウンロードしてますが・・・
・・・これを見て、ウツになりました。
「Download size: 176.9 MB」
>>72 MSDNに付いてくるからなぁ。
MSに連絡すると、多分郵便で送って貰えるとは思うけど
意見くれた方、ありがとうございます。
>>66 の「バイリニアとかトライリニア」を参考にして考えてみます。
Sendinput関数をつかって他のアプリにキー送信をしたいのですが、いい例が見つかりませ ん。keybd_event関数は使えるのですが、マイクロソフトを閲覧するとSendinput推奨とあった ものですから。よいものがありましたらお示しください。
SendInputとはまたマイナーなAPIを。
これって、一連の入力を記録する部分は自分で作らなきゃ駄目ですよね?>どなたか詳しい人
>>76 他のアプリにキー送信をしたいだけなら、sendMessageでWM_KEYDOWN等を送ればいいのでは?
SendInputでは特定のアプリに送るのには甚だしく適していません。any questions?
>>77 マイナーなんですか? 検索してもなかなか出てこない理由が分かりました。
keybd_eventを使っていたのはALT+Ctrl+○○もできるためだったのですが、
マイクロソフトのサイトで調べているとSendinput推奨とあったものですから。
sendinputだとキー入力の割り込みが発生しない等のメリットがあるようですね。
引き続きよろしくお願いします。
> 推奨 必須ではない。
今、猫さんのホームページを見ながらWin32APIの勉強をしています。
http://www.kumei.ne.jp/c_lang/ 開発環境は、WinXP VisualC++6です。
で、話は変わりまして、rebarにメニューをつけようとしていますが、
コンパイルエラーが出ます。
↓
error C2065: 'I_IMAGENONE' : 定義されていない識別子です。
error C2065: 'BTNS_AUTOSIZE' : 定義されていない識別子です。
この問題は猫さんのHPによると、プラットフォームSDKをインストールすれば、解決すると書いてあるのですが、インストールしてもコンパイルエラーがでます。
やはり、VisualC++6では限界があるのでしょうか?VisualC#を買ったほうがいいのでしょうか?
commctrl.h 参照 #if (_WIN32_IE >= 0x0400) #define TBSTYLE_AUTOSIZE 0x0010 ... #if (_WIN32_IE >= 0x0500) #define BTNS_AUTOSIZE TBSTYLE_AUTOSIZE ... #if (_WIN32_IE >= 0x0501) #define I_IMAGENONE (-2) #endif
>>81 なるほど。私のVisualC++6に入っているcommctrl.hには、その2つ「BTNS_AUTOSIZE・I_IMAGENONE 」がないですね。
新しいcommctrl.hを入れないと駄目と言うことですね。
探してみます。
(てか、猫さんのHPの言うとおり、SDKをインストールしたんだけどなぁ・・・)
>>82 C++.NETと言う商品があったのですね。
てか、C/C++/C#が同梱されているかと思って。
>>84 Comctl32.dllが5.81以降なら
#define BTNS_AUTOSIZE 0x0010
#define I_IMAGENONE (-2)
を自分で定義する。
ソースの頭の方にでも書いておく。
新しいcommctrl.hが見つかりました。 E:\Microsoft SDK\include\CommCtrl.h 自分でコピペをしないと駄目なんですねw 自動的に更新してくれるのかと思ってまして・・・。 初心者ですいませんでした。
ははは(笑い) VC++6の「E:\Microsoft Visual Studio\VC98\Include」フォルダの内容を、新しい2002年バージョンに変えたところ、 見事コンパイルができました。 これで、XPライクなインターフェース開発が進みます。 ありがとうございました。みなさま。
>>87 インクルードファイルの参照先を変更and/or追加するのが、普通だと思われ。
俺はVC6でSDKをインストールしたら自動的にパスが追加されたけどな。
>>89 たぶん、VisualStudioのインストール先ディスクパスが「C:\Program Files」でないと駄目なのでは?
私は、Eドライブに重要なアプリを入れているので。
>>90 C ドライブに空き容量が少ないとか、整理のためとか、そういう理由ならわかる
けど、「重要なアプリを」 という分け方に意味はあるのか?
いずれにせよ OS があぼーんしたら再インストールする羽目になるのに。
スクリーンセーバーを以下のようにして起動しています。 SendMessage(GetDesktopWindow( ), WM_SYSCOMMAND, SC_SCREENSAVE, 0); ただ、これですと、2000/NTでパスワードによる保護にチェックされていても パスワード入力のダイアログが表示されず、そのまま操作可能な状態に戻ってしまいます。 何か他に良い方法はないでしょうか?
>>90 自動的じゃなくてスタートメニューに追加される
Register PSDK Directories with Visual Studio
を実行したらだった。たぶん。
94 :
デフォルトの名無しさん :02/12/30 21:25
_beginthread使おうと思って、libcmt.libとmsvcrt.libをリンクし #include <process.h>して、プロジェクトの設定でも マルチスレッドにしたのですが error LNK2001: 外部シンボル "_ThreadAccept" は未解決です fatal error LNK1120: 外部参照 1 が未解決です。 とエラーが出てしまいます。 何か解決法はありませんか?
>>94 プロジェクトの設定が間違っているんだろう。
DebugとRelease両方とも変えた?
>libcmt.libとmsvcrt.libをリンクし 激しく矛盾の悪寒・・・
コモンコントロールに関する情報が少なくてこまってます。 本屋にも行ったのですが、まったく関連する本がないですね。 REBARで質問ですが、たとえば、IEを開くとウィンドウの上部にREBARが当然表示されてますよね。 そのREBARというのは、はじめからその配置と言うのが固定化されてますが、 REBARの位置情報を設定するにはどうすればいいのでしょうか? 私も同じくREBARを配置してみましたが、ばらばらに配置されるだけで、順番良く配置されません。 できれば、位置情報の設定、そしてウィンドウを閉じる前にそのREBARの位置情報を保存し、再びウィンドウを開くときには、その保存された位置情報を元に、再現するアプリケーションにしたいです。 どうすればいいのでしょうか?
98 :
デフォルトの名無しさん :02/12/31 18:47
ToolTipを意図的に表示したいのですがどうやればいいのでしょうか? WindowsXPとか、タスクトレイに表示されたりするから(ハードウェアの取り外しとかのメッセージ) できるとは思うのですが解りません。
>>99 みたけどどれだかわかんないです。。
TTM_TRACKACTIVATEあたり???
101 :
デフォルトの名無しさん :02/12/31 20:27
おまえら今日ぐらいはやさしく教えてやれよ
くれよ、だろ プ
103 :
デフォルトの名無しさん :02/12/31 20:33
>>102 あなたのような人でも幸せになる権利を持っています。
来年があなたにとってよい年でありますように。
104 :
デフォルトの名無しさん :02/12/31 20:34
うふっ、なんだも聞いてね。
>>100 あのページを読んで解らないならもうどうしようもない。諦めろ
表示はされるようになりました。 Tooltipじゃなくて、個々のオブジェクトにTTM_TRACKACTIVATEを送ってしまっていました。 ところが表示されたのはよいのですが自動的に消えてくれないのです。 表示されっぱなし。 自分で消す処理を入れるしかないのでしょうか?
107 :
デフォルトの名無しさん :02/12/31 21:15
108 :
デフォルトの名無しさん :02/12/31 21:47
フレームウィンドウの大きさを クライアント領域があるサイズになるように、 設定したいんだがどうすればいい? GetClientRectはあるが、SetClientRectはない
109 :
デフォルトの名無しさん :02/12/31 21:57
自分で取得するしかない。
110 :
デフォルトの名無しさん :02/12/31 23:40
>>108 (GetWindowRect - GetClientRect) + (設定したいRect)
で逝ける。
111 :
bloom :02/12/31 23:45
AdjustWindowRectEx() じゃダメなんだっけ?
113 :
デフォルトの名無しさん :03/01/01 00:39
メニューが折り返すとだめぽ
>>113 それは110の方法を使っても駄目なんじゃないかな?
まず(GetWindowRect - GetClientRect + 設定したいRect)で設定して、
そこで改めてGetClientRectをして、それが設定したいRectと違った場合は
その差分(必ず縦方向になるはず)を改めてSetWindowRectする、といいはず。
というか110の方法は思いつかなかった。いつもGetSystemMetrics使ってたよ。thx>110
どっかのスレの過去ログでそれぞれの方法の長短について 議論してたような
>>115 GetSystemMetricsと、GetWindowRect-GetClientRectの話?
質問 rebarを作る際の、並び方を変えたいときはどうすればいいのですか? 作るrebarを一列ごとに表示させる方法。 デフォルトでは、一列に、複数のrebarが表示される形になります。
>>117 書いたソースを簡単にアプしてくれない?
簡単にUPします。 一つ目rebarの作成。 hWndRebar = CreateWindowEx( 0L, REBARCLASSNAME, NULL, WS_VISIBLE | WS_BORDER | WS_CHILD | WS_CLIPCHILDREN | WS_CLIPSIBLINGS | CCS_NODIVIDER | CCS_NOPARENTALIGN | RBS_VARHEIGHT | RBS_BANDBORDERS, 0, 0, r.right, r.bottom, hWndParent, (HMENU)ID_REBAR, hInst, NULL ); if (!hWndRebar) return 0; rbi.cbSize = sizeof(rbi); rbi.fMask = RBIM_IMAGELIST; rbi.himl = hIml; SendMessage(hWndRebar, RB_SETBARINFO, 0L, (LPARAM)&rbi);
2つ目、rebarにコンボボックスを追加 hWndCombo = CreateWindowEx ( 0, "ComboBoxEx32", TEXT(""), WS_VISIBLE | WS_CHILD | WS_TABSTOP | WS_VSCROLL | WS_CLIPCHILDREN | WS_CLIPSIBLINGS | CCS_NORESIZE | CBS_AUTOHSCROLL | CBS_DROPDOWNLIST, 0,0, MIN_COMBOCX, MIN_COMBOCY * NUM_LINKS, hWndParent, (HMENU)ID_COMBO, hInst, NULL ); SendMessage( hWndCombo, CBEM_SETIMAGELIST, 0L, (LPARAM)hIml);
3つめ、2つめ追加。 REBARBANDINFO rbBand; hWndToolBar = CreateToolbarEx(hWndParent, WS_CHILD | TBSTYLE_LIST | TBSTYLE_FLAT | TBSTYLE_TOOLTIPS | WS_CLIPCHILDREN | WS_CLIPSIBLINGS | CCS_NODIVIDER | CCS_NORESIZE | WS_VISIBLE, ID_TOOLBAR, NUM_TBBITMAPS, (HINSTANCE)hInst, IDB_TOOLBAR, (LPCTBBUTTON)&tbButtons, NUM_TBBUTTONS, BMP_CX,BMP_CY, BMP_CX,BMP_CY, sizeof(TBBUTTON)); rbBand.cbSize = sizeof(REBARBANDINFO); rbBand.fMask = RBBIM_CHILD | RBBIM_CHILDSIZE | RBBIM_STYLE | RBBIM_ID ; rbBand.fStyle = RBBS_NOVERT | RBBS_CHILDEDGE; rbBand.hwndChild = hWndToolBar; rbBand.wID = ID_TOOLBAR; rbBand.cxMinChild = MIN_TBCX; rbBand.cyMinChild = MIN_CY; SendMessage(hWndRebar, RB_INSERTBAND, (UINT) -1, (LPARAM) (LPREBARBANDINFO) &rbBand);
わからないなー。 たとえば、rebarに3つのツールバーを登録したとして、 その表示を、ウィンドウの上部に上から順番良く、「3列」で表示させたいだけなのに。 今のままでは、一列に、3つのツールバーが重なる形で表示される。
>>122 1. レバーコントロールを作成。
2. ツールバーの親をレバーコントロールにして作成。
3. REBARBANDINFO構造体のfStyleに
RBBS_BREAKを指定してRB_INSERTBANDを送る。
4. 2-3を繰り返す。
>>123 ありがとうございます!!!
みごと、3列で表示できました。
「RBBS_BREAK 0x00000001 改行」って、ツールバーのエリア自体を「改行」すると言うことだったんですね・・・。
・・・・。
助かりました。すいませんでした。初歩的な質問で・・・・。
タスクバーみたいなウィンドウを作成・表示して 他のウィンドウの最大化領域サイズ (SystemParametersInfo(SPI_GETWORKAREA・・・)を 設定したいんですが、どんな方法があるでしょうか?
>>125 質問の意味が分からない。具体的には??
タスクバーのプロパティで「自動的に隠す」に チェックを入れている状態と入れていない状態では、 ウィンドウを最大化した時のウィンドウサイズが違いますよね。 あれと同じように、さらにもう1本擬似タスクバーみたいな タスクバーを作成して、最大化時のサイズを制限したいんです。 判りにくいようでしたら申し訳ありません・・・。
すいません。また質問してもいいでしょうか。 rebarにコンボボックス(combo)を追加したんですが、コンボボックスに表示される文字の大きさが12になります。 このコンボボックスに表示される文字のサイズ・種類を変更できるとおもいますが、やり方を教えていただけませんか? すいませんが、お願いします。
130 :
デフォルトの名無しさん :03/01/01 23:01
LOGFONT lf; HFONT hFont; lf.lfHeight = ... (他のメンバも初期化) hFont = CreateFontIndirect (&lf); SendMessage (hComboBox, WM_SETFONT, (WPARAM)hFont, 0);
>>131 何とかなりそうです。
ありがとうございました。
ここは、Win32APIスレだったね。
>>129 は間違い。
134 :
名無し@沢村 :03/01/01 23:26
本物はsageないから騙る奴は覚えとくように
お前がな
名前なんて飾りだよ。
138 :
名無し@沢村 :03/01/01 23:45
本物はsageないから騙る奴は覚えとくように
>>130 ありがとうございます。
その方法で、文字の大きさは変更できましたが・・・、
SendMessageで文字情報を送ったんですが、今度はコンボボックスとしての機能が働かなくなりました。
いわゆる、右端のボタンをクリックしてもコンボの内容がPOPUPされないのです。
・・・・・・、コモンコントロールって、複雑ですよね。ウツ・・・。
これじゃ、まずいですかね。 hFont = CreateFont(12, //フォント高さ 0, //文字幅 0, //テキストの角度 0, //ベースラインとx軸との角度 FW_REGULAR, //フォントの重さ(太さ) FALSE, //イタリック体 FALSE, //アンダーライン FALSE, //打ち消し線 SHIFTJIS_CHARSET, //文字セット OUT_DEFAULT_PRECIS, //出力精度 CLIP_DEFAULT_PRECIS,//クリッピング精度 DEFAULT_QUALITY, //出力品質 FIXED_PITCH | FF_DONTCARE,//ピッチとファミリー "MS ゴシック");
では、みなさん、ありがとうございました。 いろいろ質問に答えてもらって。 後は自分で勉強しようと思います。 では。
142 :
デフォルトの名無しさん :03/01/02 01:04
本物はトリップも使わないし つーか使わなかったからこそ騙られまくってるんだろうが
わからないことがあるのですが、 rebarでコンボボックスを作るとき、コンボボックスの横幅が、勝手に、rebarの横幅に変わります。 例えば、rebarの横幅を800とし、comboの横幅を300として、SendMessageのRB_INSERTBANDを送った直後、comboの横幅をデバッグで調べたところ、なぜか、comboの横幅800に変わっていました。 rebarが自動的にcomboの横幅をrebarの横幅にあわせるように働いたと思われます。 自分が指定した長さにするには、どのような手続きをすればいいのでしょうか? ・rebarを作成する、横幅は800(CreateWindowExそしてSendMessageでRB_SETBARINFOを送る)。 ↓ ・comboボックスを作成する(CreateWindowEx)。 ↓ ・REBARBANDINFOで横幅の初期値を300(rbBand.cx=300)、横幅の最小値を200(rbBand.cxMinChild = 200)。 ↓ ・rebarにcomboボックスを追加(SendMessageでRB_INSERTBANDを送る。) ↓ ・直後、デバッグでcomboの横幅を調べると、なぜか、800に変わっていた。
いやー。rebarはむずかしい。 とくに、関連書物もないし、情報は基本的なことしか書いてないし。 ・・・・。 さてと、そろそろ買い物行こうっと・・・。
146 :
名無し@沢村 :03/01/02 13:07
俺はビットマップに拡張子.exeを付けて保存しなおし、プログラムとして実行させようとしたが、「これは有効なwindowsプログラムではありません」というエラーが出てしまった。 普通のビットマップをwindowsプログラムとして実行させるには最低限何を付け加えたらいいですか? 教えてくだされ~♪
147 :
デフォルトの名無しさん :03/01/02 13:11
148 :
名無し@沢村 :03/01/02 13:14
>>147 いや、ビットマップがペイントなどのプログラムを通さずに自力で画像を表示してくれないかなと思って実験したらダメだったのよ…。
108 名前:デフォルトの名無しさん :03/01/02 13:38
>>107 沢村は有名な嘘つきなので、信用しないように(笑
ヤツにプログラミングの話しても、「リアルな答え」は返ってきません。
MSX時代からコンピュータに触れてはいるようだけど、
ずっとゲーム(エロゲー含む)しかやってないので、スキルはありません。
おまえらいつになったら沢村へのレスをやめるんだ
153 :
デフォルトの名無しさん :03/01/02 20:37
おれはレスしねえよ。
154 :
デフォルトの名無しさん :03/01/02 22:16
あまり高機能ではないデバッガを作りたいんですが、 プロセスの適切な位置にBreakPointを入れたり、 ほかさまざまなデバッグ関係の動作を行うAPI郡には どのようなものがありますか?
156 :
名無し@沢村フィルタ :03/01/02 22:34
皆々様方~、あまり高機能ではないデバッガを作りたいんですが、 プロセスの適切な位置にBreakPointを入れたり、 ほかさまざまなデバッグ関係の動作を行うAPI郡には どのようなものがありますか?教えてくだされ~♪
157 :
デフォルトの名無しさん :03/01/02 22:34
>>155 沢村じゃない(怒
具体的には、CPUが今まさに(そのスレッドで)実行している・していた命令を
得たいのだが・・・
159 :
デフォルトの名無しさん :03/01/02 22:37
>>158 情報ありがとう。でもそこは読んだけれど、その項目で行うデバッグは、
基本的にクライアントプロセスが何かのメッセージを投げた場合に
それをキャッチする話しか載っていない。
能動的にメモリにBreakPointをかける等の話は載っていない
160 :
デフォルトの名無しさん :03/01/03 00:34
SDKで印刷プレビューを作るにはどうしたらいいでしょうか? ネットやVC6についていたサンプルソースなどをあさってみたのですが よく分かりませんでした。 ここのサンプルを見ろ!とかありましたらお願いします。
ようはハック死体って事か。
162 :
デフォルトの名無しさん :03/01/03 01:09
>>161 純粋にハックしたいだけなら既存のものつかったほうが早い気もするけど
俺もデバッガーがどういう風に動いてんのか知りたいから
ちょっとみて見たけどDebugBreakつかうのかな?
どうやって任意の場所に埋め込むかわかんないけど
クラックしたいのではなく(というかクラックなら普通にVisualStudio使ってできるし)
現在特定のスレッドで動いているコードをリアルタイムに表示するソフトウェアとか
面白そうだなと思い、そのための資料探しに奔走しています。
>>162 DebugBreakは、ブレークポイント例外を発生させるAPIです。
デバッグされるソフトウェアで、強制的にブレークで止めたい場合に使います。
他にも、デバッグされたくない市販ソフトなどの場合に裏技的に使用して
一切デバッグできなくする方法もあります。
なるほど。そういうことか。 俺はブレークさせたいところに WriteProcessMemory() で int 3h を 書き込む、という適当な方法で書いたことはあるけど、もっと ストレートな方法があるのかどうかはわからんや。 全命令捕まえる気なら、スレッドをシングルステップ実行モードにしてしまって EXCEPTION_SINGLE_STEP をキャッチするとか。
>>164 int3hを入れるのは実装可能ですね。スマートではないけど。
シングルステップ実行モードにするのが一番素直そうな気がします。
そちら方面から調べてみよう、ありがとう。
しかしそれにしても、ブレークポイントを設定する命令があるはずですけどね。
XP限定だがDebugBreakProcessでいつでもどこでも 強制的にブレークを発生させることができる。 他のOSだとSuspendThread→GetThreadContextでPCを取得→ WriteProcessMemoryでPCの位置にint 3を埋め込み→ ResumeThreadとか自力でやるしかない。 ただし9xではKERNEL32.DLL内のコードを実行中にこれを やっても効かなかったり以後のOSの動作が不安定になったりする。
ってWin9xではKERNEL32のコードはもともとWriteProcessMemoryで 書き換え不可だ SuspendThread→SetThreadContextでPCをDebugBreakの 先頭に移動→ResumeThreadってやった場合の話だった。
168 :
デフォルトの名無しさん :03/01/04 15:45
エディットボックスで、現在エディットボックスに表示されてるテキストの 先頭のセル位置を取得する方法ありませんか?
>>169 現在エディットボックス内に表示されていて、見える部分の
最初の文字の位置です。
EM_***系のメッセージからめれば可能 適当に探せ
フォントについて、ワシにも教えてくんろ。 厨房みたいな質問で恐縮じゃが... テキストを横書きや縦書きで斜体で表示したいんじゃが、 横書きの斜体はLOGFONTのlfItalicでいいが、縦書きでは 斜体を右肩下がりじゃなく、左肩下がりの斜体にしたい。 どこをどう いじくれば いいんじゃろうか?
回転させればいいんじゃないの
lfEscapementメンバとlfOrientationメンバを調べてみそ 9xとNTで意味が違ってたりするから気をつけて
回転って、どこをどう回転させる? 年寄りにも分かる ように教えてくんろ。 OUTLINETEXTMETRICにotmItalicAngleってのがあるが、 あれは取得だけで、設定はできないよな...何か いい方法はないもんか。
escapementとかorientationでぐぐってみろと続けようかと 思ったけど記憶力に自信がないからやめといたら174に 書かれますた
ご返答ありがたし。 あれから、テストプログラムでいろいろやってみた。 縦書き斜体ということで、@の付いたフォント、lfItalicは true、lfOrientationは2700という前提で、lfEscapementを 100単位で0~3600までやってみたが、すべて右肩下がりの 斜体だった。まあ、lfEscapementって一文字単位で回転させる だけだから、当然の結果だが。 もしかして、ワシの前提自体が間違っているのか? 念のためにWordを調べると、縦書き斜体は右肩下がりだった。 日本語の縦書き斜体は右肩下がりが一般的なのか? でも、やっぱ左肩下がりの斜体を実現したい。 どなた様か、助けると思って、具体的な数値を教えて くんなまし。
italicは使わないでescapementで回転させろって言ってんだよ 横書きだって左に傾いたイタリックなんか出せないだろ 頭膿んでるのか?
夜遅くまでご苦労さんです。 > 頭膿んでるのか? かもしれん。ここんとこ、斜体のことで頭が爆発寸前じゃ。 > italicは使わないでescapementで回転させろって言ってんだよ なるほど。でも、これって同じ形のまま回転するだけじゃな。 > 横書きだって左に傾いたイタリックなんか出せないだろ うーむ。バックスラントのことか。縦書きでも反対側に傾斜 させるのは、通常の方法じゃ、無理だってことか... DTPソフトだと、斜体の角度を指定できたりするが、やっぱ スプライン曲線データを取得して、自分で変形するのが吉って ことか。 (字幕合成ツールを作っとるんじゃが、何故に日本語字幕の 縦書き斜体はWindowsとは逆に傾斜してるのか不思議じゃ。 それともWindowsが変則的なのか?)
180 :
デフォルトの名無しさん :03/01/05 06:51
日本語フォントの標準的な「斜体」の概念は知らないけどさ、 イタリックが手書き文字を模したものとすると、日本語 フォントの縦書き斜体は Windows の標準的なイタリック とは逆方向に傾斜、つまり、右肩上がり斜体であるべき かなって気もするね。だから縦書きに限ると Windows の ほうが「変則的」かも。でもさ、漢字とアルファベットの 混在するテキストを合理的に斜体にするにするためには、 縦書きでも、この傾斜方向しか選択の余地がなかったっ てのも事実だよ。ほんじゃ、がんばって。
ラスタ単位で1ピクセルずつシフト。後に回転でどうか。
>>172 ワールド座標で平行四辺形の変形を指定するのはどうよ
HFONT hFont;
const char text[] = "縦書き逆Italic";
LOGFONT lf;
HDC hDC;
XFORM xf, xo;
xf.eM11 = 0.5f;
xf.eM12 = 1;
xf.eM21 = -1;
xf.eM22 = 0;
xf.eDx = 300;
xf.eDy = 0;
GetObject(GetStockObject(SYSTEM_FONT), sizeof lf, &lf);
lf.lfEscapement = -225;
lf.lfOrientation = 900;
hFont = CreateFontIndirect(&lf);
hDC = GetDC(hWnd); SetGraphicsMode(hDC, GM_ADVANCED); GetWorldTransform(hDC, &xo); SetWorldTransform(hDC, &xf); hFont = (HFONT)SelectObject(hDC, hFont); TextOut(hDC, 300, 200, text, lstrlen(text)); hFont = (HFONT)SelectObject(hDC, hFont); SetWorldTransform(hDC, &xo); SetGraphicsMode(hDC, GM_COMPATIBLE); ReleaseDC(hWnd, hDC); DeleteObject(hFont);
>>182 コードまで示してくれて多謝。
実は自分でスプラインを操作しても、最終的に
アンチエイリアス処理まで自前でやるはめに
なりそうで困ってたんだが、これはいいな。
テストプログラムで試してみても、XFORMを
変えると、いろんな変形が可能だな。
感謝感謝です。
185 :
デフォルトの名無しさん :03/01/06 14:41
すいません、どなたか、WIN32API.TXTの誤植の少ない物のありか、知りませんか? 今はVB6付属のを使ってるんですが、誤植でハマった…。 #微妙にスレ違いかな?
186 :
デフォルトの名無しさん :03/01/06 15:00
すいません、質問です。 MM_WOM_OPENメッセージはいつ発生するんでしょうか?
188 :
初心者・マジ質問 :03/01/07 00:21
189 :
デフォルトの名無しさん :03/01/07 00:28
>>188 それはたぶんMFCで言うところのダイアログバーみたいのを使ってると思われ。
Rebarでやるんなら、Rebarにのせるウインドウをモードレスダイアログにすれば
いいかと。
(同じバンド上のボタンをフラットにしたいとかならオーナードローしないといけないと思う)
>>188 コンボボックスをRebarの子として作って、RB_INSERTBANDをSendMessageすればいいだけ
と思うのだが。つーか、MSDNのRebarの最初のページ見た?
The MM_WOM_OPEN message is sent to a window when the given waveform-audio output device is opened.
192 :
名無し@沢村 :03/01/07 06:07
>>188 ヌヒよ、ツールバーのセパレータは幅を指定できるから
広い幅のセパレータを作ってその上にコンボボックスを
貼り付けなさい。
IEのツールバーはこの方法でないと無理。
193 :
188 初心者・マジ質問 :03/01/07 12:23
みなさん、ご返答ありがとうございます。
>>189 なるほど、rebar上に「モードレスダイアログ」として「載せている」わけですね。
家に帰ったらやってみます。
>>190 そのやり方はすでに知っています。
その説明は、「rebar上にbandを追加するやり方」ですよね。
そのやり方だと、comboboxが単独のbandとして作られてしまうだけなので意味がないです。
そうではなくて、「band上にcomboboxを追加するやり方」を知りたいのです。
>>192 ほほーう。
セパレータというのは、幅が指定できるのですか。
それは知らなかったです。
これも家に帰ってから、実際にやってみようと思います。
194 :
デフォルトの名無しさん :03/01/07 12:54
test
「優先するオーディオデバイス」ってプログラム上で触れないでしょうか 現在レジストリを書き換えることで行っていますが スマートなやり方があればお教えください
196 :
デフォルトの名無しさん :03/01/07 13:37
DVD-ROM内の全ファイルは、CreateFile() でオープン可能。 だが、いくつかは、ReadFile() するとエラーになる。 (おそらく、コンテンツ保護のたぐいだと思うので、それはOK) ただ、ReadFile()の代わりに、CreateFileMapping() と MapViewOfFile() を 使うと、エラーにならず、map できたかのように振舞ってしまう。だが、それ を鵜呑みにして、そこのメモリを読もうとすると、例外が発生し、プロセスが 爆死してしまう。 ReadFile() を使わずに CreateFileMapping() を使った場合に、事前に map 領域が確かに読めるかどうかの検査をしたいのですが、可能でしょうか? (Virtualなんとか、の類で可能なのかな?)
IsBadReadPtr または__try~__exceptで囲む
そのメモリアクセスするところをtry..catchとかで守っておけばええやん。 Win32Api的には、構造化例外が飛んできたら、NGって事で。 VC++なら、catch(...)で捕まえられたはず
IsBadReadPtr・・・なるほど。試してみます。 ただ、MapViewOfFile を MAP_READ指定で呼んで OK が返っているから、 仮想メモリとしてのアクセス属性には、READ権はあるかも。 構造化例外・・・NT系でなくても使えるんですね。 なんか、95系はダメかと勘違いしてました。 これだったら、確実そうですね。
200 :
デフォルトの名無しさん :03/01/07 15:09
>>200 IDを指定してデバイスごとに操作することはできるんですが、
優先デバイスを切り替えることができないのです
202 :
デフォルトの名無しさん :03/01/07 15:39
>>201 それはWAVE_MAPPERで開きたいってコト?
そりゃムリ。少なくともWindowsでは。
>>199 IsBadReadPtrも内部で構造化例外使ってるよ
>>193 沢村が嫌いなことに異議は全くないが
今回に限りその態度はちょっと外れてるぜ
質問に来てるんだろ?
>>201 「サウンドとマルチメディア」コントロールパネルの
代替品を作ってるのでもない限り
プログラムが勝手に優先デバイスを書き換えるなってこった
>>204 沢村はデタラメしか教えないから
回答者として居座られたむしろ迷惑だ
>>203 え?
Win32API(?)のソースって公開されてるの??
>>209 聞く耳持たない者を説得してるほどヒマじゃない
というか、沢村は、マルチで質問して、マルチに応答を 展開して、結局「解決しなかった」とかいいはなった記憶が 強烈すぎる
この沢村の思うがままのスレ展開はどうしたことだ
【沢村に反応してしまった人】 【沢村を放置、徹底無視を貫き通した人】 , ・´.......... . . ...... "" '' - ..,_ . \ │ / ./::::::::::::::::::::::::/ /:::::::::::::::ヘ::::::::::::::ヽ ./ ̄\ ∩ ∧∧ . と. ,,i::::::::::::::::::::::/ /::::::::r(::::..ン::::::::::/ . ∩ ∧ ∧∩ ─( ゚ ∀ ゚ )─ \ ( ゚∀゚ )へ <´ _;;;::::::::::::::::::::::し:::::::::::`(:::::ヘ::::::::::::\ ヽ( ゚∀゚ )/ .\_/ | /(ソ ''ヽ::::::;;;;;::::::::::::::::::::::::::::..ン:::::::;;;::-''' | 〈.. / │ \ | | ⊂;;;;;;,.:::::::.--- ー '''' ' . / /\_) / /\」 "" "" 沢村と一緒に、アクセス規制! 優良コテハンとして、表彰!
>>214 なんで名無しがコテハンとして表彰なんだよ
217 :
デフォルトの名無しさん :03/01/08 07:30
MessageBox()をデスクトップの中央でなく、自分のWindowの中央に 表示したいのですが、どうすればいいのでしょうか? MFCのAfxMessageBox()では中央にでるので、デバッガでソースを 追っかけてみたのですが親Windowをがりがり捜している?だけのようで なぜ中央にでるのか分かりませんでした。
フックを使ってるんじゃなかったっけ?
>>217 MFC のは、自前で用意した MessageBox風のウィンドウじゃないの?
>>217 HWNDが貰えないからMoveWindow()もSetWindowLong()もSendMessage()もだめ
だいいちMessageBox()から返ってきた時点でダイアログは存在していない
漏れ的にはあんなの糞
ちょっとでも別の機能が欲しければ独自のダイアログボックスをつくるのが早っしょ
WM_INITDIALOGでGetParent()とMoveWindow()ね
MessageBoxIndirect() じゃダメなのか?
>>217 というか
::MessageBox( HWND hWnd , ...
の hWnd を指定したら、ウィンドウ中央に表示されたんだけど?
>>218 表示される前にWM_CREATEとかを捕まえて動かしているのでしょうか?
フックはよく知らないのでさっぱりです。
>>219 MFCのソースを見る限り最後に::MessageBox()を呼んではいるのですが。
>>220 やはり自前ですか・・・
>>221 MSGBOXPARAMSに値を設定してやってみましたが変わりませんでした。
>>222 MFCの中で
HWND hWnd = AfxGetMainWnd()->GetSafeHwnd();// テスト
// AfxMessageBox( "やっほー", MB_OK, 0 );
::MessageBox(hWnd, "やっほー", "test",MB_OK );
//::MessageBox(NULL, "やっほー", "test",MB_OK );
とやると自分のWindowの中央に出ました。NULLだと出ませんでした。
SDKのサンプルの中にあるMessageBoxだとデスクトップ中央に出るのですが。
フックとかちょっと特殊なことをしているのでしょうか。
フックを少し調べてみます。ありがとうございました。
IP記録実験
http://qb.2ch.net/test/read.cgi/accuse/1042013605/ 1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日:03/01/08 17:13 ID:???
そんなわけで、qbサーバでIPの記録実験をはじめましたー。
27 名前:心得をよく読みましょう 投稿日:03/01/08 17:20 ID:yL/kYdMc
SETTING.TXT管轄でないということは全鯖導入を視野に、か?
38 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:22 ID:rLfxQ17l
>>27 鋭いです。
73 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:27 ID:rLfxQ17l
>ところで、IPが抜かれて何か今までと変わることってあるのでしょうか?
・今までより、サーバが重くなる。
・裁判所や警察からの照会があった場合にはIPを提出することがある。
漢ならあえて晒す。
口びるマロ
>>317-318 来ないと言うやつは又来るが、さようならと言った次のレスにもうコピペする奴は珍しい。
228 :
デフォルトの名無しさん :03/01/09 09:04
マルチバイト文字列をワイド文字列に変換するとき、 C標準関数の mbtowc を使うのと、Win32API の MultiByteToWideChar の どちらを使うのが一般的でしょう?
APIスレだからMultiByteToWideCharと答えておこう
ウワァーン ( `Д´)=○)3゚)∵
>>229 漏れも。
どうしてもmbtowc使うならsetlocaleを忘れるなよ。
>>229 >>231 ありがとー。
ところで、MultiByteToWideChar や、WideCharToMultiByte をラップした、
std::wstring mbstr_to_wstr( const std::string& source );
std::string wstr_to_mbstr( const std::wstring& source );
↑のようなヘルパ関数をつくろうと思っているんだけど、
CodePage や、フラグの設定を固定したい場合は、どの設定が一番無難ですか?
経験豊かな人、誰かご教授願います。
======2==C==H======================================================
2ちゃんねるのお勧めな話題と
ネットでの面白い出来事を配送したいと思ってます。。。
===============================読者数: 138720人 発行日:2003/1/9
年末年始ボケがそろそろ収まり始めた今日このごろのひろゆきです。
そんなわけで、年末に予告したIP記録ですが実験を開始しています。
「2ちゃんねる20030107」
こんな感じで各掲示板の最下部に日付が入ってるんですが、
20030107以降になってるところはログ記録実験中ですー。
んじゃ!
────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50 ────────────────────────────
>>232 何も考えないならとりあえず
MultiByteToWideChar(CP_ACP, 0, ...)
WideCharToMultiByte(CP_ACP, 0, ...)
でいいんじゃないの?
まずはそれからだ
VC++.NET の CRT の実装(mbtowc.c とか) を見てみました。
以下レポート
mbtowc は その内部で、MultiByteToWideChar を呼び出しています。
しかも マルチスレッド対応でした。( _MTスイッチで指定 )
問題の CodePage は、 setlocale で指定するようだけど、
"C"ロケールを設定すると、CP_ACP にセットされるみたい。
VCで作成したアプリはデフォで "C"ロケールに設定されるらしいので(未確認)、
結局 mbtowc は、↓とほぼ同じになると。
::MultiByteToWideChar( CP_ACP, MB_PRECOMPOSED | MB_ERR_INVALID_CHARS ... );
嘘言ってたらゴメンナサイ.
>>231 ありがとう。
でも、とりあえず mbtowc でもいいかなという気になりました。
つまらないね。 トリップだってさ 全然ボツ。
IPとってる板 qb : 2ch批判要望 削除議論 削除要請 削除整理 live2 : ニュース速報 tmp : ニュース極東 ちくり裏事情 政治思想 Download 厨房! 人権問題 バカニュース 薬・違法 ゴーマニズム ロビー 最悪 少年犯罪 違反の潰し方 ペット苦手 なんでもあり 学歴
普通に見れるけど・・・俺が変なのか・・
最高裁への上告は認められなくなったから、これで事実上判決確定だよ。
逆転も何もないって。
勢いで上告なんかしても一発で上告却下(門前払い)だよ。
二審も一審を支持。これに対して上告しようにも、
刑事訴訟と同様、自由に上告できるってもんでもないのです。
民事訴訟法312条 (上告の理由) 1項
「上告は、判決に憲法の解釈の誤りがあること
その他憲法の違反があることを理由とするときに、することができる。」
http://www.m-net.ne.jp/~doba/goto/hon.htm ようするに上告しても今の制度では100%無駄。
これで完全終了ってことか。
242 :
デフォルトの名無しさん :03/01/10 12:22
全然関係ない書き込みがあちこちに多発してるみたいだけど、 これって、何が原因なの?
根拠があって正しい情報だとしても 当事者が都合悪ければ誹謗中傷だわな どうなっとんだ
>>904 >壊れやすいって新聞に投書するなり
まず1に、俺はそういうことを自分が主張したいのではなく
そういう情報を集めたいのだ。もちろん自分が書くこともあるだろうけど。
新聞はリアルタイムで会話ができない。
しかも載るか載らないかもわからない。
掲示板だと数多くの人の体験談やらなにやらがたくさん集まり
使っている人のナマの声が聞ける。それを信じるか信じないかはその人しだい。
しかし、途中で誰の手が加えられたわけでもなく
また、誰かによって省かれた部分がない意見というのは貴重だ。
書き込まれた瞬間に、自由な質問ができるのも魅力だ。
そういうのが無くなってしまう、もしくは減ってしまうというのは悲しい
>>242 祭り気取りなんだろ
IP取るのは管理者の勝手だが
スレ違いのレスを垂れ流されるのは邪魔でかなわん。
246 :
OFNトースター :03/01/10 13:51
OPENFILENAMEなら俺に聞け ってほどOPENFILENAMEに詳しい人いませんか?
関係ない話してるとスレが死ぬぞ
249 :
デフォルトの名無しさん :03/01/10 14:02
250 :
OFNトースター :03/01/10 14:13
待ってました。 コンパイルして実行してほしいです。 起動時に、名前を付けて保存のダイアログが出ます。 そのままマイドキュメントに保存すると、このプログラムでは 何も保存されないけど、エディットに結果が入ります。 その結果を教えてほしいのです。
251 :
OFNトースター :03/01/10 14:14
#include <windows.h> LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); int WINAPI WinMain(HINSTANCE hInst, HINSTANCE, PSTR, int) { MSG msg; WNDCLASSEX c; c.cbSize = sizeof(WNDCLASSEX); c.style = c.cbClsExtra = c.cbWndExtra = 0; c.lpfnWndProc = WndProc; c.hInstance = hInst; c.hIcon= LoadIcon(NULL, IDI_APPLICATION); c.hCursor = LoadCursor(NULL, IDC_ARROW); c.hbrBackground= (HBRUSH)GetStockObject(WHITE_BRUSH); c.lpszMenuName = NULL; c.lpszClassName= "test"; c.hIconSm = NULL; if (!RegisterClassEx(&c)) return 1; CreateWindow( "test", "TEST",WS_OVERLAPPEDWINDOW | WS_VISIBLE, CW_USEDEFAULT, CW_USEDEFAULT, 500, 100, NULL, NULL, hInst, NULL); while(GetMessage(&msg, NULL, 0, 0)){ TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam; }
252 :
OFNトースター :03/01/10 14:15
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { OPENFILENAME ofn; TCHAR strFile[MAX_PATH] = "default"; char buf[MAX_PATH]; static HWND hEdit; static WORD w = 1234; switch (msg) {
253 :
OFNトースター :03/01/10 14:16
case WM_CREATE: hEdit = CreateWindow( "EDIT", "", WS_CHILD | WS_VISIBLE | WS_BORDER | ES_AUTOHSCROLL, 0, 0, 490, 22, hWnd, 0, ((LPCREATESTRUCT)(lParam))->hInstance, NULL); memset(&ofn, 0, sizeof(OPENFILENAME)); ofn.lStructSize = 76; ofn.hwndOwner = hWnd; ofn.lpstrFilter = "DOC\0*.doc\0HTML\0*.html\0\0"; ofn.nFilterIndex = 0; ofn.lpstrFile = strFile; ofn.nMaxFile = MAX_PATH; ofn.nFileOffset = w; ofn.Flags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT;
254 :
OFNトースター :03/01/10 14:16
GetSaveFileName(&ofn); wsprintf(buf, "strFile = %s, nFileOffset = %d", strFile, w); SetWindowText(hEdit, buf); break; case WM_DESTROY: PostQuitMessage(0); break; } return DefWindowProc(hWnd, msg, wParam, lParam); } ここまで。
255 :
OFNトースター :03/01/10 14:19
僕は、ofn.lStructSize = 76; でしか使えません。 ofn.lStructSize = 88; でofnが使える人の結果も知りたいです。
>>255 msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/WinUI/WindowsUserInterface/UserInput/CommonDialogBoxLibrary/CommonDialogBoxReference/CommonDialogBoxStructures/OPENFILENAME.asp
荒らしかと思った…
・・・・・・・それが何か?
>>235 ありゃ。確かにCP_ACPみたいだな。嘘ついてスマソ。
VC6以前ではまった気がしたんだが…。
printf("%S", L'あ');
とかできるようになったのかな??
>>255 typedef struct tagOFN {
:
#if (_WIN32_WINNT >= 0x0500)
void * pvReserved;
DWORD dwReserved;
DWORD FlagsEx;
#endif // (_WIN32_WINNT >= 0x0500)
} OPENFILENAME, *LPOPENFILENAME;
なぜ
ofn.lStructSize=sizeof(OPENFILENAME)
としないのか
262 :
デフォルトの名無しさん :03/01/10 17:21
ちょっと聞きたいんだけど、 Win32API の構造化例外を、C++ でハンドリングするとき、 try{ ::InitializeCriticalSection( &cs ); } // 構造化例外を投げる可能性のあるAPI関数 catch( ※ ){ ... } ※ の部分には何を書けばいいのか教えてください。 DWORD でいいのかな? 素直に __try ~ __except( エラータイプ ) で囲むべき?
...
うそだと思われるけど、catch( ... ){
_set_se_translator()、なんてな。
そういえば、昔、「あー、複数の例外にいちいちcatchかくの面倒やな~ よし、とりあえずcatch(...)しとこ。」とかやってたら、そのtryのなかで Access Violationが発生してたことに気づかなかったことがあったなぁ。 なんで、catchに行くのか理解できなかった覚えがあえる
BackupRead()とBackupWrite()でOwner,DACL,SACLを全部コピーできる、 Robocopy + SCopy + α みたいなミラーリングプログラムを作っているのですが、 ハマっています。 ご存じの方いたら教えてください。 SE_RESTORE_NAME特権を有効にすると、BackupWrite()で書込み権を持っていない ディレクトリにファイルを書き戻せますが、書き込み権の無いディレクトリ中に サブディレクトリを掘るにはどうしたらいいのでしょうか? どうも、ディレクトリをBackupWrite()する場合、CreateDirectory()してから BackupWrite()で属性情報だけ書き戻すしかないみたいですが、 CreateDirectory()はERROR_ACCESS_DENIEDになってしまいます。 CreateDirectory()するときだけACLを変更するのも何か違う気がするし...
>>262 _set_se_translator と、マクロを使ったほうがいいのでは…?
struct structured_exception; // Win32API構造化例外クラス
// 例外送出関数と、初期化関数
void trans_st_except( UINT e, EXCEPTION_POINTERS* pe ){
throw structured_exception( e, pe );
}
// main か WinMain のアタマで呼び出す
void init_structued_exception_hander(){ _set_se_translate( trans_st_except ); }
// マクロ expr には例外を送るような式とか関数を入れると
#define SE_TEST( expr ) \
__try{ (expr); } \
__finally{}
使用例
try{ SE_TEST( ::InitializeCriticalSection( &cs ) ) }
catch( structured_exception& se )
{
(エラー処理)
}
なんかわからんもんがすっ飛んでくるよりもいいでしょ。
赤信号、皆で渡れば怖くないってやつじゃないか。
つまらなくなるね。
ネタにマジレス北國新聞
思ってる事をそのまま言ってしまうと行為=無責任発言 ということ。 正当性がある意見なら、実社会でも言える。 内部告発なんかも、実社会でも十分可能。
がんがれ
串設立&串解禁きぼん
======2==C==H======================================================
2ちゃんねるのお勧めな話題と
ネットでの面白い出来事を配送したいと思ってます。。。
===============================読者数: 139038人 発行日:2003/1/10
なにやら、連日メルマガだしてるひろゆきです。
そんなわけで、ログ記録実験ですが、いちいちサーバ指定するのが面倒なので、
全部のサーバに入れてみました。
重くなって落ちたりしてもご愛嬌ってことで。。。
んじゃ!
────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50 ────────────────────────────
NYでログ取ってる方、いらっしゃいますか?
なんとなく分かりました。thx
ま た ま さ と か!
ひろゆきツマンネー!!
288 :ひろゆき ◆3SHRUNYAXA :03/01/08 17:56 ID:rLfxQ17l >厨房板は本当に閉鎖なのか? 初耳。
うそをうそと
600,000,036…
近藤朋(享年15) 今日午前4時前、幸田駅の線路脇の道路でキャッチボールしていた中学3年生4人組がいた。 ところが、ボールが線路に入った。 幸田駅の線路に、ボールを取りに入った、中学3年生の女子1名が、貨物列車に ばばばばばピィー― きゃ~! ブァプアあああああああー―――――――ン!!!!!!
ご愛嬌・・・ 被害の大きさに差がありそうだけども。 誹謗中傷一番垂れ流しってどこかねぇ?
さあゲームの始まりです 愚鈍な警察諸君 ボクを止めてみたまえ ボクは殺しが愉快でたまらない 人の死が見たくて見たくてしょうがない 汚い野菜共には死の制裁を 積年の大怨に流血の裁きを SHOOLL KILLER 学校殺死の酒鬼薔薇
286 :
デフォルトの名無しさん :03/01/12 16:19
トラックバーにTBM_SETPOSを毎回送りつづけてスライダーを動かしながら、 他のウィンドウにボタン操作のメッセージを送るようにしたいのですが、 この状態だと他のウィンドウへのWM_COMMANDメッセージが送られず、操作できません。 どうすればできるのでしょうか?お願いです。教えて下さい。
すいません。おかしな操作をしてフォーカスを勝手に変えてたのが原因でした。 ちゃんと操作できました。さようなら。
じゃあなぜ今回になって 俺達を見限ったのだ?
ナイスw
sports3フカーツ?
291 :
デフォルトの名無しさん :03/01/13 01:17
ウィンドウやコントロールのキャプションは SetWindowText で 変更できるけど、メニューのキャプションを変更するには どうすればいいですか? (「最近使ったファイル」のようにしたいけど、あれは毎回 メニューを作り直している?) それとアクティブでなくなると消えてしまうウィンドウ (メニューやポップアップ)をスパイで捕まえる方法があったら 教えてくらはい
>それとアクティブでなくなると消えてしまうウィンドウ >(メニューやポップアップ)をスパイで捕まえる方法があったら >教えてくらはい えっ?定数でhMenu取るの?勇者だね君は
>291 とりあえずSetMenuInfoとか書いてみる・・・
ほい hMenu=GetMenu(hWND); hMenuPlayThru=CreateMenu(); AppendMenu(hMenuPlayThru,MF_ENABLED|MF_STRING,n,sz); AppendMenu(hMenu,MF_ENABLED|MF_STRING|MF_POPUP,(UINT)hMenuPlayThru,sz);
ガーン変更でしか?作るのかとオモタユ
>>292-295 あ、ありがと~
AppendMenu と ModifyMenu でできました~
297 :
デフォルトの名無しさん :03/01/13 08:21
SPY++みたいに、実行時に任意のウィンドウの情報を得るにはどうすればいいですか?
218.145.25.77:80 218.145.25.14:80 50.51.32.202.ts.2iij.net:80 cache146.156ce.scvmaxonline.com.sg:8080 cache50.156ce.scvmaxonline.com.sg:8080 12.119.64.42:80 ce590-gdl01.terra.net.mx:80 seton03.terra.net.mx:80 218.65.110.14:80 ce590-gdl02.terra.net.mx:80
自己解決 マウスキャプチャして MapWindowPoints と WindowFromPoint でなんとかなりそうですね。 しかし今まで色々調べてたのに、質問してすぐ見つかるとは・・・。 板汚しすまそ。
∧∧ ) (´⌒(´ ⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡  ̄ ̄ (´⌒(´⌒;; ズザーーーーーッ
(^^)
302 :
デフォルトの名無しさん :03/01/13 19:43
ツリービューの新スタイルのTVS_FULLROWSELECTって VisualC++5.0じゃビルドできませんか? DLLのバージョンは5.81なので大丈夫だと思うんですが 未定義ですってエラーが出てしまいます。
303 :
デフォルトの名無しさん :03/01/13 19:44
簡単な二重起動防止を過去ログ参考にMutexで実装しようと思ってますが 二重起動を防止するときに、先に起動していたプログラムへ任意のイベントなどを SendMessageなどで送ることはできないでしょうか? 同じプログラムが起動されたら先に起動していたプログラムにある動作をさせたいのですが。 もしかして、ウインドウハンドル捕まえて、それ宛にメッセージ送るだけ?
>>303 Mutexにこだわらないなら、FindWindowで二重起動防止。
ウィンドウクラス名が重複している場合は使えんが・・・
ウィンドウクラス名に依存するのが嫌なら、名前付きイベントを使うのも良いかと
>>303 サンプルコード山のように書かれてるよ。探せ。
DHCぐらいしか知らん
>>303 ウィンドウ持つのが嫌ならスレッドメッセージというのもあるけども。
>>302 できる。
ヘッダファイルだけそろえてやればいい。
もしくはその定数を自分で定義してやってもオケ。
たしかBCC5.5.1とかには入ってるはずなので、落として差し替える!
Win32コンソールアプリでコンソールにCGを表示させることは無理ですか? いや、AAじゃなくてな。
コンソールにグラフィック表示機能があれば可能だろうけど 聞いたこと無いねえ
コンソールを直訳すれば操作卓だから UI は規定されないのだろうが、 一般にコンソールと言ったら CUI が常じゃないか?
まあ、どうしてもと言うなら GetConsoleWindow() でウィンドウハンドル取って、 あとは煮るなり焼くなり犯すなり。
313 :
デフォルトの名無しさん :03/01/14 01:46
char FindPath[256]; strcpy(FindPath, "c:\\*"); hFind=FindFirstFile(FindPath, &FData); ここで FindPath[0]=0;としても この後のFindNextFileに影響無しで良いですか?
GetConsoleWindow() Windows NT/2000/XP: Included in Windows 2000 and later. Windows 95/98/Me: Unsupported. とか書いてあるけどナー。
>>313 多分無いと思うけど、何なら試してみたら?
んなもん質問実験してる暇にもうひとつバッファ作ればいいだろ。
317 :
デフォルトの名無しさん :03/01/14 01:51
コンパネの画面でウィンドウのタイトルバーの色や選択色などを設定するけど あそこで設定したものってどうやってプログラムから取得するの? 現状としては選択色が取得したいんですが。
>>315 試した。
ちゃんと動くっぽいけど本当に大丈夫か知りたくて・・
>>317 GetSysColor()では不満か?
カーソルがメニューの外に移動したかどうかを知る方法を調べています。 メニューを表示してカーソルをメニューの外に移動させると、 アイテムが一つも選択されていない状態ができます。 このことを教えてくれるメッセージなどありますでしょうか。 御存知の方いらっしゃいましたら、どうかよろしくお願いいたします。
321 :
デフォルトの名無しさん :03/01/14 12:46
関数ImmNotifyIMEが、 WindowsXP環境だけ失敗するのですが、 何かご存知の方居りませんか?
322 :
デフォルトの名無しさん :03/01/14 18:15
Win32の勉強始めたばかりなんですが一般的な学習法ってなんでつか? Petzold本に出てるようなファンクションをかたっぱしから試してどう動くかを学ぶとか? ちなみに目標は自家製の本格的なテキストエディタ作成でつ。
・Petzoldのサンプルを少し改造してはその結果を確認 ・大学ノートを用意し,憶えたことを必ずメモする ・糞使いづらいMSDNの調べ方に慣れる 以上を繰り返せばテキストエディタは53行で書ける
324 :
デフォルトの名無しさん :03/01/14 21:52
ファイル名 名無しさん.txtが、名無し~1.txt であるとき、 名無しさん.txtを名無し~1.txtにリネームするには、どーやったらできますか? MoveFile("名無しさん.txt", "名無しさ~1.txt"); ってしても成功して、そのまんまなんですけど。
両方同じファイル名なんじゃないの。ロングとショートの。
>>325 そうなんですけど、ロングをショートにしたいんです。
>>326 意図が不明だけど一回nanasi.txtを中継すれば良いんじゃないの。
>>318 一般にWin32APIはハンドル作った時点で情報のコピーを
作るからユーザー側で用意したバッファは壊してOK
>>321 詳細なテキストサービス…でぐぐってもオフにする方法しか
出てこないな。たぶんその関係だとは思うんだが
>>327 9xだとトンネリングというOSの余計なお世話のせいで
それでもうまくいかない可能性がある
>>327 すみません。それだと、nanasi.txtが既に存在しているかも
チェックしないとならないんですね。それがめんどいのです。
TempFileでも中継することにしますか。
うーん。なんかないものか。
>>319 おお!そうだシステムカラーだ。
ググろうにもキーワードが思いうかばんかった。恥ずかしい。
エクスプローラで
>>324 と同じ事をすると成功するな。
何をしているんだ?
隠しAPIを使ってる
GetShortPathName?
>>336 得たいという話じゃなくて、設定したいという話だったと思う。
renコマンドや、moveコマンドでも出来ませんでした。 ですが、名無しさん.TXTの、 .TXTを小文字にしてやると、成功することが分かりました。 昔、Explorerでもたしか、そんな仕様があったような。。。 全部小文字だと、頭だけ大文字にされたりとか。
> 昔、Explorerでもたしか、そんな仕様があったような。。。 > 全部小文字だと、頭だけ大文字にされたりとか。 そりゃあ表示上だけの話じゃなかったっすか?
windowsx.hってみんな使ってないの? Cls_OnCreateとかそんなの。
うーん。また、問題が。。。 cFilename=名無しさん cAlternateFileName=名無し~1 であるとき、 cFileNameを、名無し~1 に、リネームできないのは、そういう仕様でしょうか?
342 :
デフォルトの名無しさん :03/01/15 13:15
#include<winnt.h> int main() { return 0; } というプログラムを実行すると、winnt.hに複数エラーが出るのですが、 他にincludeしなければいけないファイルがあるのでしょうか? Borland C++ 5.6を使っています。
343 :
デフォルトの名無しさん :03/01/15 13:22
>>342 あなたは Windows.h を持っていますか?
>>341 Windows2000SP1ではエクスプローラのリネームでもそうなるので、仕様と思ふ。
ところで誰かCSPDK使ったことある人います?
XPならSetFileShortNameで短い名前を付け替えればできそうな予感 2000以前でもNtSetInformationFileでコソーリできたりしないかな
う、SetFileShortNameはバックアップ特権が必要なのか 関係ないけど今MSDNみたら > Requirements > Server: Included in Windows Windows Server 2003 2003. になっててワラタ もう少し落ち着いて直せと
>>346 >> Server: Included in Windows Windows Server 2003 2003.
>になっててワラタ
typoでなくXMLパーサのバグ(動的にそのダブリが表示されてる)
かモナー
>>341 最悪、一旦違うファイル名にすれば...
MSDNライブラリって再配布OKなんだからMSも最新版をWeb閲覧だけでなく ダウンロード可能にしてくれればいいのに。
Suscriber Downloadでダウンロードできるよ 有料だけど
あれ?Platform SDKについてくるやつは?
353 :
デフォルトの名無しさん :03/01/15 17:20
リッチエディットコントロールにチェックボックスを表示する事って できますか?文字しか駄目なんでしょうか?
悪いことは云わんから、IEコンポーネントにしとけ。
(^^)
>>330 >>356 「名無しさん」を LFNで「名無し~1」に変える時だって、
LFNで「名無し~1」のファイルがすでにあったら失敗から、
結局存在チェックはしないといけない罠
「名無し~1」は決してLFNにならないのでは まあ言いたいことはわかるけど
つーかその場合は単にERROR_ALREADY_EXISTSで失敗するから 事前のチェックはいらないのでは
360 :
デフォルトの名無しさん :03/01/15 21:56
メッセージボックスをフックして、時限式に閉じる機能を付けたい んですが、フックの仕方がわかりません。 平たく言うと、MessageBoxで表示されたダイアログのHWNDを 取得したいんですが、上手いやり方があったら教えてください。
361 :
デフォルトの名無しさん :03/01/15 23:42
Winにはシンボリックリンクやハードリンクってないですか? ショートカットみたいなインチキなのじゃなくて。
>>360 そんなこと考えるならダイアログ作れよ・・・
>>361 2000以降にはハードリンクはあったはず。
ポップアップで画面外にウィンドウ作って そいつを親ウィンドウに指定して 時間がきたら親を消すってどうよ?
>>362 メッセージボックスって、メッセージの内容によって大きさが伸縮する
じゃないですか。あれを自動でやって欲しいという狙いがあったんです。
逆に伸縮ダイアログが簡単に作れればそっちでもいいんですけどね。
メッセージボックスと同じ動作をするダイアログの作り方でもいいです。
>>365 GetTextExtentPoint32() でメッセージのサイズ調べて、それに合わせてリサイズ
すればいいだけでは?
つーか、メッセージボックス捕まえた後に何をするおつもりで?
それぐらい読み取れませんか?
時限式のMessageBoxならMSDNにサンプルがあったはずだが・・・
369 :
デフォルトの名無しさん :03/01/16 08:29
>>363 裏技的だが、実は2000以前でもテープバックアップAPIでNTFS上にハードリンク作れたりする。
ソフトからAPI等を使用して関連付けする方法を教えて下さい。
372 :
デフォルトの名無しさん :03/01/16 10:23
フォルダを選択する、SHBrowseForFolder関数で出てくるダイアログに 「フォルダの新規作成」ボタンがついてるのをよく見かけるのですが、 なんという関数を使えばいいのでしょうか?
>>370 2000 の機能じゃなくて、NTFS の機能だからだろ。
>>367 | GetTextExtentPoint32() でメッセージのサイズ調べて、それに合わせてリサイズ
| すればいいだけでは?
に対する答えが
> それぐらい読み取れませんか?
ですか?
375 :
デフォルトの名無しさん :03/01/16 11:40
>>372 コールバックを使って、自前で作ってるんじゃないの?
>>373 POSIXサブシステムが作ったハードリンクもバックアップ/リストア
できなくちゃならないからな
>>361 シンボリックリンク相当のものとしては
フォルダにジャンクションというものが張れるけど
ファイルには張れない。
_∧_∧
/ ̄ ( ´∀`)⌒\
__ / _| | | ,,,,,,,,,,,,,
ヽヽ / / \ | | ,,,,,,,iiiiillllll!!!!!!!lllllliiiii,,,,,,,
\\| |____| .| | .,llll゙゙゙゙゙ ゙゙゙゙゙lllll,
\/ \ | | .|!!!!,,,,,,,, ,,,,,,,,,!!!!|
| ヽ_「\ | |、 | ゙゙゙゙!!!!llllliiiiiiiiiilllll!!!!゙゙゙゙ .|
| \ \――、. | | ヽ .| .゙゙゙゙゙゙゙゙゙゙ |
| / \ "-、, `| | ヽ | |
_/ / "-, "' (_ ヽ ヽ .| |
/ __ノ "'m__`\ヽ_,,,, ヽ | |
`ー― ̄ ヽ、__`/ー_,,,, ゙゙゙゙!!!!!!!lllllllliii| |
\゙゙゙゙゙゙゙!!!!!lllllllliiiii| |
\ ヽ | |
ヽ \ | |
| \.| |
`ヽ、,,_ノ| |
゙゙!!!,,,,,,,, ,,,,,,,,,!!!゙゙
゙゙゙゙!!!!llllliiiiiiiiiilllll!!!!゙゙゙゙
ブチッ!! /.// ・l|∵ ヽ\ ←
>>378-382
384 :
デフォルトの名無しさん :03/01/16 13:25
任意のようなデスクトップアクセサリを作りたいんですが、 BMPの形のウィンドウを作る方法ありませんか? 9x系なのでSetLayeredWindowAttributesは使えないし CreateDCでデスクトップのHDCを獲得して描画しようものなら死ぬし SetWindowRgnで無理矢理出来なくもないがかなり強引というか そもそも移動する時出る四角い枠からして 任意はこの方法は使ってないと思われるし 当方VC6.0、98SEです
>>360 非可視のダイアログをつくる
↓
それを親にしてMessageBox
↓
タイマーで時間経過後、ダイアログを破棄
親のダイアログが破棄されれば、MessageBoxも消える。
ただし、MessageBoxを表示する前に、ダイアログを画面中央にセンタリングしておく。
あれれ?MessageBoxを呼んだ時点で、 ダイアログプロシージャの処理は回らなくなると思うが、 どうやって、タイマーで時間経過をはかって、ダイアログを 破棄するのかナ? マルチスレッド?
すまん、俺は MFCの CDialog 派生で実装しました(;´Д`)
>>あれれ?MessageBoxを呼んだ時点で、 >>ダイアログプロシージャの処理は回らなくなると思うが、 モーダルループが回ってるので、WM_TIMER は大丈夫
タイマーメッセージで、MessageBox() のウィンドウハンドルを取得する 1)EnumThreadWindows をつかって、このスレッド内のトップレベル ウィンドウを列挙 2)コールバック関数で GetWindow でオーナーハンドルが設定した ものと一致したらそれが目的のダイアログのハンドル(テキスト一致 の方がいいかも) 以下の Delphi のコード例では、見つかったら EndDialog() で閉じる procedure TForm1.Button1Click(Sender: TObject); begin Timer1.Interval := 3000;//3秒後 Timer1.Enabled := true;//タイマスタート MessageBox(Handle,'Test desu','TEST',MB_OK or MB_ICONEXCLAMATION); end; function EnumThreadWndProc(hWindow: HWND; lData: LPARAM):BOOL; stdcall; begin result := true; if GetWindow(hWindow,GW_OWNER) = Form1.Handle then begin EndDialog(hWindow,IDCANCEL);//閉じる result := false; end; end; procedure TForm1.Timer1Timer(Sender: TObject); begin Timer1.Enabled := false;//タイマストップ EnumThreadWindows(GetCurrentThreadId,@EnumThreadWndProc,0); end;
>>384 > SetWindowRgnで無理矢理出来なくもないがかなり強引というか
9xではそのかなり強引な方法しかない
伺かもそうやってる
リージョンがメッシュ状になってない限り
CreatePolyPolygonRgnが一番高速
391 :
デフォルトの名無しさん :03/01/16 19:12
GDI でウィンドウにグラフィックを描画するアプリケーションを作っています。 CreateCompatibleBitmap でオフスクリーンバッファを作成して描画しているのですが、 ウィンドウのサイズが変更されたとき、このバッファはどうすべきなのでしょうか。 自分では、例えばウィンドウが拡大されたら新しく作り直す、とか ウィンドウが小さくなったときは放っておいて必要な部分だけ使う、とか考えたのですが… こういった処理のセオリーのようなものがありましたらご教授ください。
392 :
360 ◆FeMIy5OMp2 :03/01/16 21:00
393 :
360 ◆FeMIy5OMp2 :03/01/16 21:04
>>385-389 有難うございます。
難しそうですが、意味は判りました。
試してみます。
394 :
デフォルトの名無しさん :03/01/16 21:33
ツリービューの項目が左クリックされた場合と左ダブルクリックされたのを 知るにはどうしたら良いですか? 右クリックはWM_CONTEXTMENUを捕まえてHitTestで判定すると分かったんですけど 左クリック関係がわかりません。
>>391 作ろうとしているアプリケーションによる
例えば,エロ画像鑑賞用ビットマップブラウザなら
ウインドウを大きくすれば画像拡大ってことで
StretchBlt()かSetMapMode()のMM_ISOTROPICあたり
ドッター仕様のビットマップエディタなら
子ウインドウでクライアント作ってスクロールバーでずらすとか
ウインドウを大きくしたときにビットマップもサイズを大きくするって
ソフトを洩れは知らん
>>395 ありがとうございます。参考になりました。
いろいろ試して最適なの方法を考えてみることにします。
>390 そういえばCreatePolyPolygonRgnのことを忘れてました サンクス
>>395 画面に表示されない分までオフスクリーンに確保するのは
メモリの無駄ってことで実際のウィンドウサイズ分しか
オフスクリーンを用意しないアプリがあるんだよ。
その分リサイズの処理が重くなるわけだが
401 :
デフォルトの名無しさん :03/01/17 16:57
Windows2000の「別のユーザーとして実行」をプログラムから実行するにはどうしたら よいのでしょうか? 「伺か」のsetup.exeのようなAdminで実行させるようなプログラムを作りたいのです。
>>401 ファイル名をsetup.exeにすれば勝手にやってくれる
>>402 あ、本当だ・・・でもファイル名を変えたくはないのです。
>>403 コマンドプロンプトでrunasではなくて、ダイアログを出すにはどうすれば良いでしょうか?
ユーザーにそのまま実行を続けるかどうかをGUIで選択させたいと思っています。
>>404 RUNAS を実行したらパスを聞いてくると思うが?
>>405 いや、だからそれは404にも書いてますがコマンドプロンプトなんで、GUIでやりたいなと。
Shift+右クリックの「別のユーザーとして実行」で表示されるダイアログを出す方法が
あったら教えていただきたいのです。
んー、あれ相当のダイアログを自分で作らないとダメみたいですねぇ・・・
>>409 それで「別のユーザーとして実行」ダイアログが表示できるわけじゃないですよね?
だから自分でそれ相当のダイアログを作らなきゃならないようですね、というのが
>>408 なわけでして。
>>407 、
>>409 で提示されたAPIとrunasあたりを検索すると
http://www.codeguru.com/misc/RunUser.html のようなGUI Runasのサンプルがでてきましたが、
あのダイアログ自体を出すAPIや方法が見つからなかったので
ダイアログ自作しかないのかなぁと思っています。
ショートカットファイルのプロパティには「別のユーザーとして実行」という
チェックボックスがあって簡単に表示してくれるのに・・・ガクリ
412 :
デフォルトの名無しさん :03/01/18 11:00
タブコントロールで、タブを最後尾に追加するにはどうしたら良いですか? TabCtrl_InsertItemだと、インデックスを指定しなければなりませんが 今いくつタブがあるか分からない状態で、最後尾(右側)にタブを追加したいのです。
TabCtrl_GetItemCountで数えればいいだろ
414 :
Question :03/01/18 14:33
VC++ ver6内で「WM_THEMECHANGED」を宣言すると、 「error C2065: 'WM_THEMECHANGED' : 定義されていない識別子です。」と表示されます。 WINUSER.H内には #if(_WIN32_WINNT >= 0x0501) #define WM_THEMECHANGED 0x031A #endif /* _WIN32_WINNT >= 0x0501 */ と宣言されてますし、今開発に使用しているOSもXPです。(Ver 5.1.2600 Service Pack 1) なぜdefineされないのかわかりません。
_WIN32_WINNTマクロの値は、作成するプログラムのターゲットOSの 選択をするためのものであって、ビルド環境には依存しません。 明示的に#defineしましょう。
416 :
Question :03/01/18 14:47
>>415 WINUSER.H内の#if(_WIN32_WINNT >= 0x0501)だと、私のXPでプログラムを作成するとエラーが起こらないと思うのですが。
なぜエラーが起こるのかがわかりません。
ほかの、
#if(WINVER >= 0x0400)
#define WM_PRINT 0x0317
#define WM_PRINTCLIENT 0x0318
#endif /* WINVER >= 0x0400 */
だと、問題ないですよね。WM_PAINTはエラーなく使えるわけですから。
私のOSが「_WIN32_WINNT < 0x0501」と認識されているのでしょうか?
> 私のXPでプログラムを作成するとエラーが起こらないと思うのですが。 根本的に勘違いしてる。415を読み直せ。
418 :
Question :03/01/18 14:52
自分でdefineするしかないのですね。
419 :
デフォルトの名無しさん :03/01/18 15:38
error LNK2001: 外部シンボル "__imp__OpenThemeData@8" は未解決です error LNK2001: 外部シンボル "__imp__CloseThemeData@4" は未解決です このエラーが出た場合、どのファイルをリンクすればいいのでしょうか?
UxTheme.lib でした。解決。 失礼しました。
421 :
デフォルトの名無しさん :03/01/18 15:48
ウィンドウリージョンの設定についてお聞きします。(BCB5使用) フォームにデフォルトの領域を設定します。 HRGN default_rgn; __fastcall TForm1::TForm1(TComponent* Owner):TForm(Owner) { default_rgn=CreateRectRgn(0,0,100,100); SetWindowRgn(Handle,default_rgn,true); } 次に、あるボタンを押すと領域が広がるので、その部分を追加したいとします。 void __fastcall TForm1::Open1Click(TObject *Sender) { HRGN dest_rgn,add_rgn; add_rgn=CreateRectRgn(0,0,200,50); CombineRgn(dest_rgn,default_rgn,add_rgn,RGN_OR); SetWindowRgn(Handle,dest_rgn,true); } これでdefault_rgn+add_rgnの領域が表示されると思ったのですが、表示されません。 どのように解決したらいいでしょうか?
422 :
ひょっとこ :03/01/18 15:55
コントロールパネルで画面のプロパティー内でデザインを変更しても、自分の作ったアプリケーションのコモンコントロールの背景色が変わりません。 例えば、配色を「アイスカラー」から「ピクニック」に変更しても、コントロールの背景色がアイスカラーのままなのです。 ここでは、どのような処理をすればいいのでしょうか?
423 :
デフォルトの名無しさん :03/01/18 16:02
424 :
デフォルトの名無しさん :03/01/18 16:08
425 :
デフォルトの名無しさん :03/01/18 17:24
>>422 レバーとかツールバーの色ってことでしょ?
その色ってシステムが自動的に変えてくれるでしょ?
426 :
ひょっとこ :03/01/18 18:23
コンパネの画面内のデザインを変更しますよね。 変更したら当然「文字の大きさ・デザイン・配色」などのスタイルが変わるわけですよね。 そのスタイル情報を取り出すにはどのAPIを使えばいいのでしょうか? そのスタイル情報を自分のアプリのrebarに反映させたい。
427 :
ひょっとこ :03/01/18 18:26
コンパネ内にあるデザインを変更したら、ということです。 なぜか、自分のアプリケーションに新しく設定したデザインが反映されない。
428はどうせ偽者だからいちおうマジレスしとこう。
ここも強制IDにならないかねえ
>>421 SetWindowRgnに渡したリージョン(default_rgn)
は使いまわし不可。SetWindowRgnする前にコピーを作れ。
VB6(SP5) 対象OSはXP or Meでし。 IE(関連付けされたブラウザ)をプログラムからShellExecuteで呼び出して、 インターネット上のウェブページを表示したりする一種のマクロ言語の インタプリタもどき作ってるんですが、どうしてもそのウィンドウの「表示完了」が わからないといけないのですが、どのように表示状態を取得すればいいのか、 見当つきません。表示状態をつかみたいIEは自分で起動したウィンドウ、及びそこから派生するウィンドウです。 よろしくなのら!
432 :
名無し@沢村 :03/01/18 23:30
>>431 ヌヒよ、DWebBrowserEvents::NavigateComplete()について調べれ。
どうやってVBで使うかは知らんよ。
>>429 ウィンドウメッセージとして飛んでくるのはわかりますが。
それをrebarに反映する方法がわかりません。
ほかのコントロールは反映されますが、rebarとstatusbarだけが反映されないのです。
何か特殊な処理をしなければならないのでしょうか?
私だけかな? 「WINXP」+「VC++6」でステータスバーを表示するアプリを作り、表示した後、コンパネの画面のデザインで配色を変えても、その自作アプリのステータスバーだけが配色が変わらないのは。 なぜだろうか?
WM_CTLCOLORか何か
しかも、実験的に作成したもので、 猫さんのHPにあるソースを丸々コピーして貼り付けてビルドしただけだから、 私のソース記入間違いでもない。 おかしいな?
WMメッセージ(WM_SYSCOLORCHANGE)は来るのですが、それを反映させる方法がわかりません。 まさか、こんな問題が出るとは思わなかった。 システム側で処理してくれるものだと思いましたから。
>>432 Javaは一応書けますが、RADをインスコすんのが面倒で鬱
どうしよう・・・
>>430 煽られたので、だめかと思ってました。ありがとうございました。(表示できました。)
ただ、タスクマネージャを見てて気づいたんですが、ボタンを押すたびにメモリ使用量が増える模様。
一応↓のようにはしてみたんですが・・・何か忘れてるのかな・・・
void __fastcall TForm1::Open1Click(TObject *Sender)
{
HRGN dest_rgn,add_rgn;
add_rgn=CreateRectRgn(0,0,200,50);
dest_rgn=CreateRectRgn(0,0,0,0);
CombineRgn(dest_rgn,default_rgn,add_rgn,RGN_OR);
SetWindowRgn(Handle,dest_rgn,true);
DeleteObject(add_rgn);
DeleteObject(dest_rgn);
}
SetWindowRgnに渡したリージョンは削除しちゃだめ。 つーか少しはMSDN読め。
>>434 WM_SYSCOLORCHANGEか何かをリレーしてやる必要がある。
SetWindowDQN ってなんですか
443 :
名無し@沢村 :03/01/19 12:52
>>441 詳細なプログラム記述方法を知ってますか?
ものすごく困ってます。
ほかのコントロールの配色は変わりますが、唯一「RebarとStatusbar」だけが配色が変わらない。
私は、
WM_SYSCOLORCHANGE内でrgb=GetSysColor(COLOR_3DLIGHT );とし、COLORREFを取り出した後、
そのRebar/Statusbarに反映させようとしていますが、その方法がわかりません。
だれかコントロールオブジェクトの配色を変える方法を知っていますか?
たとえば、デフォルト(例・98SE)では「ボタン」の色は「灰色」ですよね。
これを手動で「赤」に変える方法。
445 :
デフォルトの名無しさん :03/01/19 14:46
>>444 XP でmanifest使用の場合はだめみたい。
該当コントロールだけは従来タイプにしないと厳しそう。(カスタムドローすら無視されます)
>>445 もちろん「XPビジュアルスタイル」を適用させるのでマニフェストを追加していますが・・・。
マニフェストを使用しないでアプリを作成してみましたが(新規に)、やはり同じ現象・問題が出ますね。
というより、手動でコモンコントロールにシステムカラーを描画する方法があれば自作でプログラムします。
あるはずですが、やり方がいまいちわからないですね。
「WM_SYSCOLORCHANGE」をウィンドウ(Rebar/Statusbar)に対して送っても、全くの無反応です。(涙)
オーナードローを使えばいいのでしょうかね。
私が思うに、RebarとStatusbarにシステムカラーが変わったと言うことが連絡されていないから、こういう現象が起こると思っているのですが・・・。 なぜほかのコントロール(Button/Combo/Menu/Popupなどなど・・・)に対しては送って、「RebarとStatusbar」だけ送らないのかが疑問??? ふぅ、格闘が続く・・・。
448 :
デフォルトの名無しさん :03/01/19 15:45
>>446 なんか間違えていない? *.exe.manifestを消してみると何の処理をしなくても自動的に色が変わりますが…
>>447 そういう問題ではないでしょう。新規にアプリを起動した場合でもレバーやステータスバーの色はおかしいですから。
それにボタンだって、コントロールパネルで設定した色にはならないでしょう。
>>448 うん、けしましたよ、それを。
私の環境がおかしいのか・・・。
いろいろな他者作成のアプリを立ち上げてみましたが、やはり私のアプリだけが色が変わらない。 ・・・・。
私のプログラムミスではないですね。 猫さんのHPにあるソースを完全にコピペしてビルドしたら、やはり同じ問題が出ましたね。 ・・・・。 VC++を再インストールしたほうがいいのか? それとも、SPのバージョンが古いからかな? VC++6とSP5では駄目ですかね。
452 :
デフォルトの名無しさん :03/01/19 16:02
>>450 他者作成のアプリというのはmanifestを使っていないだけでしょう。
エクスプローラだってステータスバーの色は変わりません。
rcにmanifestを入れてません?
>>452 rcからマニフェストは消してます(涙)
というか、新規にマニフェスト無しで作成しても問題が起こるのです・・・。
俺の環境上だけの問題かよ・・・。(涙)
454 :
デフォルトの名無しさん :03/01/19 17:38
>>453 レバーの握る部分(?)はポチポチ(manifest使用時)になっています?
それともただの線(manifest未使用時)になっています?
>>454 ただの線です。IE5仕様ですよ。
XP・PROで問題が起こるのは「REBARとSTATUSBAR」だけです。
嗚呼、休みが終わる・・・。問題が解決しないまま・・・。(涙)
MSDNから提供されるSDKサンプルをビルドして確かめてみたら、 やはり画面の配色を変えても「Toolbar/Statusbar」だけが変わらないですね。 どうやら仕様のようです。それか不具合か。 VC++6とXP・PROではうまくアプリケーションが作られないみたいです。 VC.NETを購入しようと思います。
457 :
デフォルトの名無しさん :03/01/19 21:21
>>456 そんなことはない。うちもXP Pro でVC6使ってます。
>>457 Rebarを作成した際、画面の配色を変えてもアプリにきちんと反映されますか?
寝よ・・・。
460 :
デフォルトの名無しさん :03/01/19 21:52
>>458 manifest無効ならば、反映されます。
ところで、アプリを再起動したときはきちんと反映されるの?
>>460 ええ、再起動したら反映されます。
ただ即反応してくれないから困ってます。
マニフェストも無効です。
というより、MSDNで配布されているサンプルを私の環境でビルドしたら、同じ問題が出ました。
私の環境が問題あるようです。
ちなみに、VC++は別のパーティションに入れています。
Cドライブ→WindowsXP OfficeXP
Eドライブ→VisualC++6 PlatformSDK
462 :
デフォルトの名無しさん :03/01/19 22:24
タスクトレイにあるハードウェアの取り外しなんですが、 これをAPIから呼び出すことってできるのでしょうか?
> タスクトレイにあるハードウェアの取り外しなんですが ねーよ。
>>444 SendMessage(hwndStatusBar, WM_SYSCOLORCHANGE, 0, 0L);
MSDNのコモンコントロールの章にもこうしろって書いてあるはずだけど
つーかWM_SYSCOLORCHANGEの説明にそのものズバリが書かれてるし。 だから少しはMSDNを読めと。
え、あるんですけど・・・
PCカードもUSB機器もIEEE1394機器も使ってなきゃないだろ
まぁ確かにそうですが・・・
今、会社のPCから書き込んでいます。 今日、会社のPC(Win2000)で、その問題アプリを立ち上げたところ、なんと・・・、Rebar自体が表示されなくなりました。 いわゆる、家のPC(WinXPPRO)ではRebarは表示されるが、会社のPC(Win2000)ではRebar自体が表示されない。 Statusbarはきちんと表示され、「画面の配色更新」にも対応しました。 やはり、私の家のPCでのビルド環境に何か問題がある可能性大ですね。 事実、MSDNから配布されているサンプルソースを、家のPCでビルドしたら、その「画面の配色更新」ができませんでした。 MSDNから配布されているソースにそのような問題があるはずは無いですからね。 今日家に帰ったら、Win2000を別パーティションにインストールしてみます。 あと、SendMessage(hwndStatusBar, WM_SYSCOLORCHANGE, 0, 0L);ですが、 昨日、Rebarに対してメッセージを投げましたところ、無反応でした。(Statusbarには投げてません) ▼ SendMessage(hRebar, WM_SYSCOLORCHANGE, 0, 0L);→無反応 あと、Rebarの各バンドに対しても投げましたが、無反応でした。
470 :
デフォルトの名無しさん :03/01/20 12:18
> MSDNから配布されているソースにそのような問題があるはずは無いですからね。 この認識は改めたほうが良い
>>469 単にお前の環境が腐ってるだけだろ
>>471 まあ自分のミスより先に疑うよりは健全な認識だな
473 :
デフォルトの名無しさん :03/01/20 19:58
現在実行中の、ほかのプロセスに読み込まれている DLLの名前と開始位置を取得するにはどのAPIを使えばいいですか? VisualStdioやWinDbgのメニューコマンドにあるModule Listの内容を 自前で取得したいのです。 メモリの内容を直接読み込むだけなら GetWindowThreadProcessId OpenProcess ReadProcessMemory でできましたが、その先にいけません。 よろしくおねがします。
>>469 >今日家に帰ったら、Win2000を別パーティションにインストールしてみます。
いままでこれをしていなかったとでも?
だったら忠告しておく
別パーティションではなく別PCにすれ
ビルドの度に電源から立ち上げを2回ずつなんて非能率かつ危険だし,
動作確認を開発環境でやっても本番環境と条件が違ったら意味がない
シリアルポート越しのデバッグ手段がせっかくあるのに勿体ない
>>471 御意
>>472 腐ってるのはお前の視野
別PC? 家に二台以上あるの? ははは。オタク。
さすがにInitCommonControlsExのミスではないですよね?
>>473 WinNT系ならPSAPI.DLL
Win95以降orWin2000以降ならTool Help
両方に対応しておくと良いと思います
>>474 あんたと同じことを言ってるつもりなんだが
何が腐ってるんだよ
478 :
デフォルトの名無しさん :03/01/20 20:33
linuxのstrace相当の動作(APIのモニタ)をするソフトを作るには、 どういったAPIを使えばいいのでしょうか? また、単なるアプリケーションで可能なのか、dll 作成が必須、または、 driver 作成が必須、などもわかりましたらお願いします。 ターゲット環境は、2K、XPですが、98,ME でも使えるとなお有難いです。
480 :
デフォルトの名無しさん :03/01/20 21:35
ファイルを作成するときに、その階層までのフォルダが無かったら フォルダも自動作成するようなAPIありませんか? CreateFileじゃフォルダは作成されませんでした。
MakeSureDirectoryPathExists
>>481 そのAPIは知ってますけど、ファイルは作成できないですよね?
>>482 CreateDirectory・・・
WriteFile・・・
って事ですか?
これって毎回CreateDirectoryするの無駄じゃないですか?
484 :
デフォルトの名無しさん :03/01/20 21:46
SAPI(Microsoft Speach API)やってる人いる? ViaVoiceやらLaLaVoiceやら、MSのSDKやら触ったのだけど いまいちよくわからない。 SAPIってそもそも各ベンダがDLLにして提供するもので、それを レジストリから調べて使うものなのか? SDK入れるとコンパネに音声のアイコンが出るけど、MSがこれらの APIをラッピングするDLLをだしてて、それを使うものなのか? あと、ActiveXもMSが透過的につかうためのCOMを作ってくれてるのか? 知ってたらおしえてください。 おながいします。
>>483 すでにディレクトリがあれば作成に失敗するんだから同じことじゃん
MakeSureDirectoryPathExistsやってからファイル作れよ。
487 :
名無し@沢村 :03/01/20 23:43
ヌヒ等には、SHCreateDirectoryEx()もあるということを教えてやろう。 動作環境には要注意だが。
>>475 アマグラマさん?
他の人たちの家にあるのは貸与マシンかも知れないよw
489 :
デフォルトの名無しさん :03/01/21 01:17
メッセージが何時来るのか、何で取るべきなのかわからないのですが、決まりや定石ってないですか? エディットボックスはキルフォーカスがいいとかそんなのです。
>>489 お前の日本が理解できないのだが?
それと、メッセージがいつ来るかなんて誰にも分からん。
今、別PCにWinXPPROとVC++6をクリーンインストールして、Rebarのついたアプリを作成したところ、「画面の配色更新」には対応できませんでしたね。 これで、はっきりしました。 明らかに、XPとVC++6とでは相性が悪いということです。 VC++.NET買ってこ。
相性で済ませてしまうあたりが不安だ
>>490 僕の日本は国旗の丸が紫色です。えへへ。
>>491 VS.NETを買うこと自体は良いのですが、とりあえずPlatformSDKアップデートを先に
496 :
名無し@沢村 :03/01/21 02:02
>>475 ヌヒにはリモートデバッガという便利なものの存在を教えてやろう。
497 :
デフォルトの名無しさん :03/01/21 09:52
「別のユーザーとして実行」ダイアログにはデフォルトでAdministratorのアカウント名と ドメイン名が入力されていますが、これらの文字列はどのように取得すればよいのでしょうか? 自分の環境(Win2000)ではデフォルトがユーザー名はAdministrator(Adminのアカウント名は変更していません) 、ドメイン名はGetComputerNameで取得できる名前(環境はワークグループLANです)に 設定されています。
>>494 PlatformSDKなら入れてあります。
入れた状態で、ビルドしても同じ現象が起きたのです。
♪なんでだろう??
とりあえず、今週末(金)までには、解決をしよう。
どこに問題点があるのか。
またまたとりあえずVC++6で踏ん張ろう。
>>498 つられ覚悟で。
なんでそこまでこだわるのがわからん。
直接マイクロソフトに家。
ただ、考えられる原因は、 ●VisualC++6内での設定がおかしい。 ということだと思う。 コモンコントロールを作る際、リンクのライブラリを入れる以外に、何かすることがあるでしょうか? うーん、コモンコントロール関連はなかなか手ごわいな・・・。 (WinSockのほうが簡単だった・・・)
>>500 インクルードファイルのほうも新しいものを参照するようにしてあるのか?
IEでも対応できていないことを無理やりやろうとすると、 逆に互換性が失われるのでは? これからMSはなにやるかわからんぞ。
>>601 しています。
というより、自分でインクルードファイルを置き換えたんですけどね(コピペで)
VisualC++6内の「include」フォルダ内を新しいもの(PlatformSDKのinclude)に変えた。
504 :
デフォルトの名無しさん :03/01/21 13:55
カード・ワーズのゲームエディターのようなTABをメニューの下に つけるしかたを教えてください。
DLできるPlatformSDKとVC++のincludeのディレクトリ構成ってちがくない? そのまま上書きはまずいんちゃう?
普通はIDEのインクルードパスの設定でPlatform SDKのほうを優先するように変えたり、 環境変数いじったりで対応するよな。 あとWINVERその他のマクロが適切に設定されていない可能性もあるか。
507 :
デフォルトの名無しさん :03/01/21 16:21
バウンダリ文字列を作るAPIなんて公開されているのでしょうか? ↓こんなの boundary="=_NextPart_000_001A_01C016CF.64AA5620" IE も Outlook も同じフォーマットなので API であるのかな?と
後ろ8byteは Uuidっぽいが。
509 :
デフォルトの名無しさん :03/01/21 17:11
マシンに一意なIDを取るAPIってありますか?
吹き出しみたいな形のツールチップを作る方法を教えてください。
513 :
デフォルトの名無しさん :03/01/21 17:58
リストビューのフォーカスの点線を実線にしたり色をつけたりしたいのですが、 どうしたらできるでしょうか。
514 :
デフォルトの名無しさん :03/01/21 18:06
>>511 できれば NIC非装備のマシンでも使用したいんですが
>>512 イメージ的には、UNIXのhostid的なものです。
コントロールパネル→システムに出てくる、ごちゃごちゃした
IDっぽいのは、それとして使えるのかな?
>>514 GetCurrentHwProfile() の HW_PROFILE_INFO.szHwProfileGuid なんかは?
>コントロールパネル→システムに出てくる、ごちゃごちゃしたID
は違法コピーが無い世の中なら使用可
>>509 初回だけCoCreateGuid()した値をレジストリにとっといて
2回目以後はそれを再使用ってのは却下か?
520 :
デフォルトの名無しさん :03/01/21 20:58
>>516 いいかもしれないですね。
>>519 hostidの代替としては、ユーザが任意に変更しにくい値がいいんですが...
>>520 任意に変更ってregeditで変更できてはまずいってことか?
522 :
デフォルトの名無しさん :03/01/21 23:25
特定のアプリケーションが送受信しているパケットデータを 横取りして閲覧と改竄をしたいのですが、 Winsockを使いこめばそのようなことはできますか? それともDDKを手に入れてガシガシガシやらないとできないですか?
はっきりとRagnarokOnlineといいなさい
>>522 改組するなら filter driver あたりを書くのが良いと思うけど>WDM詳しい人フォローしちくり
WDM 以前の環境ならカーネルレベルで TDI Hook ね。
閲覧するだけなら libpcap でも良いかもね。
一時的な hack で良いなら、通信先を hosts ファイルで 127.0.0.1 に
変更しちゃって、本来の接続先との間で proxy として動作するプログラム
書くのが簡単だと思う。
その手のネットワーク系のプログラムを書くなら、Windows 捨てて UNIX に行った 方が早いと思うぞ。 FreeBSD で作ったルータを挟んで、そこで divert (4) 噛ますとか。
BSD厨ここにも発見(・∀・)
ttttttttttttttttttttttttthx!
明日(今日か)、本屋に行き詳しく調べます。
>>523 自分と他人を重ねないでね☆
図星のようだな
530 :
デフォルトの名無しさん :03/01/22 01:47
厨です。質問していい?
531 :
名無し@沢村 :03/01/22 01:49
>>526 ヌヒよ、そういうレスのことを一般的に「的はずれ」って言うんだよ。
532 :
デフォルトの名無しさん :03/01/22 01:51
CreateCompatibleDCで作ったメモリーDCが 不要になったとき、元々あったBITMAPをメモリーDC戻さないで DeleteDCしても動くのですがやっぱり悪いですか?
>>532 Win98 や Me などで、使うたびにだんだんリソースが減っていっても
構わないなら、それでも別に良い(めったに使わないツールとか)。
534 :
デフォルトの名無しさん :03/01/22 02:00
>>527 どうした、何か BSD に恨みでもあるのか?
Win32 で IP パケットを低いレイヤーでいじろうとすると、どうしても kernel mode で
動くトコロに手を入れる必要があって難しい。開発中は、自分の書いたコードのバグ
で OS ごと落ちるしな。
divert (4) は、そのあたりの処理をユーザ層に切り出してるから開発は楽だぞ。
ま、熱くなる前にスレタイ見ろってこった
それを言ったら、標準 API だと無理、で終わりだろう。
糸口さえつかめればなんでもいいけど。 ただ、いまBSDに手をつける気力は無いので、 今回はスルーしつつ、記憶にはとどめます。
BSDなんかやるくらいならLinuxやるよ(藁
>>539 BSDにはどういったイメージをお持ちで?
543 :
デフォルトの名無しさん :03/01/22 10:31
Windowsで親プロセスの環境変数を変更する方法ってありましたっけ?
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment に環境変数書いて、 WM_SETTINGCHANGE を投げれば、 親プロセスの環境変数「も」変更できるだろう。
>>543 SetWindowsHookExでDLLを侵入させてSetEnvironmentVariable
>543 親がウインドウもってなかったら?
>>545 544?
PostThreadMessage
>>548 相手がメッセージループ回してくれなきゃ
Postしてもキューにたまるだけで意味ない。
WM_SETTINGCHANGE 投げても既に起動しているプロセスの環境変数は変わらんよ。
つーかUSER32.DLLの関数を一度も呼び出していないスレッドは そもそもキューが存在しないのでPostできない。
レスくれた人ありがと。返事送れてすんまそん。
>>544 残念それ知ってた。今回やりたいのは親プロセスだけでシステム全体じゃないんだよね。
システム全体の設定を変えるわけだから権限の問題も出てきそうだし、
それに既に起動しているプロセスが変更されるかという疑問もあったし。
でその疑問を先に答えてくれた
>>551 さんありがと。
>>545 ほう。そんな方法があるのか? でも
>>548 になんか修正するようなこと書いてあるし、
しかも
>>550 >>552 でさらに修正するようなこと書いてあるし。
えと、結局
>>545 の方法で出来るのでしょうか?
それともPostThreadMessage単独で出来るのでしょうか、
SetWindowsHookExとPostThreadMessageを組み合わせるのでしょうか。
DLLを侵入させるってのがやったこと無いからよく分からない。
どっかにサンプルないかな~。
552 のような状態では、フックも通用しないのでは?
実験用として今、猫さんのHPのソースを参考しています。
>>555 CreateMyStatus関数の(HMENU)ID_STATUSをNULLにする
> DLLを侵入させるってのがやったこと無いからよく分からない。 > どっかにサンプルないかな~。 kageのソース
559 :
デフォルトの名無しさん :03/01/23 18:17
タブコントロールで、右クリックでタブを選択できるようにするには どうしたらいいですか?
>>559 右クリックした時にその下のタブを選択させる。
562 :
デフォルトの名無しさん :03/01/23 18:48
>>560 いえ、違いますけど・・・。
>>561 カーソルの下にあるタブを判定するにはどうしたら良いですか?
TabCtrl_GetCurSelだと、右クリック時のカーソルの下にあるタブじゃなくて
選択されてるタブしか判別できないのですが・・・。
(^^)
やはり、誰も原因がわからないようだ。 私がプログラムミスでないことは確かなようだ。
>>566 ええ、だめです。
きちんと初期化はしているので、こんなおかしい不具合がでるはずはないのだが・・・。
ic.dwSize = sizeof(INITCOMMONCONTROLSEX);
ic.dwICC = ICC_COOL_CLASSES|ICC_BAR_CLASSES;
InitCommonControlsEx(&ic);
私だけの問題ではなさそうだ。
ちくしょう・・・ドットネット買うしかないのか・・・。
んー、それがXP以外では問題がでないようならmanifest.xmlかなんかで解決するかもな。 XP持ってないんでどうとも言えんが。
>>569 マニフェストはすでに確かめてあり、だめでした。
・・・わからん。。。
ほかの人で同じような不具合はないのかな?
> 私がプログラムミスでないことは確かなようだ。 割るれるな?
572 :
デフォルトの名無しさん :03/01/23 23:58
573 :
デフォルトの名無しさん :03/01/24 00:12
WinampのPlug-inはClassで成り立っているのですよね? あのように、動的にクラスを読み込んで利用するにはどうすればいいのでしょうか?
>>573 どの言語で作るつもりか知らんけど
C++なら仮想クラスを自分のプログラムで定義して、
DLLはそれの派生クラスを作成する
あとはDLL側にそのクラスのインスタンスを作成する関数を作って
LoadLibrary/GetProcAddressでその関数を呼び出す
返って来たインスタンスを通して全ての処理を行えばいい
>>576 その質問はスレ違いですが
>>576 のwrapperDLLのファイル名をwnsapi32.dllにすれば
>>572 等に既存のASPIソフトが使えるのでは?
>>567 >>555 のソースをビルドして試してみたけど確かに色が変わらないねえ。
でも自作のアプリではちゃんと色が変わった。よって
> 私がプログラムミス
であることは
> 確かなようだ。
申し訳ないが自作アプリとどこが違うのかまではわからない。
となると、あやしいのは SendMessage(hStatus, SB_SIMPLE, TRUE, 0L); のあたりでしょうか? いずれにしろ.NETでは解決しないでしょうね
>>580 自作アプリではCreateWindowEx+SB_SIMPLEの代わりに
CreateStatusWindowを使ってたんでそうしてみたが変わらなかった。
いったい何が違うんだ。まじでわからん…
>>579 早起きしました。
変わらないですよね(涙)
ステータスバーに関してはいろいろな方法で試したのですが、変わりません。
これでも駄目でした。
switch (msg) {
case WM_CREATE:
INITCOMMONCONTROLSEX sex;
sex.dwICC=ICC_BAR_CLASSES;
sex.dwSize=8;
InitCommonControlsEx(&sex);
CreateMyStatus(hWnd, hInst);
・・・・・
これはREBARでも同じ現象(配色が変わらない)が起こるので、何に問題があるのかがいまだに不明・・。
XPのバグ(というか仕様変更)だったら泣くな.…
WM_KEYDOWNでは、キーを押されたときのshiftキーの状態はわからないですよね。 キーが押されたときのshiftキーの状態を知るにはどうしたらいいんでしょうか。
>>584 WM_KEYDOWN処理中に GetKeyboardState で全仮想キーの状態を取得するとか……
586 :
デフォルトの名無しさん :03/01/24 05:20
>>585-586 それってWM_KEYDOWNを受け取ったタイミングの状態であって、
WM_KEYDOWNが発生する原因となったキーが押されたときの状態じゃないですよね。
>>587 > This function retrieves the state of the key
> when the input message was generated.
と書いてるが。でも
> The key status returned from this function
> changes as a thread reads key messages
> from its message queue.
とも書いてるなあ。どっちが本当だよおい
あー入力メッセージが生成されたときの状態を読み取るから メッセージを読み出すたびに状態が変化すると考えれば とくに矛盾しないか。 つーわけでGetKeyStateで問題ないと思うが
590 :
デフォルトの名無しさん :03/01/24 13:57
>>587 キーが押されたときのだよ。ヘルプぐらい読んでくれ。
あとトレースするとかすればわかる。
ハードウエア的な現在の状態を知る方法はまた別の方法だから。
キーボードが2つ以上接続されている環境があったとして、 どちらのキーボードのキーが押されたのか判断する方法はあるのでしょうか?
スプリットウィンドウの右上とかにバッテンで閉じるのを作りたいんですが、 簡単な方法がありましたら是非教えて下さい。お願いします。
印刷関係でちょっと不可解な現象が発生してるんです。 とあるアプリで StartDoc() とかしても印刷がはじまらないんです。 で、印刷ルーチンが二つありまして(出力形態が二種類あるので)、 片方ではちゃんと印刷開始されるのですが、もう片方はうんともすんともいいません。 これだけだと一方のルーチンの不具合じゃないか、と言われるかもしれません。 確かにそれはそうで、現在調査しているのですが、不可解なのは 関数の中で文字列処理のために char buf[256]; しているのですが、これを char buf[184]; にすると正しく印刷が開始されるのです。 これが逆ならスタックでも壊してるのかなという気にもなるのですが、 小さい方が動く、というのは聞いたことがありません。 何となくドライバ関係のDLLのアロケート関係のような気もするのですが、 どなたかこのあたりに関して情報お持ちでないでしょうか? ちなみにOSはWinME、コンパイラはVC6です。 さらにちなみにその他のOS(98、98SE、2000、XP)では 問題なく印刷が開始されます。
>>594 >char buf[184];
>にすると正しく印刷が開始されるのです。
たまたま印刷されてるだけだと思われ。"\0"とか抜けてない?
>>594 EndDocまで行わないと、印刷を始めるかどうかはドライバ次第だったような。
>>594 GetLastError()で調べれ。
ちょっと試してきました。
とりあえず buf がらみの処理は変数宣言も含めて削除してみますた。
すると。確かに印刷される。やっぱりどこかでつぶしてる?
それではと、途中に
{
char buf[256];
*buf = '\0';
DrawText(pd.hDC, buf, -1, &rc, format);
}
と入れてみますた。出なくなりました。何で???
>>595 そういうわけで文字列処理部分ではなさそうです。
>>596 あ、ちょっと説明が足りませんでしたが、どの段階で印刷が開始されるかは
よくわかってないまま書きました。まぁ印刷される場合があるということは
処理の流れ自体はあってるだろうということで。
>>597 というかエラーにならないんです。あたかも正常に終わったかのように
印刷されないんです。
何か見落としてるかもしれないので他にもヒントありましたらお願いします。
すいません。読み返してみてちょっと補足。説明が中途半端な気がしたので。 結論から言えば、 /* ↓この処理を通らないと印刷される */ if (0) { char buf[256]; *buf = '\0'; DrawText(pd.hDC, buf, -1, &rc, format); } /* ↓通ると印刷されない */ if (1) { char buf[256]; *buf = '\0'; DrawText(pd.hDC, buf, -1, &rc, format); } ということです。なんでだろーなんでだろー age させてもらっていいですか?
余裕で600ゲット
600ゲトー ∧∧ (⌒ ⊂(゚Д゚⊂⌒つ(≡ ズサー (⌒
それではと、途中に { char buf[256]; *buf = '\0'; DrawText(pd.hDC, buf, -1, &rc, format); } と入れてみますた。出なくなりました。何で??? ・・・初期化してないcharの配列をを渡してた?
さらに突き詰めてみました。先ほどの処理をさらに簡略化して if (1) { char buf[256]; *buf = '\0'; } ○。 if (1) { char buf[256]; lstrcpy(buf, "hoge"); } ×。 if (1) { char buf[256]; strcpy(buf, "hoge"); } ○。 どうやらよそ様のDLLの関数に buf のアドレスを渡すとダメなようです。 何かどこかで聞いたことあるような。。。
引っ張ってしまってスマソン。もう少しおつきあいいただければ幸いです。 さらに続けて(if は省略します) char *buf = GlobalAlloc(GPTR, 256); lstrcpy(buf, "hoge"); GlobalFree(buf); ○。 お、そゆこと? と思って元の処理に戻して、先頭で定義してた char buf[256]; を char *buf = GlobalAlloc(GPTR, 256); にしてみますた。 ダメでした。。。ショボン
605 :
デフォルトの名無しさん :03/01/24 16:38
>>604 HGLOBAL GlobalAlloc(
UINT uFlags, // 割り当ての属性
SIZE_T dwBytes // 割り当てたいバイト数
);
根本的に使い方間違ってる。
え?今って GPTR でポインタ返せないの?
返せるよ。
609 :
デフォルトの名無しさん :03/01/24 17:31
子ウィンドウとして作成したリストコントロールを 要らなくなった時点で、DestroyWindow(hList);で破棄しようとしたのですが サブクラス化したリストコントロールのプロシージャのWM_DESTROYで PostQuitMessage(0);とすると、親ウインドウも一緒に閉じてしまいます。 PostQuitMessage(0)しなくても、リストコントロールはきちんと破棄されたと 思って良いのでしょうか?
うーん、謎です。。。 メモリまわりっぽいのは確かだと思うんですけどねぇ。 LintTo() や、即値渡しの TextOut() だけにすると問題なく描画できますので。。。 他のOSではたまたま動くけど、 Meでは注意しないとダメな処理ってありましたっけ?
PostQuitMessageは最後のウィンドウとか メインウィンドウが閉じたときにだけ呼び出すものだよ なんでWM_DESTROYのデフォルト処理で自動的に 呼び出されないのか考えれ
612 :
デフォルトの名無しさん :03/01/24 18:36
>575 インスタンスを作成する関数を作って返す とありますが、どのような形で返せばいいのでしょうか?
614 :
デフォルトの名無しさん :03/01/24 19:22
変数形です。
ちょっと気付いて試してみたらどうやらOKっぽかったので それのような気がするんですが、 StartDoc() に渡す DOCINFO 構造体って やっぱ不要なメンバはゼロクリアしとかないとダメです? マニュアルにはダメとは書いてないんですけど、そんな感じですよね。。。 巷のサンプルみても、初期化せずに必要なメンバ(lpszDocNameとか)設定してる だけのものが多いんですが違うのかな? これだけ↓でとりあえずは動くようになったのですが。 di.cbSize = sizeof(di); ZeroMemory(&di, sizeof(di)); // この行を追加 di.lpszDocName = lpszDocName; di.lpszOutput = NULL;
>>615 しむらcbSize--!書き間違えかも知れんけど。
>>615 静的変数やGlobalAlloc(GPTRの場合は基本的に0初期化されているから必要ない
多少なりともプログラムをやっているならどういう場合に初期化が必要かは推測できるはず
メンバが設定されているかいないかをどうやってシステム側が判別するの?
>>616 へ?何か間違ってる?気付いてないかも。
>>617 もう少し言い訳さしてください。
実は。。。昔ながらのやり方でやってたので
DOCINFO のメンバが増えてるの知らなかったんです。。。
印刷するプログラム書いたの久しぶりだったもので。。。
大変お騒がせ致しました。
>>619 ごめん、まだわかってない。
あれ?
DOCINFO di;
di.cbSize = sizeof(di);
で間違ってる?そこじゃない?
その後ZeroMemoryしている
>>620 いや順番がこうじゃないとだめじゃん?
ZeroMemory(&di, sizeof(di)); // この行を追加
di.cbSize = sizeof(di);
di.lpszDocName = lpszDocName;
di.lpszOutput = NULL;
あ。。。あぅ。。。あぅぅ。。。。。 面目ないっ m(_ _)m みんな、いい香具師だなぁ。好きだぜ、みんな!じゃー逝ってくる!
624 :
デフォルトの名無しさん :03/01/24 20:29
>>575 インスタンスを作成する関数を作って返す
とありますが、どのような形でポインタを返せばいいのでしょうか?
やはり、誰もわからないみたいですね。 致命的なバグか?
interface IBeeper { virtual void Beep() = 0; ~IBeeper(){} }; IBeeper*CreateBeepInterface(); DeleteBeepInterface(IBeeper*p); とでもインターフェースを定義しておき、共通とする。 んで、プラグイン側では、インターフェースを実装する。 class CBeeper : public IBeeper { void Beep() { .... } }; IBeeper*CreateBeepInterface() { return new CBeeper; } DeleteBeepInterface(IBeeper*p){ delete p; } それだけ。
627 :
デフォルトの名無しさん :03/01/24 21:14
>>626 う~ん。難し。
interface IBeeper { virtual void Beep() = 0; ~IBeeper(){} };
って、クラスじゃないんですね。。同じですか。
これは、ヘッダーですか?
IBeeper*CreateBeepInterface();
DeleteBeepInterface(IBeeper*p);
これは、何をするかは見当がつくのですが…。
class CBeeper : public IBeeper { void Beep() { .... } };
この*でつながっているのはどういう意味でしょうか?ポインターですか?
IBeeper*CreateBeepInterface() { return new CBeeper; }
DeleteBeepInterface(IBeeper*p){ delete p; }
ほう、何も継承しないのか
629 :
デフォルトの名無しさん :03/01/24 22:02
? public ですか? 継承ですね。はぁ。
COMのようでCOMじゃない
631 :
デフォルトの名無しさん :03/01/24 22:19
はぁ。何かつかめた気が。 でも、 IBeeper*CreateBeepInterface() { return new CBeeper; } DeleteBeepInterface(IBeeper*p){ delete p; } が解りません。 どういう意味でしょうか?
CBeeperのクラス名やら実装やらをIBeeper利用者に見えなくするのでは?
626=629=631 (・∀・)ジサクジエーン
自作自演の使い方を激しく間違っている634萌え
636 :
デフォルトの名無しさん :03/01/24 23:48
>>633 そういう意味なんですか。
CreateBeepInterfaceというのはどこから出てきたのですか?
>>636 "COM"だとか"インターフェースと実装の分離"で調べれ。
それから、スレ違いなのでここでやるのはよせ。
ウインドウがGetOpenFileNameやGetSaveFileNameで開かれた ダイアログかどうかを調べたいのですが、 その方法がわからず困っています。 頼みのウインドウクラスは 他のダイアログと同じ#32700なので使えないし...。 何か良い方法はないでしょうか? よろしくお願いします。
>>625 誰のバグだよ
どうでもいいがそのハンドル紛らわしいからやめてくれ
>>638 そのウィンドウに属する子ウィンドウの種類やテキストから強引に……w
なんか、反応が無いもんで昨日は寝ちゃったよ
>>637 COMの話じゃないって
>>636 そんな事聞いてるようじゃどうせ実装できないけど
最初にインスタンスを返すってのはインスタンスのアドレスを返すって意味ね
自分で IBeep って仮想クラスを作って、ソースを公開。
プラグイン作者は IBeep を継承して独自のクラス CBeep を作成。
同時に CreateBeepInterace と言う名前の関数を定義し、その中で CBeep を作成して返す。
君は GetProcAddress 等を使って CreateBeepInterface を呼び出すことでそのオブジェクトのアドレスを受け取る。
型は IBeep* になっているので、 CBeep の実装を知らなくてもその機能を使うことができる。
通常の多態と同じ。
使い終わったら DeleteBeepInterface で削除するのをお忘れなく。
ちなみにここで出てきた名前は全て君が勝手に名前を付けても良い。
> どこから出てきたのですか?
とかそう言うレベルの話じゃない、君が決めていいんだよ。
>>640 やっぱり、それしかないですかぁ。
コモンコントロールがバージョンアップした時が怖いですが、
判定ミスしたとしても致命的な問題になるようなプログラムではないので
その方法でいこうと思います。
どうもありがとうございました。
>>641 >仮想クラス
C++用語なら抽象クラス
COM用語ではインターフェース
GetProcAddressを使うならCBeepの実装(特定のDLL)に思いっきり依存
>COMの話じゃないって
まあ確かに
COMの話のできそこないだ
>ソースを公開。 ヘッダな そういう説明が必要な相手は激しく誤解するぞ
そういう重箱の隅をつつくようなセコい突っ込み、おじさんは嫌いだな
>>644-645 IBeep のように純粋仮想関数だけで形成されてるクラスならヘッダだけで良いけど
実装を含む場合はソースも公開してやるかlibファイルを作って公開してやる必要があると思うんで、
とりあえずヘッダ、とだけ言うとヘッダだけ公開しそうなんで。
ところで GetProcAddress を使っても CBeep の実装には依存しないと思うけど、
どうなの?
実際そういう風にプラグインにしてるけど今のところ問題ないし。
メインプログラムとプラグインのコンパイラやオプション設定が違う場合どうなるかは知ったこっちゃないけど。
なぜステータスバーの色が変わらないのだろうか? だれか、ソースをください。参考になる。
汎用的な実装についてはCOMを眺めたほうがいいんじゃない 特定用途ならGetProcAddressで充分だと思うけど
650 :
デフォルトの名無しさん :03/01/25 17:09
16進数文字列を数値に変換する関数ってなかったっけか? 普通のCのライブラリにはないようだけど。 あったらスマソ。
>>650 sscanf(a,"%x",&b);
って感じ?
653 :
名無し@沢村 :03/01/25 17:17
>>653 二代目沢村として兄者を恥ずかしく思うよ。
ぐぇ、そんな関数あったんだ。 scanf()は知ってたけど、標準入力からだしなぁと思って。 10年戦士なのに、意外なところに穴があるもんだ。 なにはともあれサンクスコ(´・∀・`)
656 :
デフォルトの名無しさん :03/01/25 18:09
リストビューで特定の項目のテキストの色を変えたいのですがどうすればよいですか? ListView_SetTextColorを使ったら全てのテキストの色が変わってしまいました。
OwnerDraw
>>646 >ネタ、板とは関係の無い話題はご遠慮ください。
↑↑
もう一度言う
C++用語なら抽象クラス
COM用語ではインターフェース
アフォは来るなという決まりはない
お前が正当性を主張できるのはそこだけだ
>>647 クラス名のプリフィックスをIとCにしながら
Iで始まるクラスに実装を含めるのはWin32では沢村かお前だけ
659 :
デフォルトの名無しさん :03/01/25 23:12
リストビューで2番目以降の項目にアイコンを表示するにはどうしたら良いですか? 最初のカラムにしかアイコンが表示されないのですが。
カスタムドローするよろし
>>658 そういう重箱の隅をつつくようなセコい突っ込み、おじさんは嫌いだな
PGにバグを放置する権利はない
名乗るのを忘れた 洩れは662だ
665 :
デフォルトの名無しさん :03/01/25 23:57
リストビューのフォーカスの点線を実線にしたり色をつけたりしたいのですが、 どうしたらできるでしょうか。
誰もわからないようだな(汗
>>665 自分で書く
WM_DRAWITEMとか捕まえられなかったっけ
>>666 666ゲットを機に粘着さんは消えてくださいませ。
>>666 つーかてめーは、全スレから延々とRebar関係の質問してるだろ。
いい加減にしろよ。
>>666 誰もわかりません。
ですからもうこないでください。
670 :
デフォルトの名無しさん :03/01/26 01:20
何で消えなきゃいけないんだよヴォケども
∧∧ ┌──────────
( ´ー`) < てりめーだヴァカ
\ < └───/|──────
\.\______//
\ /
∪∪ ̄∪∪
教えて君にあるまじき無礼な発言(ex.
>>618 )
未定義動作の意味を激しく誤解(ex.
>>598 )
>>623 から
>>625 への痛すぎる言動の変化
マルチやめろって顰蹙を無視した結果と思われ
おまえ沢村並み
むしろ沢村のほうがマシに思える
なんかこのバカ、ずっと同じ質問繰り返してないか? コテハン変えて何度も質問したり。 最初はまともな態度だったから許容してたが、最近態度がでかくなってきた。
本当にmanifest確認したのかなぁ よし6.0.0.0 Ok!とかいってそうだ
677 :
デフォルトの名無しさん :03/01/26 13:12
整数演算関係のAPI関数って Int32xTo64 Int64ShllMod32 Int64ShraMod32 Int64ShrlMod32 MulDiv UInt32x32To64 以外に無いですか??? 知っていたら教えて欲しいでごわすの東北人。
678 :
名無し@沢村 :03/01/26 14:13
>>677 MSDNを見れば分かる話だから、教えてあげないよ。ヌヒよ。
>>677 APIはMulDiv(KERNEL32)のみ
他はマクロ
ドライブ文字の割り当てられていないCD-ROMで メディアの入れ替えを検出するにはどのように すればよいのでしょうか? よろしくお願いします。
681 :
デフォルトの名無しさん :03/01/26 20:30
>>641 typedef CFormat * __stdcall GetData();
HINSTANCE hDllInstance = ::LoadLibrary("dl.dll");
if (hDllInstance != NULL) {
GetData *gsf = (GetData*)::GetProcAddress(hDllInstance, "GetData");
if (gsf != NULL) {
CFormat *cfs;
cfs = gsf();
}
FreeLibrary(hDllInstance);
}
//////////////////
extern "C" __declspec(dllexport) CFormat* __stdcall GetData()
{
return new CApp;
}
このようになったのですが、いざGetProcAddressに入るとエラーが出ます。
どうすればよいのでしょう?
>>681 エラーメッセージくらい書いてください。
>>681 > GetData *gsf = (GetData*)::GetProcAddress(hDllInstance, "GetData");
おいおい…
GetProcAddress() が返すのは「GetData 関数へのポインタ」だろ。GetData を
実行した結果じゃなくて。
GetData gsf = (GetData)::GetProcAddress(hDllInstance, "GetData"); こうじゃないの?
> typedef CFormat * __stdcall GetData(); こんなんだっけ?
>>683 GetProcAddress() が返すのは「GetData 関数へのポインタ」だろ。GetData を
実行した結果じゃなくて。
GetProcAddress() が返すのは「GetData 関数へのポインタ」だろ。GetData を
実行した結果じゃなくて。
GetProcAddress() が返すのは「GetData 関数へのポインタ」だろ。GetData を
実行した結果じゃなくて。
GetProcAddress() が返すのは「GetData 関数へのポインタ」だろ。GetData を
実行した結果じゃなくて。
GetProcAddress() が返すのは「GetData 関数へのポインタ」だろ。GetData を
実行した結果じゃなくて。
GetProcAddress() が返すのは「GetData 関数へのポインタ」だろ。GetData を
実行した結果じゃなくて。
GetProcAddress() が返すのは「GetData 関数へのポインタ」だろ。GetData を
実行した結果じゃなくて。
GetProcAddress() が返すのは「GetData 関数へのポインタ」だろ。GetData を
実行した結果じゃなくて。
GetProcAddress() が返すのは「GetData 関数へのポインタ」だろ。GetData を
実行した結果じゃなくて。
GetProcAddress() が返すのは「GetData 関数へのポインタ」だろ。GetData を
実行した結果じゃなくて。
>>685 関数ポインタへの typedef にしたいなら、括弧の位置が違うような。
typedef CFormat (*__stdcall GetData)();
* 一個抜けてた。 typedef CFormat* (*__stdcall GetData)();
そうだよねえ
こーでねえ? typedef CFormat * ((__stdcall *)GetData)()
最近 win32api の勉強を始めた者です。 WinMain の中の変数etc.を ウィンドウプロシジャに引き渡すには 外部変数にするしかないんでしょうか? 消防質問ですみません。
>>692 ヒープ上に領域を確保した上で、その領域へのポインタを SetWindowLong()
するとか。
>>693 ありがとうございます。
SetWindowLong()とか知らないので調べに
逝ってきます。
>>641 昨日の話に反応するけど
> 使い終わったら DeleteBeepInterface で削除するのをお忘れなく。
これ、仮想デストラクタでよろしく済ませるってのは無しなん?
COMを知らない奴はこれだから・・・
>>696 具体的な問題点か、情報へのポインタぷりーず。
俺は COM で Detele* 用意しているのは、単に C からも呼び出せるようにするため
かと思ってた。
>>695 よろしく済ませるならスマートポインタでは?
>697 DLL(plugin)のnew,deleteと 本体のnew,deleteが同じという保証がない。 DLLでnewするなら、DLLでdeleteしないと死亡の恐れがある
Create/Deleteを明示的によぶことで、 実装側で実体をnewで確保しようがmallocで確保しようが、 グローバル変数領域に自前で確保していようが、 利用側には影響しない。 もっと具体的にいうと、 実装側と利用側がVC++を使っていたとして、 コンパイルオプションが、片方はLIBC使用、他方はMSVCRT使用 だとしても、問題が起こらない。 通常はこれらをまたいでヒープをやり取りすると、おかしくなる。
684以降のレスはなに? 602氏の方がはるかにマシに見えるのだが
気にせず、サクッと黙殺しとけ。どうせ害はない。
ちょっとお尋ね申し上げますが、 Acrobat SDK を SDK だけで使う例とかを 紹介しているサイトってないでしょうか? てゆーかスレタイの Win32API って !MFC って意味だよね? それともやっぱスレ違い?
一応VCとは限らんと言っておく<Win32API
708 :
デフォルトの名無しさん :03/01/27 21:07
SendMessageCallbackって、他のスレッドからだと動かなかったりします? ドキュメント見ると問題なさげではあるのですが、現に動かない… Win2kです。
>>707 MFC=VCか。おめでてぇな。と釣り糸を垂らしてみる。
>>708 あなたのクソコードに問題があるのでは?見せてみて。
自作アプリをいろいろいじってみた結果 ウィンドウからツールバーを外したらなぜかステータスバーの色が 変わらなくなった。ツールバーを付けたらまた変わるようになった。 いくらステータスバーだけのサンプルをいじくっても分からないわけだ
>>711 602か?
XPではCOLOR_BTNFACEではなくCOLOR_MENUBARのほうに影響されるのかも
>>712 別人。Win95だとWM_SYSCOLORCHANGEを転送してやる
必要があったけどXPでは関係なさげ。確かにバグっぽいなこれ
是非 MS にバグレポート出してくれ。
715 :
デフォルトの名無しさん :03/01/28 00:46
てすと
procedure Callback(Wnd: HWND; Msg: UINT; Data: Pointer; Result: LRESULT); stdcall; begin //何かする end; procedure TXXX.METHOD; begin SendMessageCallback(Handle, WM_APP, 0, 0, @Callback, 0); end; こんな感じです。 OutputDebugString入れても、他のスレッドから呼んだ時だけCallbackに来てない。 単に、そのままやりたいことをするとデッドロックするので、PostMessage的に使ってるだけなんですが。 (素直にPostMessage使わない理由はSendMessageCallbackだと相手のウィンドウ関数を書き換えずに済むから)
717 :
デフォルトの名無しさん :03/01/28 00:53
ぎゃっはっははははははははっはあはっはあはっははははははははっはあはっはあ はっははははははははっはあはっはあはっははははははははっはあはっはあはっははははははははっはあはっは はははははっはははhはっははははははははっはあはっはあははははっはははははあはh はははっはっははっははははははははっはあはっはあはははははははあははは
SetTimerしてるのにタイマコールバックが呼ばれません ↓ DispatchMessageしていますか? 系の罠か。 本当にプリエンプトしてほしいなら素直にスレッド作れ。
がーん…使えねえ…。 718さんありがとう。英語ドキュメントを斜め読みしただけでした。読めてなかった。シクシク。
まぁ、普通に考えて同一スレッドで非同期にコールバック関数が呼ばれるタイミングって Windows側に制御が渡ってる状況しかないんだから、当然といえば当然なんだが。
ちょっと勉強してみたいんだけど、どっかに VC++ か BCC 用の ping のソース落ちてないかな?
723 :
名無し@沢村 :03/01/28 01:14
VCかSDKのサンプルの中にpingなかったけ。
「ICMP.DLL サンプル」とかやるとわらわら出てくるな。
>>722 サンプル: Raw ソケット版 ping
tp://www.kt.rim.or.jp/~ksk/wskfaq-ja/examples/rawping.html
皆さん、お久しぶりです。 余り質問をしすぎて、迷惑をおかけしまして、すいませんでした。 というより、Rebar関係は、バージョンアップの激しい部分ですので、何か不具合が多いのですよ。 苦労しています。 では、いろいろと質問をきいてくれて、ありがとうっす。 あと、 「「「671 名前:602 投稿日:2003/01/26(日) 04:34 何で消えなきゃいけないんだよヴォケども」」」 ↑ これは、私の書き込みではないですよ。 偽者ですか、ID制を導入してみてはどうですか?
何でてめえなんかの為にID制を導入しなきゃいけないんだよヴォケ
>>728 たのむからもう来ないでくれ。
あと、貴様ごときにID導入するほど価値はない。
731 :
名無し@沢村 :03/01/28 19:07
あれ?怒ってるなww 何か悪いことをしたとは思えないが。 荒らしたわけでもない。 ただ質問をしただけなのにこの態度。 だから、プログラム板っていつも人が少ないんだよw。 プログラムをする奴は基本的に閉鎖的な人が多いからね。 自分の世界以外の者が入ると、追い出すんだよ。 内向的、いや内弁慶、いやいやネット弁慶と表現したほうがいいかも。 要するに、 自分のわかる質問→大歓迎 わからない質問→追放 私みたいなプログラム初心者もいるのですから。初めて日が浅いのですよ。
怒ってるのはID導入のことについてだろ。 基本的な読解力ないから嫌われるんだよ。
ただ、プログラミングは面白いですね。
初めて2ヶ月目なので、これからどんどん勉強していこうと思います。
あと、
>>729 さんと、
>>730 さんは、ひどいことを言いますね。
なにも悪いことをしてないのに。
しかも、午後2時前後の書き込みですか。
お仕事はしてないのですか?
>>732 君はプログラミングの勉強の前に、まず質問の仕方から覚えるといい。
貴様ごときにID導入するほど価値はない。 ↑ 貴様ごときってw この発言が、「怒ってるのはID導入のことについてだろ。」だとは思わないな。 うーん、こんなにガラの悪い人が多いとは・・・。 がっかりですね。 まぁ、プログラムをする人でも、性格の悪い人は山ほどいるでしょうけどねw
ああ、なるほど。 「わかる人がいないみたいだな。」というのが、貴方達のプライドに傷がついたわけですね。 これのほかに、失礼な書き込みはしてないですよ。 これぐらいで怒るようでは、まともな社会生活はできないと思いますが。
時間がないので寝よ。 どっちにしろ、Win2000で開発を再開したので問題なく進んでいます。
>>728 671 で困ってる人はあんた以外に一人も居ないよ。
あんたの心証だけで何でいきなり ID 導入という話になるの?
>>732 実際に荒れてるんだから、つもりはどうであろうとあんたは荒らしだよ。
ちょっと聞きたいんだけど、そういう発言をすることによって、何を達成したいの?
どういう目的があるの?
ここはグチ垂れるスレじゃないよ。
大体、わからない質問にどう答えろと言うんだ?
みんなで調べろって?
プログラム初心者だから優遇しろって?
初めて日が浅いから多少の無礼は勘弁しろって?
ふざけるな、ここは無料サポートセンターじゃないぞ。
いろんな人の好意と余暇で成り立っているコミュニティだ。
その人達にそっぽを向かせるようなレスを繰り返しておきながら、自分の要求だけは
押しつけるのか?
それが、人にものを頼む態度か?
ここから追い出されようとしてるのは、あんたが 「自分の世界以外の者」 だから
ではなく、あんた自身が人間的に問題あるからだと気付け。
↑ で、自分で言うのもなんだけど、どこを縦読みすればいいんだ?
740 :
デフォルトの名無しさん :03/01/28 20:45
愚民ども、しずまれぇ~
>>739 ああ、勘違いしてますね。
ただ、わかる人がいるのかな?と聞いただけです。
わからないのなら、それでもかまわないのですから。
それを、いきなり「自分で調べろ!」だとか、わかっている内容を「MSDNを見ろよ」とか、なにか攻撃的ですね。
まぁ、どうでもいいですけど。
問題は自分で解決しましたので。
602 の中の人も可哀想だな。
743 :
デフォルトの名無しさん :03/01/28 20:50
>>741 あぁあぁ。消えろ。もうここにいる用は無いだろ。
もう二度とくんな。2ちゃんねるから出て行け。
>>741 もう一度聞くけど、そういう発言をすることによって、何を達成したいの?
どういう目的があるの?
プ
>>744 もうどうでもいいだろ。粘着だな。お前。
何? 祭り? ワショーイ
749 :
デフォルトの名無しさん :03/01/28 21:08
750 :
デフォルトの名無しさん :03/01/28 21:35
ぶはは 煽られてるよ602が(w ここにいる奴らはヒッキーの集まりだから気にするな(w これで安心したろ(w
安心しますた(プ
752 :
デフォルトの名無しさん :03/01/28 22:23
VB なんですが、 Private Type EVENTLOGRECORD (中略) End Type Private Declare Function OpenEventLog Lib ... Private Declare Function ReadEventLog Lib ... Private Declare Function CloseEventLog Lib ... Public Sub main() Dim hwnd As Long Dim pbuf As EVENTLOGRECORD Dim bufAddr As Long Dim BufSize As Long Dim ReadBytes As Long Dim NextSize As Long Dim Ret as Boolean hwnd = OpenEventLog("PC名", "Application") BufSize = 1 Ret = ReadEventLog(hwnd, 4, 0, pbuf, BufSize, ReadBytes, NextSize) ここ! (中略) Ret = CloseEventLog(hwnd) End Sub (ここ!)の点でエラーが出るんですが どこがおかしいですか?
エラーはパラメータエラー(87)です。 GetNumberOfEventLogRecordsを使った場合 イベントの個数は取れていますので hwndはうまく取れているはずですが...
>>752 VBは使ったことがないけど
最後の二つのパラメータはAddressOfしてやる必要があるかもしれない
AddressOfではなくByRefか
>>753 ReadEventLogのDeclareを省略しないでちゃんと書け。
>>756 宣言部はAPIビューアで作りました。
Private Declare Function OpenEventLog Lib "advapi32.dll" Alias
"OpenEventLogA" (ByVal lpUNCServerName As String, ByVal lpSourceName As String) As Long
Private Declare Function ReadEventLog Lib "advapi32.dll" Alias
"ReadEventLogA" (ByVal hEventLog As Long, ByVal dwReadFlags As Long, ByVal
dwRecordOffset As Long, ByRef lpBuffer As EVENTLOGRECORD, ByVal
nNumberOfBytesToRead As Long, ByRef pnBytesRead As Long, ByRef
pnMinNumberOfBytesNeeded As Long) As Long
Private Declare Function CloseEventLog Lib "advapi32.dll" (ByVal hEventLog As Long) As Long
BufSizeが1では小さすぎる
760 :
デフォルトの名無しさん :03/01/28 23:17
>>759 まずは、バッファサイズ不足エラーを起こして
pnMinNumberOfBytesNeeded
の値をBufSizeにセットしなおして
再度ReadEventLogを行うと思ってるんですが。
それなのにパラメータエラーを起こしちゃって...
2番目のパラメータが4ではまずいようです EVENTLOG_SEQUENTIAL_READ (=1) EVENTLOG_SEEK_READ (=2) のうち一つを含む事とあります EVENTLOG_FORWARDS_READ (=4) だけでは不正です
>>752 本筋とは関係無いけど、何で hwnd?
764 :
デフォルトの名無しさん :03/01/29 00:11
>>761 そういえば、
EVENTLOG_SEQUENTIAL_READ (=1)
で試したときもダメだったような気がしますが...
自信が無いので明日確認してきます。
765 :
デフォルトの名無しさん :03/01/29 03:54
あるフォルダの中に、ファイルが入ったり、消されたりしたら、そのことを 取得したいのですが、どうしたらできるでしょうか。 エクスプローラは他のプロセスでファイルが変更されると、 すぐに表示を更新(F5ではない)しています。あれと同じことをしたいのです。 どうかよろしくおねがいします。
>>765 FindFirstChangeNotification() のあたり
>>763 とりあえず動く、程度ではいざバグが出たときにどこを直していいか判らなくなる可能性大
訂正 「とりあえず」→「ちゃんと」
>>768 プログラムをしっかりしろという事ではなく、書いてる人間が自分が何をして
いるか把握せよという事では?
770 :
デフォルトの名無しさん :03/01/29 07:58
>>766 ありがとうございます。\(>▽<)/
助かりました。
771 :
名無し@沢村 :03/01/29 08:49
>>766 ヌヒよ、NT系ならReadDirectoryChangesW()のほうが詳細な情報を取れるぞ。
あとWin2k以降ならSHChangeNotifyRegister()というのもある。
完全無視されてるところを見るとやっぱ単に煽りにきてただけなのね。
名前間違えた
774 :
デフォルトの名無しさん :03/01/29 11:10
>>771 SHChangeNotifyRegister?
解説をお願いできないでしょうか?
775 :
名無し@沢村 :03/01/29 11:13
>>775 THX!
・・・やはり英語しか無いですか(--;
時間かけて読むしか無いっすね。
777 :
602 ◆hOJBbTlYfs :03/01/29 12:21
こんちはーす。 Rebarの件ですけど、解決しました!(涙) BYE。
結局何が問題だったんだろう
言うに言えない単純ミスじゃ
>>761 イベントログの読み込みの件
うまくいきました。
ただ...メモリ例外が出まくり...
VBでメモリ管理しないといけないのか...
変数宣言とメソッド実行する位置を入れ替えたりすると
収まったりして大変です。
783 :
デフォルトの名無しさん :03/01/29 21:35
あばよReBarでカモフラージュした単なるキリ番ゲッター >ALL 888をブロックしたらオモロイかもな
784 :
↓の830(not 829) :03/01/30 01:22
ReBarの不具合対策スレを立てればいいと思う。
786 :
デフォルトの名無しさん :03/01/30 13:12
>>682 デバッグエラーなんです。
return new CWavApp;
でエラーが起こっているみたいで。
Delete以前の部分の問題なんです。
>>786 じゃぁCWavAppでエラーが起こってるんでしょ
GetProcのソースを提示しても意味なくない?
788 :
デフォルトの名無しさん :03/01/31 20:03
>>787 そうだとは思うのですが、
CWavAppは何もないクラスなんです。
コンストラクタにMessageBoxがあるくらいで。
>>788 コンストラクタにMesssageBoxって……それはギャグですか?
何も考えてないんだね。
790 :
デフォルトの名無しさん :03/02/01 09:49
>>789 確かに珍しいケースではあるが
CWavApp::CWavApp()
{
::MessageBox(NULL, "アヒャヒャヒャ", "(゚∀゚)", MB_OK);
}
とかじゃねーだろ、いくら何でも
ユーザに起因するエラーならあり得なくもないぜ
791 :
bccのグラフィック :03/02/01 17:29
#include <windows.h> #include <stdio.h> #include <conio.h> int Locate(HANDLE hOut, int x, int y) { COORD dwPos; dwPos.X = (SHORT)x; dwPos.Y = (SHORT)y; if (SetConsoleCursorPosition(hOut, dwPos) == 0) return -1; else return 0; } int main() { HANDLE hStdout; int i; hStdout = GetStdHandle(STD_OUTPUT_HANDLE); for(i=0;i<=10;i++){ Locate(hStdout, 10, 5+i); printf(" C program "); } return 0; }
792 :
bccのグラフィック :03/02/01 17:31
791、なんかあっちこっちを、めぐりめぐって 適当に合体させてつくりました。 こういう使い方ってありなんでしょうか(^^; 作った本人が一番理解してないという、、、 コンソールアプリとして動くグラフィックがほしくて やっています。
>>792 似たようなのN88BASICとかDOS時代によく書いたよ。
\x1b[32mとかで色が変わるぞ。と。
794 :
bccのグラフィック :03/02/01 17:39
いや、エスケープシーケンス使えるんならつかうんですけど 2000以上だと使えなくて、それで、こんな事やってるんです。 bccだとgdiとかないみたいだし、、どうすればいいのか わかんなくて
>>794 > bccだとgdiとかないみたいだし
そんなことはない。
796 :
bccのグラフィック :03/02/01 17:58
え あるんですか、5.1であるんですか
797 :
bccのグラフィック :03/02/01 17:59
dos/Vなんですけど、初期化とかわからなくて gdiの初期化って初期化って初期化って初期化って
798 :
bccのグラフィック :03/02/01 18:00
画面消去とカーソル移動だけでも せめて
_, ._ ( ゚ Д゚) ( つ旦O と_)_) _, ._ ( ゚ Д゚) ( つ O と_)_) 旧 ガシャ
>>798 ANSI.SYSを入れておいて、ANSIエスケープシーケンスで制御しる!
画面消去は ESC '[' 'K' …だったかな?
カーソル移動は ESC '[' 'A' …とか。
詳しく知りたけりゃあ、ググってみれ。
>>796 5.1 ではなく 5.5.1 じゃねーのか?
>>800 > ANSI.SYSを入れておいて、ANSIエスケープシーケンスで制御しる!
Windows 2000 だと動かんがな。
802 :
名無し@沢村 :03/02/01 18:52
ヌヒ等よ、テキストエディターだが、一度に何バイトの文字まで使って大丈夫なの? 一度に5万文字くらい表示したいんだが、大丈夫? 一度に5万文字いっぺんにコピペしたりするときエラー出ない?
803 :
名無し@沢村 :03/02/01 18:53
>>802 たずねるときの沢村はそんなのじゃない。
WS_SIZEBOX や WS_THICKFRAME を指定していない Window で ユーザによるウィンドウサイズ変更をサポートする方法はありませんか? WM_NCHITTEST で HTLEFT などを指定しても無効なようです。
>>805 素直に WS_THICKFRAME 指定すりゃいいじゃん……
ANSI.SYS + 2000はちゃんと動きます。 ぐぐりましょう。
>>806 ウィンドウの境界は自前で描画しているので、
WS_THICKFRAME したくないんです・・・
そういう挙動をしているアプリも割と見かけるとは思うのですが、
どのように実現しているのやら。
>>792 SetConsoleCursorPositionの引数は本当はコンソールスクリーンバッファの
ハンドルが必要なんだが、791のソースで動いてるの?
810 :
bccのグラフィック :03/02/01 20:12
動いております。。>791 bcc5.5 win98
コンソールじゃなくてファイルにリダイレクトさせた場合はコントロールシーケンスとかが 書き込まれてるんだろうが?
812 :
bccのグラフィック :03/02/01 20:27
すいません811は何をいわれているのでしょうか(^^;
813 :
デフォルトの名無しさん :03/02/01 21:17
>>808 WM_LBUTTONDOWNでSetCapture
WM_MOUSEMOVEでSetWindowPos
WM_LBUTTONUPでReleaseCapture
ではだめか?
こっちで動作確認してないが
>>797 Windowsじゃなくて
DOS/VでもGDIってあったの?
ていうかWindowsの方が画像扱うなら楽じゃないの?
>>814 いつのbccよ?
5.5ってWin32以外のバイナリ吐けるの?
って言うかお前の提示したコードは思いっきりWindowsだ。
DOS/V の V は VIDEO の V
バイリンガル。
>>817 違うの?
Visual? Void? Virtual?
Vector
Virgin
DOS/V ドス/ヴァジャイナ
DOS VGA でビデオだと思ってたけど 正解はなんなの?
あれ?V-TextのVだったんじゃなかったっけ?
>>826 じゃあVってなんだよ。
・・・30行計画?
ドスブイのブイは
ビデオモードを使ったドスなんだから ビデオでいいじゃんよ
>>827 うん、variable-text の略だったように思うけど。。。
まぁどっちゃにしてもスレ違いなので話を戻すと
>>813 そりはダメっぽいぞ。
>>805 で近いとこまで行ってると思うけどナー
ピーシードースーV(ファイブ)にー全てをかけてー
ボルテースーVの~正義を込めて~
ビデオボードの情報を調べるのってどうするの ボードの名前とかビデオメモリ容量とか
ボルテスはファイブだろ ブイならコンバトラー コンバインするけど納期じゃないぞ
>>835 みんな知らないって。奴隷獸問題で再放送されないから。
>>807 16ビットアプリだけな。
Win32アプリには効果なし。
ハンドルの種類をしらべるAPIがあったと思うんですが、なんでしたっけ?
SetPixelVってなんで あんなに遅いの?
SetPixelVだけで 全ての描画をやろうとしたら アホみたいに遅くなったよ… 166MHz!の高速CPUなのにさぁ
>>841 最後のエクスクラメーションマークは一体なんだ?
843 :
名無し@沢村 :03/02/02 13:17
>>842 ヌヒよ、それはPentium!!!を表しているのだよ。
DIBセクションをオフスクリーンにして直接点打って 適当なタイミングでBitBltしる
846 :
デフォルトの名無しさん :03/02/02 18:32
VFWもWin32だけどサポートされなくなるそうですが これらで書かれているアプリはなにで書き直すのがいいですか?
848 :
デフォルトの名無しさん :03/02/02 18:47
>>847 ありがとう。やっぱりそうか。
DirectShowはVFWドライバとWDMドライバの両刀つかいって本当ですか?
Type-IのaviファイルはVFWで扱えないけどDirectShowなら扱えるってあってますか?
> DirectShowなら扱える そういうフィルタがあれば扱える。 DShowはそういうもの。
>>849 そうでしたか。どうもありがとう。ではでは。
VCMのCODECを使って画像をデコードするフィルタ(ラッパ)などがある
DirectShowのコンポーネントの単位はフィルタ。
854 :
デフォルトの名無しさん :03/02/03 00:00
>>846 そうなればDrawDibDraw()なんかも使えなくなるのですか?
ラッパってトランペットの事ですか?
ラッパー1発ぶっぱなせー♪
857 :
デフォルトの名無しさん :03/02/03 07:50
(-_-)?
サランラップの方だよ。とマジレス。 1 2 3~を待たずに32小説の旅の始まり
Display *OpenDisplay(???); の引数ってなんだったっけ? NULLでいいんだっけか?
Win32だよ
Xだろ?
XならXOpenDisplayでしょ
Nin64はどうよ?
>>854 サポートされなくなるらしいというのは私が聞いたハナシで定かではないです。
その後の調べでは「古いアプリケーションの為にVfWは今後もサポートされるが、拡張はない」ということらしいです
ではでは
dllからdllを読み込んでいるexeファイルの名前を取得するには どうすればいいですか? GetModuleFileNameはヽゝ゚ -゚νダメナノネ・・・
GetModuleFileName(0)でいけるけど?
869 :
デフォルトの名無しさん :03/02/03 23:26
VC++初心者ですが、VC++の新規作成でプロジェクト選択の時に 「Win32Application」とあって、このスレはこの環境での プログラミングを考えていると思いますが・・・。 実際にはWin32applicationでは何をやるんですか?
すいません。 出来れば「人に寄るだろうけど、大体はこういう目的で利用する」 というようなことを書いていただけると有難いです。
>>868 (|| ゜Д゜)ガーン!!
見逃してました。ありがとう~。
>>869 何するって、それを決めるのはお前だろうが。
今まで見た中でもっともくだらんネタだな。
軽はずみな発言をしたばっかりに死ななくてはならなくなった
>>874 次回「本当に死ぬよ?」にエンジェラインジェラ~♪
877 :
デフォルトの名無しさん :03/02/04 00:11
>>869 VCのバージョンは?
6の場合は
Win32 Application -> GUI用(大抵こっち,Hello worldで100行くらい)
Win32 Console Application -> CUI用(俗にDOS窓)
.NETの場合はウイザードに「どっちだ」と聞かれる
>>875 教えて君が挑発に乗っててどうする
無礼者は何も教えて貰えなくなるぞ
今回,答えたのはゲロ甘だったが
それは874がものすごいDQNだった
お陰ってことを忘れるな
>>877 有難うございます。
ハローワールドに100行ですか・・・・・・・・・・・・・・・。
マジでビックリです。。。。。。
880 :
デフォルトの名無しさん :03/02/04 04:50
test
3.3はもう普通に使える。なかなかいいかも。 というわけでネタなしのから揚げスマソ。
IEコンポを使い倒すのに参考になる書籍はありますか? 英語苦手なんで日本語のやつで
市ね、マルチポスト野郎
DirectShow
人生に憑かれますた
888 :
602 ◆hOJBbTlYfs :03/02/04 05:01
♪お久しブリブリ コモンコントロールの勉強は進んでますよ。 相変わらずRebarは複雑ですね。 てへっ。 BYE!
890 :
デフォルトの名無しさん :03/02/04 15:25
>>788 extern "C" __declspec(dllexport) int GetClassObject(CTst** pOut)
{
CDtestApp* p = new CDtestApp;
*pOut = (CTst*)p;
return 2;
}
DLLの関数をとしてみたのですが、3行目 new -のところでデバッグエラーです。
どうすれば解決するでしょうか?
エラーの内容(ry
892 :
デフォルトの名無しさん :03/02/04 18:38
>>891 いえ、Debug Errorです。
実行中に、メッセージボックスがでてきて…。
LibraryDocumentをみろと。
893 :
デフォルトの名無しさん :03/02/04 20:32
>>892 LibraryDocumentをみろと。
エラーメッセージの指示に従えない香具師が他人の意見を受け容れられるとは思えないな。
>>894 解決方法は知らんが、それはちがうだろ。
CDtestApp::CDtestApp(??) が有っても CDtestApp::CDtestApp() が無いとか。 CDtestApp::CDtestApp() が有っても public でないとか。
897 :
デフォルトの名無しさん :03/02/04 22:04
スレとあんまり関係ないかもしれませんが studio.netからの新しいヘルプファイルありますけど そのファイルを開くソフトがダウンロードできるところありませんか? ファイルはあるのに開くソフトがないのです ヘルプだけ使いたくてプラットフォームSDKとかのヘルプファイルだけ使いたいのです プラットフォームSDKに付いているヘルプを見るファイルを単体だけで使いたいのです ヘルプだけが読みたいのです 他の物は何もいりません ハードディスクの残りもあとわずかです
899 :
デフォルトの名無しさん :03/02/04 22:17
>>869 コンストラクタはデフォルトですので問題はありませんし、
デフォルトですから、Publicなのです。
896へのレスなんだろうな。 ちなみにクラスのメンバのデフォルトはprivateなんだが…… なにがデフォルトなんだろう。
class A { A(); }; A は private。 つまり、 class A { private: A(); }; と書いたものと同じ。 コンパイルでエラーが出てないという事の方に疑問を感じるのだが。
実行時にエラーでるんだから何がしかの例外投げられてるんだと思うが。
デフォルトってのはMFCAppWizardのスケルトンのデフォルトって意味で (それならpublic)、DLLからMFCアプリを構築しようとかそんなことを 考えてるような気がしないでもない
905 :
602 ◆hOJBbTlYfs :03/02/05 06:34
ご存知なら、・・・・。 Rebarのボタンのサイズ変更はどうのようにすればいいのでしょうか? 標準では、16ピクセルですよね、サイズが。
907 :
デフォルトの名無しさん :03/02/05 11:16
Dim s As SHFILEINFO Call SHGetFileInfo(fname, 0, s, Len(s), SMALL_ICON) hb = GetStockObject(BLACK_BRUSH) Call DrawIconEx(g.hdc, x, y, s.hicon, 0, 0, 0, hb, DI_NORMAL) 版違いだったらすみません。 アイコンを、重ねあわせで表示したいのですが、これだと周りが 塗りつぶされてしまいます。ブラシを適当に変えてみましたが、 普通はどうやっているのでしょうか??
908 :
デフォルトの名無しさん :03/02/05 13:22
キーボード入力を横取りするグローバルフックプロシージャを作っていて、 フックを仕掛ける関数をフックプロシージャのあるDLLに置こうと考えて います。 で、SetWindowsHookEx() に渡すインスタンスハンドルを DllMain() の 引数から得るわけですが、googleで見つかったサンプルコードをいくつか 見ると、取得したインスタンスハンドルを格納するグローバル変数を sharedなセグメントに置くものとそうでないものとあります。 インスタンスハンドルを格納する変数はsharedセグメントに置くべきなのか、 別にそこまでする必要はない、一体どっちが正しいんでしょう?
>>907 ブラシはNULLでいいと思うんだけど。
上のコードは間違いです。 NULL_BRUSH (= 5) でやっているのですが、重ね合わせにならないのです。 どうしたらいいのでしょう。
>>907 関係ないかもしれないけどDI_DEFAULTSIZEは?
NULL_BRUSH (= 5) ではなくて、0を指定したら、うまくいきました。 DrawIconEx(g.hdc, x, y, s.IconNo, 0, 0, 0, 0, DI_NORMAL) お騒がせしました。そしてどうもありがとう!!
914 :
デフォルトの名無しさん :03/02/05 16:56
>>909 どうもです。
で、さらに調べてみたところsharedにしないといけないのはフックハンドルで
あって、DLLインスタンスハンドルは別にsharedでなくても構わないようです。
確かにフックハンドルはsharedにしないと、他プロセスからフックプロシージャが
呼ばれたときに格納したフックハンドルが見えないし・・・
で、もう一つ質問なんですが、グローバルフックプロシージャが他プロセスから
最初に呼ばれる際、フックプロシージャがあるDLLの DllMain() は呼ばれるんでしょうか?
CallNextHookExに使うだけだったら、フックハンドルもsharedにする必要は無し。 DllMainは呼ばれる。
>>914 902 と 904 を読んでおきたまえ。
で、お前は 890 なのかい?
>>916 >CallNextHookExに使うだけだったら、フックハンドルもsharedにする必要は無し。
なぜ?
フックハンドルを渡さなくても一応は動くけど
他のフックが正常動作しなくなるよ
別スレッドに構造化例外をなげるAPIを教えてください。
>>919 SetThreadContextとか駆使してPCをRaiseExceptionのエントリに設定する。
ただしWin9xでは制限あり
>>916 >>918 遅くなりましたがありがとうございます。
とりあえずまとめると、
・DLL上のフックプロシージャが他プロセスから最初に呼ばれる際は DllMain() が呼ばれる
・フックハンドルはsharedにする必要がある
(CallNextHookEX() には正しいフックハンドルを渡す必要がある)
ってことでいいんでしょうか?
HTTP経由で自作アプリからエクスプローラへドラッグ&ドロップしたいと考えています。
以下にそのものずばり書いてあったのですが、
具体的にどうするのか皆目見当が付きません。
http://forums.belution.com/ja/vc/000/060/08.shtml > ファイルの場合は、CFSTR_FILEDESCRIPTORを用い、
> CFSTR_FILECONTENTSを遅延レンダリングすることで、
> ドロップ後にサーバよりGETしてくることは可能
(ここで問題として挙がっているフォルダのケースは想定していません)
なにとぞお知恵を拝借いただければ幸いです。
漏れのAPIはすっごく大きんだぞ!
>>925 何を聞きたいのか皆目見当がつきません。
何言ってるのかわからないなら何言ってるのかわかるように勉強してください。
自力で。
スクロールバーの隣に配置されるコントロールを作っています。 コントロールの高さはスクロールバー高さに合わせているのですが いったん表示した後に画面のプロパティでスクロールバーの高さを変更されると、 コントロールとスクロールバーの高さにズレが生じてしまいます。 画面のプロパティが変更されたことを知るにはどうすればよいのでしょうか?
932 :
デフォルトの名無しさん :03/02/07 09:11
ウィンドウの移動が画面でのドラッグによるものか、 APIによるものかを区別するいい方法はないでしょうか? ウィンドウを配置できる位置を制限したいと思っているのですが、 WM_MOVEを受け取った時不正な位置の場合SetWindowPosで 位置修正を行うようにすると、そのSetWindowPosのため、 またWM_MOVEが発生してしまいます。 今のところ、SetWIndowPosを使用する直前にフラグをたてることで 移動がドラッグによるものかAPIによるものか判断してますが、 なんだかすっきりしません。他にいい方法があれば教えてください。 あと、WinampやSCMPXはドラッグしている間もウィンドウの中が 描画されますが、ああいうのはどうすれば実現できるでしょうか?
WM_SIZEのときに位置変更してもダメ?
>>932 「すっきりしない」以外に問題がなければそれでいいんじゃないの?
すっきりしないのは大問題
WM_MOVINGとWM_SIZINGとWM_WINDOWPOSCHANGINGですっきり?
ウィンドウ移動がドラッグによるものか否かは WM_EXITSIZEMOVEで判断できることがわかりました (APIでの移動では発生しない) ありがとうございました。
938 :
名無し@沢村 :03/02/07 19:41
皆々様方~教えてくださらんか、皆々様方~♪ それはエディットだが、windowsの改行コードは\r\nのはずだが、 SendmessageのWM_SETTEXTで文字列といっしょに改行コードを送っても改行されんのよ。 どうしてかわかりますか? またタブの\tはちゃんとタブになるんだが、タブの幅が気にくわんので、もっと短くしたいのだが、どうすればいい? 教えてはくださらんか~、皆々様方~♪
おまえ何様のつもりだよ~♪
沢村様でしょ~♪
うわ、これは本物の沢村だ・・・(;´Д`)
942 :
デフォルトの名無しさん :03/02/08 01:39
>>938 0x0a,0x0dをちゃんとおくてるのか?
TAB>Edit_SetTabStopマクロ
ES_MULTILINE
>930 ありがとうございます。 ウィンドウサイズが変更された時のステータスバーやツールバーの再調整と同じように WM_SETTINGCHANGE を受信した親ウィンドウがサイズの調整を指示するメッセージをコントロールへ送るようにしました。 おかげさまで問題が解決しました。 ありがとうございました。
946 :
デフォルトの名無しさん :03/02/08 16:25
Windows95付属のFontView.exeをLoadLibraryした後、FreeLibraryすると 必ずFreeLibraryでページ違反エラーが起きてしまいます。 エラーの詳細にはMFC30.DLLが示されているのですが、これはMFC30.dllの バグなのでしょうか? ちなみにWindows2000にWindows95のfontview.exeをコピーして同様の事を したところ、前述のエラーは起きませんでした。 Windows2000にはMFC30.dllが無いのでやはりこのdllが問題なのかとも思うのですが… 他のOS(98/Me/NT/XP)は無いので他のOSでの動作は確認できないのですが、 これはWindows95だけで起こる問題なのでしょうか? もしそうならばこのエラーを回避するにはどうすればよいでしょうか? 開発環境はVC6+SP5です。
>>946 FontView.exeをLoadLibraryするとなんか便利なAPIが呼び出せるようになったりするんですか?
>>947 いや、FontViewをロードしても便利なことは無いです。
ユーザが任意のモジュールをLoadLibraryできるソフトを作っているのですが、
このFontViewのようにロードはできても解放でエラーが出てしまうような
ファイルをユーザが指定しまうと困るので、回避方法が知りたいのです。
自分の知らないモジュールのバグは、さすがに回避できねえんでねえの? 無理矢理やるなら、FreeLibraryするとバグってしまうライブラリの ファイル名を覚えておいて、FreeLibraryを禁止するとか。
やだ。
951 :
名無し@沢村 :03/02/08 20:19
>>942 すまん、\r\nを送っても改行されない件だが、解決した。
ちょっとした勘違いで、文字列を送るたびにその文字列の最後に\r\nを入れたつもりが、
全部の文字列の最後にしか入ってなかったわけだ。
これはちょっとしたミステイクというやつよ。
それはそうと、タブの\tはちゃんとタブになるんだが、タブの幅が気にくわんので、もっと短くしたいのだが、どうすればいい?
教えてはくださらんかな、ヌヒよ?
>>951 >>942 にも書いてあるがEM_SETTABSTOPS
☆ チン 〃 Λ_Λ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
ヽ ___\(\・∀・) < MIDIプレーヤーまだー?
\_/⊂ ⊂_ ) \_____________
>>948 __try~__exceptで囲むとか。
Win2000でエラーが出ないのは単にロードに失敗してるだけだと思うぞ
(NT系ではexeはリソース取得の目的でしかロードできない)
>>953 >NT系ではexeはリソース取得の目的でしかロードできない
じゃあGetProcAddrを呼び出すまでは合法では?
>>953 例外ハンドラも試してみましたがハンドラが呼ばれませんでした。
__try{
FreeLibrary(hINST); // ここでエラー
}__except(EXCEPTION_EXECUTE_HANDLER){
// 呼ばれない
}
また、Win2000では
HINSTANCE hINST = LoadLibrary("fontview.exe");
if(hINST != NULL){
// デバッグしたところこのブロックに入ることを確認済み
FreeLibrary(hINST);
}
としているのでロードはできていると思います。
用途が限定されるがLoadLibraryExを使うという手もある
【不幸のレス】 このレスを見た人間は十三日以内に死にます。 ※あなたに訪れる死を回避する方法が一つだけあります。 それはこのコピペを一時間以内に7つ、別のスレに貼り付ける事です
↓これの TCHAR バージョンは有りますか? wctomb(char *, wchar_t); wcstombs(char *, const wchar_t *, size_t); こういう感じで。 _tctomb(char *, TCHAR); _tcstombs(char *, const TCHAR *, size_t); もしも無くて良い代物でしたら代替案を御教授下さい
>>956 それだとGetProcAddressできないんで・・・
>>958 WideCharToMultiByte
>>960 WideCharToMultiByte に TCHAR を渡しても大丈夫なのでしょうか。
wchar_t ではなく char のとき困るような気がします。
(↑もちろんこの時は無変換です)
int WideCharToMultiByte(
UINT CodePage, // コードページ
DWORD dwFlags, // 処理速度とマッピング方法を決定するフラグ
LPCWSTR lpWideCharStr, // ワイド文字列のアドレス
int cchWideChar, // ワイド文字列の文字数
LPSTR lpMultiByteStr, // 新しい文字列を受け取るバッファのアドレス
int cchMultiByte, // 新しい文字列を受け取るバッファのサイズ
LPCSTR lpDefaultChar, // マップできない文字の既定値のアドレス
LPBOOL lpUsedDefaultChar // 既定の文字を使ったときにセットするフラグのアドレス
);
何に使うかといいますと、今回は std::fstream のファイル名指定に
char、wchar_t の両方が渡されても大丈夫という関数なのです。
↓こんな感じです。
void FileOpen( LPCTSTR filename )
{
char buffer[MAX_PATH];
_tcstomb( buffer, filename, MAX_PATH );
std::ofstream ofs( buffer );
.........
}
>>958 TCHAR == char の環境だと、そもそも文字コード変換の意味がないと思うが…
(単なるコピーだよな)
>>962 その単なるコピーになる時と、wide->multi 変換が必要な時で同じコードを共有したいのです。
そもそもTCHAR自体_UNICODEマクロと_MBSマクロでコンパイル時に切り替えているだけなんだが
自分で _tctomb(char *, TCHAR); _tcstombs(char *, const TCHAR *, size_t); を作ってその中でマクロでコードの切り換えするのが普通じゃ?
>>964 _MBCS でコードしたい時と _UNICODE でコードしたい時で
同じ関数を使えたら資源の有効利用になると考えました。
>>963 FileOpen() の内部で #ifdef で切り分ければ?
もちろん _tcstomb() 自体を #ifdef _UNICODE で切り替えることも可能だが、
ムダに文字列コピーが発生するからお奨めはしない。
同じ関数ですか。
>>966 自分で#ifdefとか使って切り替えれば?
その部分だけを別ファイルなりにしておけば、本体のコード自体は見かけ上変わらない。
970 :
デフォルトの名無しさん :03/02/08 23:03
デタッチされないDLLを作るにはどうしたら良いですか? いま、DLLの中でスレッドを起動しているのですが、 放っておくと「DLLがデタッチされてしまうがスレッドが動いている」という状態になって ハングしてしまいます。 スレッドは動かしつづけたいのでDLLがデタッチされないようにしたいのですが。
自分をLoadLibraryすればいいんじゃない
>971 ありがとうございます。やってみたら望んだ通りになりました。
マクロで何とかしようと思います。アドバイスを戴きまして、 まことに有難う御座いました。
mallocとGlobalAllocの違いって何?
>>974 mallocっへ内部的にはHeapAllocだっけ?
>>975 処理系(というかランタイム)依存
mallocは一般的にはVirtualAlloc等で確保した大きなブロックをランタイムライブラリがさらに分割管理している。
HeapAllocはmallocとほぼ同じようなことをシステム側がやってくれる。mallocと比べて速度が少々劣る可能性が高い。
GlobalAllocは大きなブロックをそのままうけとる。Win16との互換性の関係で少々余分な処理が入る。
小さい領域を頻繁に確保、開放したい場合はmalloc
確保領域をグループ化して一気に開放したい場合はHeapCreate->HeapAlloc->HeapDestroy
HGLOBALを要求するAPIを使いたい場合はGlobalAlloc
仮想メモリ空間を厳密に管理したい場合はVirtualAlloc
977 :
デフォルトの名無しさん :03/02/09 16:51
>>931 >CFSTR_FILECONTENTSをどうやって引き渡すのか分かりません。
IStream を使うという話ではないの?
>ClipSpyで見てもCFSTR_FILECONTENTSは<Data unavailable>になっていて、
IStreamを使っている(遅延される)から表示のしようがないだけでしょう。
978 :
デフォルトの名無しさん :03/02/09 16:56
> スレッドは動かしつづけたいのでDLLがデタッチされないようにしたいのですが。
そんなことしてたら、下手するとゾンビるぞ。
>>970 ・・・ちゃんと忠告したからな。あとは知らんぞ。
FreeLibraryAndExitThreadだな
976より975の方がわかってるな だいいちVirtualAllocは「厳密」などという曖昧な理由では使わない 974よ,それは例えばGMEM_MOVEABLEだ
981 :
名無し@沢村 :03/02/09 20:20
>>952 タブを設定しようと思い、SendMessage(hEdit,EM_SETTABSTOPS,1,1);としたところプログラム開始エラーが出てしまいました。
SendMessage(hEdit,EM_SETTABSTOPS,1,1);をSendMessage(hEdit,EM_SETTABSTOPS,0,1);に直すとエラーは出ないので、3番目の引数がくせものと思うのだが、
EM_SETTABSTOPSの使い方を教えてはくだされんか~♪
ヘルプも読まない主義かよ
985 :
名無し@沢村 :03/02/09 21:48
皆々様方~EM_SETTABSTOPSの使い方がわかったぞよ~♪ 最初SendMessage(hEdit,EM_SETTABSTOPS,1,1);としたところエラーが出たのでビックリしたが、 その後の調べでは、4番目の引数にエラーの原因があったのよ。 4番目の引数をDWORD型にしてその後int型にキャストしなおすとちゃんとなることがわかったのよ。 皆々様方~これは私にとって1大発見であるのだよ!!!
986 :
名無し@沢村 :03/02/09 21:54
皆々様方~、タブの幅の設定の仕方はわかったが、これはタブキーをうったとき、 その間隔でタブが出るのだが、普通に文字をうって、その列にきたとき自然にタブが挿入されるようにするにはどうすればいい? 皆々様方~教えてくだされ~♪
987 :
名無し@沢村 :03/02/09 21:57
つまりあらかじめ列にタブを設定しておいて文字がその列になったとき、 自然にタブの間隔があくようにするということだが、どうすればいいですかな? 皆々様方~教えてくだされ~♪
いかん. . . 誰だ本物の沢村を召還したのは
意図がイマイチ汲み取れないが、例えばスペース4つをタブに置換したいということか…?
とりあえず放置せよとの命令が下った。
次スレはどこ?
993 :
デフォルトの名無しさん :03/02/10 00:29
>沢村 ゲーム製作技術板を荒らすな
995 :
デフォルトの名無しさん :03/02/10 12:22
オレも FB1.02 だけど問題ないけど。(Win2000) エラーが出たときのSQLステートメントは? とりあえず isql で以下でテストしてみるとか。 select extract(year from cast('now' as date)) from rdb$database;
996 :
デフォルトの名無しさん :03/02/10 12:23
って前に同じ発言が…… 逝ったきます。 あと、できれば他の言語でも開発できるようにインタフェースを公開して欲しいっす。
997 :
デフォルトの名無しさん :03/02/10 12:24
確率と確立を区別できない坊が多いな。 あと定跡と定石 それと香具師と家具師
998 :
デフォルトの名無しさん :03/02/10 12:26
じゃ「ばばぬき」キボンヌ
999 :
602 ◆hOJBbTlYfs :03/02/10 12:27
RebarRebarリバニタ炒め。 おいちー。 BYE!
999で止まるスレってのもスゴイね。
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。