Win32API質問箱 Build28
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
05/02/12 18:08:24Build27:http://pc5.2ch.net/test/read.cgi/tech/1106103119/
Build26:http://pc5.2ch.net/test/read.cgi/tech/1104109858/
Build25:http://pc5.2ch.net/test/read.cgi/tech/1101393155/
Build24:http://pc5.2ch.net/test/read.cgi/tech/1098967135/
Build23:http://pc5.2ch.net/test/read.cgi/tech/1095534704/
Build22:http://pc5.2ch.net/test/read.cgi/tech/1092524669/
Build21:http://pc5.2ch.net/test/read.cgi/tech/1090422324/
Build20:http://pc5.2ch.net/test/read.cgi/tech/1088140233/
Build19:http://pc5.2ch.net/test/read.cgi/tech/1084697545/
Build18:http://pc5.2ch.net/test/read.cgi/tech/1081702990/
Build17:http://pc5.2ch.net/test/read.cgi/tech/1077470361/
Build16:http://pc2.2ch.net/test/read.cgi/tech/1073830065/★
Build15:http://pc2.2ch.net/test/read.cgi/tech/1069339866/★
Build14:http://pc5.2ch.net/tech/kako/1065/10653/1065328397.html
Build13:http://pc5.2ch.net/tech/kako/1059/10595/1059549320.html
Build12:http://pc5.2ch.net/tech/kako/1056/10560/1056033645.html
Build11:http://pc5.2ch.net/tech/kako/1052/10526/1052651750.html
Build10:http://pc5.2ch.net/tech/kako/1047/10478/1047819779.html
Build9:http://pc5.2ch.net/tech/kako/1044/10449/1044929160.html
Build8:http://pc5.2ch.net/tech/kako/1040/10409/1040964626.html
Build7:http://pc3.2ch.net/tech/kako/1036/10366/1036654893.html
Build6:http://pc3.2ch.net/tech/kako/1032/10325/1032548635.html
Build5:http://pc3.2ch.net/tech/kako/1028/10285/1028580373.html
Build4:http://pc3.2ch.net/tech/kako/1023/10233/1023361418.html
Build3:http://pc.2ch.net/tech/kako/1017/10170/1017072275.html
Build2:http://pc.2ch.net/tech/kako/1006/10067/1006783012.html
Build1:http://pc.2ch.net/tech/kako/991/991576947.html
(★は「いやーごめんなさい。」に巻き込まれた模様
0002デフォルトの名無しさん
05/02/12 18:10:03http://www.microsoft.com/japan/msdn/
- 猫でもわかるプログラミング
http://www.kumei.ne.jp/c_lang/
- Platform SDK Update
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
http://www.google.com/
Win32 API入門
http://wisdom.sakura.ne.jp/system/winapi/
Win32 プログラミング入門
http://www7.plala.or.jp/keny01/windows/win32/
Win32 SDK Programming
http://usr_vogel.at.infoseek.co.jp/Win32SDK/
0003デフォルトの名無しさん
05/02/12 18:36:170004デフォルトの名無しさん
05/02/12 18:39:330005デフォルトの名無しさん
05/02/12 18:43:01乙
0006デフォルトの名無しさん
05/02/12 21:05:560007デフォルトの名無しさん
05/02/13 07:32:52>サービスでウインドウを作りたくねえよなぁww
サービスに「デスクトップとの対話をサービスに許可」という
チェック項目が存在する意味を理解できない方ですか?
0008デフォルトの名無しさん
05/02/13 12:16:07ネットワークサービスのためだったのか!!勉強になりました!!!
0009デフォルトの名無しさん
05/02/13 12:23:31>>http://pc5.2ch.net/test/read.cgi/tech/1106103119/989
------------------------------------------------------
アンインストール情報は、
HKLM \ Software \ Microsoft \ Windows \ CurrentVersion \ UnInstall \
以下に保存します。
ここに DisplayString、UninstallString をはじめとするいくつかの値を適切に書き込んでおくと、
コンパネの「プログラムの追加と削除」からアンインストールできるようになります。
------------------------------------------------------
自分のメモのあるものです、確認していないので
0010デフォルトの名無しさん
05/02/13 12:32:00氏ね
0011デフォルトの名無しさん
05/02/13 13:16:540013デフォルトの名無しさん
05/02/13 13:24:32http://www.java.com/ja/download/help/regkey_addremove.jsp
http://homepage1.nifty.com/softport/InstallFaq.htm
0014デフォルトの名無しさん
05/02/13 13:28:06Win32API質問箱 Build28
http://pc5.2ch.net/test/read.cgi/tech/1108199304/l50
良い1000の取り方だな。乙。
0015デフォルトの名無しさん
05/02/13 14:44:10場所の位置を特定することはできるでしょうか?教えてください
0016デフォルトの名無しさん
05/02/13 14:50:490017デフォルトの名無しさん
05/02/13 14:51:490018デフォルトの名無しさん
05/02/13 15:35:33文字などを表示する際、1024*768として表示させているのですが、この大きさはみんな同じなのでしょうか?
他の人にやって貰うとき小さいディスプレイの人だったら表示とかおかしくなってしまうのですか?
説明が下手ですいません^^;
分かる方教えて下さい。
0019デフォルトの名無しさん
05/02/13 15:49:350020デフォルトの名無しさん
05/02/13 15:54:20640×480ピクセルのBMPイメージをメモリ上に作成し
それをウインドウに表示させたいんですがうまくいきません、どうしたらいいでしょうか?
以下ソース
#define FIELD_X 40
#define FIELD_Y 30
//変数
static HDC hMemDC_BG; //作成する640×480イメージ用のDCハンドル
static HDC hMemDC_BG_BLOCK; //メモリに読み込む16×16のBMPのDCハンドル
static HBITMAP hBitmap; //メモリに読み込んだ16×16のBMPのBMPハンドル
static HBITMAP hBitmap_BG; //作成する640×480イメージ用のBMPハンドル
static BITMAP bitmap;
static BITMAP bitmap_BG;
void MakeBG(void)
{
int i;
int j;
for(i=0;i < FIELD_Y;i+=16)
{
for(j=0;j < FIELD_X;j+=16)
{
BitBlt(hMemDC_BG,j,i,bitmap_BG.bmWidth,bitmap_BG.bmHeight,hMemDC_BG_BLOCK,0,0,SRCCOPY);
}
}
}
002120続き
05/02/13 15:55:55case WM_CREATE:
hMemDC_BG = CreateCompatibleDC(NULL);
hMemDC_BG_BLOCK = CreateCompatibleDC(NULL);
hBitmap = LoadImage((HINSTANCE)GetWindowLong(hWnd,GWL_HINSTANCE),BMPFILE,IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
SelectObject(hMemDC_BG_BLOCK,hBitmap);
GetObject(hBitmap,sizeof(BITMAP),&bitmap);
hdc = GetDC(hWnd);
hBitmap_BG = CreateCompatibleBitmap(hdc,640,480);
ReleaseDC(hWnd,hdc);
SelectObject(hMemDC_BG,hBitmap_BG);
GetObject(hBitmap_BG,sizeof(BITMAP),&bitmap_BG);
return 0;
case WM_PAINT:
hdc = BeginPaint(hWnd,&ps);
MakeBG(); //16×16のイメージを並べる関数
BitBlt(hdc,0,0,bitmap.bmWidth,bitmap.bmHeight,hMemDC_BG,0,0,SRCCOPY);
EndPaint(hWnd,&ps);
return 0;
}
0022デフォルトの名無しさん
05/02/13 15:59:55とだけ書いても上手くいかないよ
0023デフォルトの名無しさん
05/02/13 16:05:060024デフォルトの名無しさん
05/02/13 16:14:44Win9xだと制限があるからアレだけど。
0025デフォルトの名無しさん
05/02/13 16:17:48実行すると16×16のBMPが一個しか表示されません。
メモリ上に仮想イメージを上記のMake関数みたいなもので作成する方法がわかれば解決すると思うんですが・・・
0026デフォルトの名無しさん
05/02/13 16:24:34俺は>>23では無いが、まず>>23の言うことについて考えるのが良いと思う
0027デフォルトの名無しさん
05/02/13 16:32:400028デフォルトの名無しさん
05/02/13 16:39:42出直してきます、ありがとうございました
0029デフォルトの名無しさん
05/02/13 16:58:08ディスプレイの大きさなどにもよるし、たとえ同じディスプレイでも画面のプロパティから自由に大きさを変えられる。
GetDeviceCapsのHORZRESとVERTRES
0030デフォルトの名無しさん
05/02/13 18:02:390031デフォルトの名無しさん
05/02/13 19:02:240032デフォルトの名無しさん
05/02/13 19:11:28APIスレ的にはWS_EX_LAYERED属性付き枠無しウィンドウに画像を表示させてSetLayeredWindowAttribute()。で、そのウィンドウを別のウィンドウに重ねる。
マジレスするとCreateDIBSectionでビットマップ作成して自前で合成
003369式フリーPG ◆hND3Lufios
05/02/13 19:14:28http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/windows/windowreference/windowfunctions/setlayeredwindowattributes.asp
http://www.sm.rim.or.jp/~shishido/walpha.html
0034デフォルトの名無しさん
05/02/13 19:28:04DirectGraphicsを使う。
0035デフォルトの名無しさん
05/02/13 20:07:100036デフォルトの名無しさん
05/02/13 21:51:51ソースが汚く、分かりにくいかもしれないけど、参考にどうぞ。
ビットマップは、ソースと同じパスに置いて、
そのファイル名に合わせて、マクロを変更してください。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/210.txt
0037デフォルトの名無しさん
05/02/13 22:29:400038デフォルトの名無しさん
05/02/13 22:56:43その時間は、SetTimerで時間をためているのですが、それを実行するとCPU使用率が100%になり重くなってしまいます。
他に時間をためれる関数は無いのでしょうか?
0039デフォルトの名無しさん
05/02/13 23:01:33そんな限定的な関数があってたまるか。
0040デフォルトの名無しさん
05/02/13 23:03:390041デフォルトの名無しさん
05/02/13 23:06:290042デフォルトの名無しさん
05/02/13 23:09:27タイマーの間隔がおなじなら別スレッドだろうが負荷100%になるんじゃねーの
0043デフォルトの名無しさん
05/02/13 23:12:12ありがとうございます
0044デフォルトの名無しさん
05/02/13 23:19:34タイマー無限増殖病か?
いずれにしても愚か者
0045デフォルトの名無しさん
05/02/13 23:29:18セットタイマーってことは、メッセージ投げまくってるってことでは?
メッセージが投げられない分スレッドのほうが軽いと思うが
0046デフォルトの名無しさん
05/02/14 00:08:31ワロタ
0047デフォルトの名無しさん
05/02/14 09:42:00ありますでしょうか?
0048デフォルトの名無しさん
05/02/14 11:06:190049デフォルトの名無しさん
05/02/14 11:07:280050デフォルトの名無しさん
05/02/14 14:56:43RichEditCtrlは、任意の場所に文字列を挿入するということはできないのでしょうか?
もしできるなら、その際に使用する関数(方法)を教えていただきたいのですが。
宜しくお願いいたします。
0051デフォルトの名無しさん
05/02/14 15:02:58EM_REPLACESEL
0052デフォルトの名無しさん
05/02/14 17:24:48そうゆうライブラリある?
たとえば、
functionA(”とうきょう");
と漢字変換させたいひらがなを引数として渡せば、漢字変換される漢字のリストがわかるみたいなもの。
自作のテキストエディタを作りたいんです。
0053デフォルトの名無しさん
05/02/14 18:01:450054デフォルトの名無しさん
05/02/14 18:44:46LONG ポインタ なんか なんか 文字列の略だと思ったんですが
CとTはなんですか?
0055デフォルトの名無しさん
05/02/14 18:48:290056デフォルトの名無しさん
05/02/14 18:53:13Cはconst
TはUnicodeビルドだとLPCWSTRになる。
0057デフォルトの名無しさん
05/02/14 19:04:45すみません、unicodeビルドというのがよくわからないんですが
TもしくはWは文字コードによって変わるということでしょうか?
0058デフォルトの名無しさん
05/02/14 19:35:46#ifdef UNICODE
typedef CHAR TCHAR;
#define TEXT(s) s
#else
typedef WCHAR TCHAR;
#define TEXT(s) L ## s
#endif
typedef CONST TCHAR FAR *LPCTSTR;
こういう風になっていて、UNICODEを定義してビルドするのがUnicodeビルド。
プログラムで使用する文字列をUnicodeにするかどうか選べる。
さらにAPIも〜Aと〜Wを切り替えるようにできている。(というよりこれのためにTCHARがあるような)
0059デフォルトの名無しさん
05/02/14 21:19:440060デフォルトの名無しさん
05/02/14 21:20:390061デフォルトの名無しさん
05/02/14 21:24:16\ WinAPIは本当に時代遅れなんですか? 無駄だから覚えないほうがいいんですか?
 ̄ ̄ ̄ ̄ ̄|/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
∧_∧ ∩
( ´∀`)/
_ / / /
\⊂ノ ̄ ̄ ̄ ̄\
||\ \
||\|| ̄ ̄ ̄ ̄ ̄||
|| ̄ ̄ ̄ ̄ ̄||
http://www.ziyu.net/~rent/tree/wforum.cgi?id=C_lan&mode=all_read&no=2355&page=10
0062デフォルトの名無しさん
05/02/14 21:30:010063デフォルトの名無しさん
05/02/14 21:32:35その話の本質は、「ふたりはプリキュア〜」でそ。
0064デフォルトの名無しさん
05/02/14 21:37:37でも、古いスタイルのメモリ割り当てより優れているし、winアプリ設計には必要な知識だ。全てを知る必要はないが。
0065デフォルトの名無しさん
05/02/14 21:38:00MacやLinuxなんて悲惨だぞ。
0066デフォルトの名無しさん
05/02/14 21:40:58>また、僕が時代遅れであると言うのは Win32 API の設計です。
>Win32 で作られたプログラムや、その開発者が時代遅れと言うわけではないので、この点は誤解しないでください。
>最後に、開発スタイルについて少し。
>個人に対して言えば、どうぞあなたの好きな言語とAPIを使ってくださいという程度です。
>しかし、組織でどの言語と API を使うかを決断するには、好き嫌いの次元ではいけません。
>プロジェクト管理者であれば、好みではなく純粋に生産性、移植性、安全性、目的、チームのレベル、
>教育のし易さなど、様々な観点から採用するプラットフォームを決断する必要があります。
From 齎禍
>確かに、Win32APIは時代遅れ感が滲み出てますね。
>フラグは使い過ぎ、キャストは乱用する、エラー処理は統一されていない・・・
>正直、これを現代風に上手くラップするには、相当な知識と技量が必要だと感じますね。
0067デフォルトの名無しさん
05/02/14 21:50:060068デフォルトの名無しさん
05/02/14 22:08:07次世代の何かがでたときに、足かせになるとは思えんのだがな。
0069デフォルトの名無しさん
05/02/14 22:21:34個人的にはWinAPIは覚えた方が良いと思われ(少なくとも、今勉強するなら)
0070デフォルトの名無しさん
05/02/14 23:26:31タイマー使ってMoveWindowか?
0071デフォルトの名無しさん
05/02/15 00:10:53それは単に順応能力がない人間の責任であって開発環境の問題ではないと思う。
仕事であろうと趣味であろうとひとつのパラダイムに縛られるのはすごくもったいないとは感じる。
そういう俺はWinAPI派なんだけどな。だってWindowsの標準的なクラスライブラリって無いじゃん。
有っても高価だったりするし。
フリーなライブラリはわりと特定の機能に特化されてたりして今ひとつなんだよな。
強力なクラスライブラリはUnix由来のポータビリティ優先でWindowsっぽさが無くて重かったりとか。
0072デフォルトの名無しさん
05/02/15 00:22:31目的を達成できればいい。
0073デフォルトの名無しさん
05/02/15 00:34:40WinFSってちょっとしか調べてないけど、どんなんだろ
0074デフォルトの名無しさん
05/02/15 00:39:53このダイアログの表示位置を指定(例えばデスクトップのセンターに)
する方法はありますか?
0075デフォルトの名無しさん
05/02/15 01:00:52WinFXだよ。
WinFSはファイルシステム。
0076デフォルトの名無しさん
05/02/15 01:06:27う、よく間違える。
0077デフォルトの名無しさん
05/02/15 01:07:180078デフォルトの名無しさん
05/02/15 01:14:29次期Winに魅力が無くなってしもたよ(´・ω・`)
0079デフォルトの名無しさん
05/02/15 06:41:330080デフォルトの名無しさん
05/02/15 07:14:23できるよ。
0081デフォルトの名無しさん
05/02/15 09:34:17インターネットを閲覧出来ないようなプログラムを作ろうと思っています。
ですが、どういう風にすれば「ネットが出来なくなる」かが、分かりません。
VBでは不可能でしょうか?
0082デフォルトの名無しさん
05/02/15 09:40:28ExitWindowsEx(EWX_POWEROFF, 0)
0083デフォルトの名無しさん
05/02/15 09:47:37モデム側で何とかすべきじゃね?
モデムを家電用のタイマーと連動させておくとか。
0084デフォルトの名無しさん
05/02/15 10:44:33008581
05/02/15 11:38:29子供のネットの時間規制かけたいと頼まれたもんで。
家電タイマーとかがついてると「あからさまに怪しい」って疑われるので、
それはパスしたいんですよ。
「夜はトラフィック込んでてつながりにくい〜」と錯覚させるように、
こっそり忍ばせたいので。。。
ルータ越しに繋いでるんでLANボードの動作を停止させるとかでもいいんだけど、
実行中のプロセスだろうから止めれるのかな〜とか。
0086デフォルトの名無しさん
05/02/15 12:02:060087デフォルトの名無しさん
05/02/15 12:13:49インターネット接続の可否って決定できるような気はする。
再起動が必要な可能性はある。
また、めっせーじが「この操作は管理者によって禁止」
とか出ると思う。
あと、ネットワークデバイスを無効にするとか、
ぱっと思いついただけだが、やりようはナンボでもありそう。
0088デフォルトの名無しさん
05/02/15 12:14:14hPrinterDC.CreateDC(〜,pDevMode);
StartDoc(hPrintedDC,〜);
hfont=CreateFont(1000,0,〜);
SelectObject(hPrinterDC, hfont);
SetTextColor(hPrinterDC, RGB(255,0,0));
TextOut(hPrinterDC, 0, 0, "インターネットはX時からX時まで");
EndDoc(hPrinterDC);
0089デフォルトの名無しさん
05/02/15 12:17:55>ルータ越しに繋いでるんでLANボードの動作を停止させるとかでもいいんだけど、
なら、デフォルトゲートウェイ消すとか
というか、その手のフィルタリングソフトって探せばいくらでもありそうな希ガス
0090デフォルトの名無しさん
05/02/15 12:21:26IEだけ殺せればいいなら、コンパネのインターネット設定で
制御できる項目をいじるのが良い。
全部まとめてならTCP/IPの設定あたりがいいかな。
0091デフォルトの名無しさん
05/02/15 12:24:28寧ろ、きちんと言い聞かせるなりして露骨にモデムの電源落とす方が躾にはなる。
勿論、頭ごなしに禁止するのが一番いかんのだが。
0092デフォルトの名無しさん
05/02/15 12:27:300093デフォルトの名無しさん
05/02/15 12:32:44自分のローカルIPはすぐに調べられたのですが、
グローバルIPはどのようにすれば調べられるのでしょうか?
また、調べられた結果、火壁との兼ね合いはどうなるのでしょう?
宜しくお願いします。
0094デフォルトの名無しさん
05/02/15 12:34:420095デフォルトの名無しさん
05/02/15 12:42:57UPnP対応ルータからならとれる、はず。
0096デフォルトの名無しさん
05/02/15 12:48:36引き篭もる動機を与えることになる。
ネットやPCが無かったら、引き篭もりなんか出来ないんだから。
009793
05/02/15 12:50:55char ac[80];
gethostname(ac, sizeof(ac));
gethostbyname(ac);
で調べられるのですが、グローバルIPアドレス(*1)
(ルータのWAN側IPアドレス≠MACアドレス)
はどうやって知ればいいのかが分かりません。
また知ることができたとしてもクライアントが*1でLAN外部から繋げた時
火壁が問答無用でメッセージを排除してしまうものなのでしょうか?
0098デフォルトの名無しさん
05/02/15 12:57:41HTTPなりtelnetなりでその画面を呼び出して解析汁
最後の文は相変わらず意味不明
0099デフォルトの名無しさん
05/02/15 13:01:49表示してるのですが、配列aのx番目の要素にフォーカスかキャレットが
来たのことを判別する方法はありますか?教えてください
0100デフォルトの名無しさん
05/02/15 13:05:14だーかーらー、UPnP使わないと取得できないんだってば。
UPnP詳しいことは知らんけど。
それ以外の方法だと、グローバルにそういうサービス立てるか
ルータのWEB設定画面から返された文字列を解析とか
そういう汚い汎用性に欠ける方法しか思いつかん。
0101デフォルトの名無しさん
05/02/15 13:08:45というウィンドウを出す
0102デフォルトの名無しさん
05/02/15 13:10:38OSが管理してない情報はAPIを使っても取得できません
0103デフォルトの名無しさん
05/02/15 13:43:43010481
05/02/15 15:20:15当初、NICを無効にするのもアリかなーって思ったんだけど、
それらしきやり方見つからなかったので。。。
>>90
インターネットの設定をレジストリで換えるってのはやってみたんですが、
IEを開いてる状態で、レジストリのほうのプロキシ換えても、
その最初に開いてるIEには反映されないんですよ。
0105デフォルトの名無しさん
05/02/15 15:26:19予言しよう
そういう育て方するとガキは引きこもる
うちの弟同じ事やられて切れて引きこもり中
0106デフォルトの名無しさん
05/02/15 15:36:17>インターネットの設定をレジストリで換えるってのはやってみたんですが、
直接レジストリじゃなくて InternetSetOption 関数とか使うべきだろうね。
開いてるIEにまで適用されるかどうかは知らない。
0107デフォルトの名無しさん
05/02/15 15:38:38だけどな。
0108デフォルトの名無しさん
05/02/15 15:45:00NICを無効にするなら、
INetConnectionのDisconnectとか
↓のAPIでゴソゴソやるとか
SetupDiGetClassDevs
SetupDiEnumDeviceInfo
SetupDiSetClassInstallParams
SetupDiCallClassInstaller
0109デフォルトの名無しさん
05/02/15 15:46:49>IEを開いてる状態で、レジストリのほうのプロキシ換えても、
>その最初に開いてるIEには反映されないんですよ。
設定を変更するスクリプトをSYSTEM権限の
スタートアップサービスとかにすればいいじゃん
というかスレ違い
0110デフォルトの名無しさん
05/02/15 15:55:59protected:
virtual unsigned WINAPI ThreadProc(void);
public:
static unsigned WINAPI ThreadCall(void* p);
};
unsigned WINAPI thrbase::ThreadCall(void* p){
return reinterpret_cast<thrbase*>(p)->ThreadProc();
}
unsigned WINAPI thrbase::ThreadProc(void){
return 0;
}
スレッド関数をメンバ化するために作った静的関数ThreadCallと、その処理内容ThreadProcが↑
そこでこのThreadProcをオーバーライドして使いまわしたいのです。
ThreadProcにvirtualをつけて継承しようとすると、ビルドは問題無く通るものの
実行してみるとUnhandled exceptionが出てうまく動きません。
どうか知恵を授けてぐたさい。
0111デフォルトの名無しさん
05/02/15 16:01:420112デフォルトの名無しさん
05/02/15 16:01:480113デフォルトの名無しさん
05/02/15 16:10:03#include "stdafx.h"
#include "thrbase.h"
class potato : public thrbase{
unsigned WINAPI ThreadProc(void);
};
unsigned WINAPI potato::ThreadProc(void){
MessageBox(0,TEXT("test"),0,MB_OK);
return 0;
}
スレッドはWinMainから_beginthreadexで呼び出しています。
_beginthreadex(0, 0, &potato::ThreadCall, &dwID, 0, &dwID);
0114111
05/02/15 16:16:160115デフォルトの名無しさん
05/02/15 16:16:510116デフォルトの名無しさん
05/02/15 16:17:010117デフォルトの名無しさん
05/02/15 16:20:40beginthreadexの方かっ。。。
…と言われてもすぐにわからないへたれなので今からマニュアルと格闘してきます。
ありがとうございます。
0118デフォルトの名無しさん
05/02/15 17:02:060119デフォルトの名無しさん
05/02/15 17:05:54リソースファイルに基づいてリソースを埋め込む
何が知りたいかよく分からんが、
HELP hHelp;
hHelp=Google( TEXT("リソーススクリプト") );
0120デフォルトの名無しさん
05/02/15 17:08:510121デフォルトの名無しさん
05/02/15 18:04:01>beginthreadex(0, 0, &potato::ThreadCall, &dwID, 0, &dwID);
potato::ThreadCallに&がついとる。
(staticな)メンバ関数のアドレスは通常のC関数と同じく&いらんよ
beginthreadex(0, 0, potato::ThreadCall, &dwID, 0, &dwID);
でおk
WinAPIっつーよりC++の基本的問題というか
0122デフォルトの名無しさん
05/02/15 18:05:06ばか
0124デフォルトの名無しさん
05/02/15 19:54:320125デフォルトの名無しさん
05/02/15 21:44:20アクセス確認ダイアログが出てくるため、これを自動で「はい」ボタンを押してくれる
プログラムを作成しているのですが、下記のようなプログラムでうまくいきません。
ボタンを連打するとたまに反応する程度で、ループさせても閉じてくれません。
ほかにもWM_LBUTTONDOWN、WM_LBUTTONUPを使用したりALT+Yを送る等
しましたが、こちらの環境ではうまくいきませんでした。
なお、「いいえ(&N)」、「ヘルプ(&H)」に対しては正常に効きます。
ネットで調べてみたものの、ClickYesというアプリ(?)使用することで解決している人が多いようですが
自分で作成したいと思っているので、どなたか力を貸してもらえないでしょうか?
よろしくお願いします。
Express ClickYes
http://www.contextmagic.com/express-clickyes/
0126125
05/02/15 21:44:50Private Sub Click_Yes()
Dim wnd As Long
Dim wndYes As Long
wnd = FindWindow(vbNullString, "Microsoft Outlook")
If wnd <> 0 Then
wndYes = FindWindowEx(wnd, 0, "Button", "はい(&Y)")
End If
SendMessage ByVal wnd, ByVal WM_COMMAND, ByVal (BN_CLICKED * &H10000 + GetDlgCtrlID(wndYes)), wndYes
End sub
Private Sub Command_Click
Call Click_Yes()
End Sub
環境
OS :WinXP Pro
言語:VB6.0
その他:Outlook2000
0127デフォルトの名無しさん
05/02/15 21:51:39メモリマップトファイルで共有メモリをつくり、そこにアセンブラのコードを書き込んで、
それを実行させることはできますか?
つまり
・メインスレッドの開始のアドレスを取得し、
・そのアドレスのコードを書き換え、共有メモリのコードにジャンプさせ、
・自分の関数を処理させた後、
・再び開始アドレスに元のコードを戻し、
・そこにジャンプさせる
開始アドレスの取り方とか、そのためのAPIとか、そういうことをやっているページとか、
ヒントをいただけないでしょうか。
よろしくお願いします。
0128デフォルトの名無しさん
05/02/15 22:08:320129デフォルトの名無しさん
05/02/15 23:17:440130デフォルトの名無しさん
05/02/15 23:17:58通報しますた
0131デフォルトの名無しさん
05/02/15 23:36:530132デフォルトの名無しさん
05/02/16 00:03:20理由言ってみ?
0133デフォルトの名無しさん
05/02/16 00:31:53俺ならネット関連のAPIをフックして常に失敗したことにする。
タスクトレイとかから見えなくするのに一工夫いるかもしれない。
0134デフォルトの名無しさん
05/02/16 00:50:16どこでしょうか?
0135デフォルトの名無しさん
05/02/16 11:57:01他プロセスのウィンドウへのSendMessage(パラメータでアドレスlpIntを渡す)
について以下の2パターンを試したところ、1はNG、2はOKでした。
1.プロセス毎メモリ空間(0x04000000〜0x41ffffff)の利用
lpIntLocal = (int *)API.HeapAlloc(ph1, API.HEAP_ZERO_MEMORY, 80);//メモリのアロケート
hMyWnd = API.FindWindow (null, "Test"); //自ウィンドウハンドルの取得
ReturnValue = API.GetWindowThreadProcessId (hMyWnd, &hProc); //自プロセスハンドルの取得
lpInt = (int*)API.MapPtrToProcess(lpIntLocal, hProc); //他プロセス受け渡し可能なアドレスの取得
※自プロセス以外を指定してMapPtrToProcessを実行するとエラー発生。
2.メモリマップファイル領域(0x42000000〜0x7fffffff)の利用
hFileMap = API.CreateFileMapping (0xffffffff, 0, API.PAGE_READWRITE, 0, 80, 0);
lpInt = (int*)API.MapViewOfFile (hFileMap, API.FILE_MAP_WRITE, 0, 0, 0);
0136デフォルトの名無しさん
05/02/16 11:57:46ttp://bbs.wince.ne.jp/ch1/mqbbs.cgi?UMODE=BETA&FILE=bbs.log.120
0137デフォルトの名無しさん
05/02/16 13:33:16EM_GETSELTEXTだと取得できません。なぜでしょうか?
0138137
05/02/16 13:47:510139デフォルトの名無しさん
05/02/16 14:42:120140デフォルトの名無しさん
05/02/16 15:10:230141デフォルトの名無しさん
05/02/16 16:46:13あれってどうやってだすの?
0142デフォルトの名無しさん
05/02/16 16:53:240143デフォルトの名無しさん
05/02/16 18:03:32変数xの中身をいじらないでエディットコントロールに転送したときに
等間隔(1文字おきとか)に空白入れる方法ありますか?教えてください
0144デフォルトの名無しさん
05/02/16 20:17:16変数xの中身をいじらないで等間隔(1文字おきとか)に空白入れる方法ありますか?
ってことかな?
変数yを作ってxをコピーしていじれば?
0145デフォルトの名無しさん
05/02/16 20:21:11やってることは>>144と同じようなもんだが。
0146デフォルトの名無しさん
05/02/16 20:34:37なんかフラグをたてれば勝手にやってくれるといいなー
なーんて甘いことは考えてないよな
一文字ごとといっても、半角・全角は気をつけるように。
0147143
05/02/16 20:46:520148デフォルトの名無しさん
05/02/16 20:57:100149デフォルトの名無しさん
05/02/16 20:58:28GDIを直接呼べばそういうこともできるが、ただのエディトコントロールにはそういう機能はない。
リッチエディットコントロールでならできるかもしれない。IEコンポーネントなら間違いなくできる。
どんどん敷居が上がっていく罠。
0150デフォルトの名無しさん
05/02/16 21:04:330151デフォルトの名無しさん
05/02/16 21:10:170152デフォルトの名無しさん
05/02/16 21:39:141番最初に144が言っていた1文字おきに空白を入れる方法が1番楽。
Unicodeを使えば全角・半角を気にする必要も無い。
std::vector<WCHAR>やstd::wostringstreamも便利。
0153デフォルトの名無しさん
05/02/16 21:42:500155デフォルトの名無しさん
05/02/16 21:59:21どんなエンコーディングルールでも、「2文字で1文字表す」ってのはまず無いと思う。
2バイトで1文字とか、2ワードで1文字とかならともかく。
0156デフォルトの名無しさん
05/02/16 22:09:580157デフォルトの名無しさん
05/02/16 22:11:21サロゲートのこと?
現在のところ、日本語にサロゲートを使う文字は
存在しなかったと思う・・・。
将来的にはわからんが。
0158デフォルトの名無しさん
05/02/16 22:14:15○エジットコントロール
0159デフォルトの名無しさん
05/02/16 22:18:38×エディットコントロール
×エジットコントロール
○EditControl
0160デフォルトの名無しさん
05/02/16 22:19:43実装がどうなってるのかはしらんが。
0161デフォルトの名無しさん
05/02/16 22:25:22「吉」の上が「土」になってるやつは、UTF-16だとサロゲートペアになるようだけど、
これはD840+DFB7の2ワードで1文字を表しているわけで、別に2文字なわけではない。
0162デフォルトの名無しさん
05/02/16 23:19:40ウィンドウプロシージャに渡す前に破棄したいのですが
どうすればいいんでしょうか?
今はメッセージをWM_NULLに書き換えることで対処しています。
0163デフォルトの名無しさん
05/02/16 23:34:54渡さなければいいんじゃないの?
0164デフォルトの名無しさん
05/02/16 23:38:000165デフォルトの名無しさん
05/02/16 23:39:20CallNextHookEx呼ばすにreturnしとけば?
0166162
05/02/17 05:19:50メッセージは流れてしまいます。
後ろのフックには処理が渡らないので、Spy++からは
見えなくなりますが。
0167デフォルトの名無しさん
05/02/17 05:46:040168デフォルトの名無しさん
05/02/17 07:18:15目的のメッセージ(WM_SYSKEYDOWN)は元々ウィンドウプロシージャには
渡さずにメッセージループ内で処理しているようです。
なので、PeekMessageの段階でキューからそのメッセージだけを直接的に
削除する手段はないかと探していたのですが、どうもWM_NULLに置き換える
という方法が一般的なようです。
以下、CodoGuruのWM_NULLの説明より
WM_NULL also is used to filter messages in the WH_GETMESSAGE hook. Returning 0 from a hook does not prevent you from processing a message. Replacing a message with WM_NULL will filter the message properly.
0169デフォルトの名無しさん
05/02/17 09:34:56msecのウエイトってどうやってやればいいんですか?
該当するAPIってあるんですか?
0170デフォルトの名無しさん
05/02/17 09:40:15元スレに断らずに移動するような香具師には教える気はありません。
つーか、MSDN位読めや。
0171デフォルトの名無しさん
05/02/17 09:47:28それはスイマセンでした。
MSDN読んでも分からないので教えて下さい。
0172デフォルトの名無しさん
05/02/17 10:04:12どこを読んでいいか分からないなら別だろうけどな
0173デフォルトの名無しさん
05/02/17 10:13:08マイコン関連だとウエイト関数が用意されているんで、使い方が
良く分からないんです。
0174デフォルトの名無しさん
05/02/17 12:17:14とりあえずウェイトしたい時間と要求する精度をはっきりさせれ。
0175デフォルトの名無しさん
05/02/17 12:20:350176デフォルトの名無しさん
05/02/17 12:34:07目的は、_outp()を使ってパラレルポートから通信用のパルス信号を出力したいんですが、
パルス幅を作る為にウエイトしたいんです。パルスは"L"が4.7us、"H"が4.0usです。
パルスの出力方法として、具体的に他の方法があるのでしたら教えて下さい。
0177デフォルトの名無しさん
05/02/17 12:39:28で、
>パルスは"L"が4.7us、"H"が4.0usです。
ってどこがどうパルスなのかと小一時間(以下略
つーか素直にこっちに行け。
制御系なら俺に聞いてもいいぜ(6)
http://pc5.2ch.net/test/read.cgi/tech/1099574832/
0178デフォルトの名無しさん
05/02/17 12:49:58ミリ秒だって不安なのに・・・
0179デフォルトの名無しさん
05/02/17 12:58:470180デフォルトの名無しさん
05/02/17 17:23:25ノ
0181デフォルトの名無しさん
05/02/17 17:27:520182デフォルトの名無しさん
05/02/17 18:01:24>ポートアドレス 0-0x3ff の範囲にある大抵のポートへの I/O 命令は
>実際のところほぼ正確に 1 マイクロ秒かかります。だから例えば
>パラレルポートを直接扱っている場合なら、ディレイを作るためには
>そのポートに対して inb() をいくつか追加するだけでいいわけです。
0183デフォルトの名無しさん
05/02/17 18:01:52ユーザの計時関数呼び出しの間隔がずれただけではないか?
そもそもどうやってCPUのカウンタがずれたと確認するのかと小一時間
0184デフォルトの名無しさん
05/02/17 18:04:38http://crystalmark.info/special/clock.html
0185デフォルトの名無しさん
05/02/17 18:18:38おいおい・・・、相当に痛いな。ワロタ
0186デフォルトの名無しさん
05/02/17 18:25:05己自身に絶対価値を付与するあたりが、まるで朝日新聞のようだ。
0187デフォルトの名無しさん
05/02/17 18:29:10あの雑誌は凄く面白かったから、今でも全巻欲しいと思ってる。
英語版ならWebでも読めるが。
っていうか、その精度のウェイトを求めるなら、間にPICとかを挟んで
そっちに制御させるべき。
0188デフォルトの名無しさん
05/02/17 18:34:090189デフォルトの名無しさん
05/02/17 18:44:33スレ違い。
VCスレででも聞け。
まぁ恐らくはCでコンパイルしようとしているか警告が出ただけじゃないかとは思うのだが。
0190デフォルトの名無しさん
05/02/17 20:20:35GetGlyphOutlineW(Unicode)をGGO_GRAY8_BITMAPでコールしたとき、ホワイトスペース系の
文字はGLYPHMETRICSのgmBlackBoxXおよびgmBlackBoxYに実際の幅が入りません。
ですからスペースだけは別にGetTextExtentPoint32で幅を取りにゆく方法もありますが、
本当にそうやって幅を取得すべき文字は半角/全角スペースだけでよいのか、わかりません。
すばらしい解決策がありましたら、ご享受願います。
あ、gmCellIncXでいいのか、事故解決しました。スマソ。
0191デフォルトの名無しさん
05/02/17 22:03:27自己解決してるようだが補足しておくと、gmBlackBoxXとgmBlackBoxYは
文字の大きさじゃないぞ。
文字を表すピクセルを囲む最小限の矩形の大きさだ。
だからスペースのようにピクセルが存在しないものは0になる。
文字送りはスペースに限らずgmCellIncXとgmCellIncYで行う。
0192デフォルトの名無しさん
05/02/17 22:10:42019474
05/02/18 01:24:31いろいろ悩んでみたんですが、どうも自己解決できません。
小細工するのでしょうか?厨でスマソ
0195デフォルトの名無しさん
05/02/18 01:29:0780じゃないし想像ですまんが
コールバック関数使ってBFFM_INITIALIZEDのときにMoveWindowで動かしてやればいいと思う
0196sage
05/02/18 11:17:02SystemParametersInfo(SPI_SETNonClientMetrics 0,
&NonClientMetrics, SPIF_UPDATEINIFILE or SPIF_SENDWININICHANGE );
とすると、タイトルバーの縦サイズがWindows2000等よりも大きい為に、
タスクトレイのアイコンが勝手に大きくなってしまいます。
WindowsXPのタイトルバー縦サイズ・・・25
Windows2000のタイトルバー縦サイズ・・・18
SystemParametersInfoを設定しても、アイコンが大きくならないようにする方法を
ご存知でしたら教えて頂けないでしょうか。
よろしくお願いいたします。
0197デフォルトの名無しさん
05/02/18 17:08:37どうしたらいいでしょうか?
構造体とかC++だと使えないからPOINTとか使えないと思うんですが
WinMainとかプロシージャ-とかはそのまま使えますか?
0198デフォルトの名無しさん
05/02/18 17:12:100199デフォルトの名無しさん
05/02/18 17:19:33C++でも構造体は使える。
それどころかstructとclassの違いはデフォルトでpublicかprivateか、それだけ。
0200デフォルトの名無しさん
05/02/18 17:52:480201デフォルトの名無しさん
05/02/18 18:23:08なんてことを平気でやってるな。
0202デフォルトの名無しさん
05/02/18 18:23:550203デフォルトの名無しさん
05/02/18 19:06:58何かまずいの?
0204デフォルトの名無しさん
05/02/18 19:20:00201 は 200 へのレスだろ
0205デフォルトの名無しさん
05/02/18 20:37:20楽器の名前一覧を取得するAPIはありますか?
関係しそうなAPIはmidiOutGetDevCapsしか見つかりませんでした。
http://www.microsoft.com/japan/msdn/library/ja/jpmltimd/html/_win32_midioutgetdevcaps.asp
どうも、MIDIOUTCAPSには無さそうなのですが……
0206デフォルトの名無しさん
05/02/18 20:49:09ないよ。
0207デフォルトの名無しさん
05/02/18 20:54:14http://www112.sakura.ne.jp/~kaientai-project/creategame.htm
2chスレ
http://game10.2ch.net/test/read.cgi/mmominor/1108379282/l50
くすぶってないで、自分の力を試してみよう!!
0208デフォルトの名無しさん
05/02/18 21:01:170209デフォルトの名無しさん
05/02/18 22:13:44どもです。
リソースファイルにでも書き込んでおきます。
0210デフォルトの名無しさん
05/02/18 23:20:25midiOutShortMsgで音源にプログラムチェンジメッセージ送るだけじゃないのか?
楽器の名前はGM規格準拠の音源なら0から127まで楽器の配置は決まってる。
0211デフォルトの名無しさん
05/02/18 23:43:33>楽器の名前一覧を取得するAPIはありますか?
0212デフォルトの名無しさん
05/02/19 00:11:55http://www.symantec.com/region/jp/avcenter/security/content/12095.html
GDI+のバグより、LoadImageの方がよっぽどヤダ
0213デフォルトの名無しさん
05/02/19 01:53:16画像の描画なんですが、普通
a = (HBITMAP)LoadImage(NULL, "test.bmp", IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION | LR_LOADFROMFILE);
b = (HBITMAP)LoadImage(NULL, "test1.bmp", IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION | LR_LOADFROMFILE);
c = (HBITMAP)LoadImage(NULL, "test2.bmp", IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION | LR_LOADFROMFILE);
と読み込んで
SelectObject(hMemDC, a);
BitBlt(hdc, 0, 0, 100 100, hMemDC, 0, 0, SRCCOPY);
SelectObject(hMemDC, b);
BitBlt(hdc, 0, 0, 100, 100, hMemDC, 0, 0, SRCCOPY);
SelectObject(hMemDC, c);
BitBlt(hdc, 0, 0, 100, 100, hMemDC, 0, 0, SRCCOPY);
みたいな感じで描画するみたいですが、
a = ( HBITMAP )LoadImage( NULL , "test.bmp" , IMAGE_BITMAP , 0 , 0 , LR_LOADFROMFILE | LR_CREATEDIBSECTION );
SelectObject(BhMemDC, a);
BitBlt(hdc, 0, 0, 100, 100, hMemDC, 0, 0, SRCCOPY);
a = ( HBITMAP )LoadImage( NULL , "test1.bmp" , IMAGE_BITMAP , 0 , 0 , LR_LOADFROMFILE | LR_CREATEDIBSECTION );
SelectObject(BhMemDC, a);
BitBlt(hdc, 0, 0, 100, 100, hMemDC, 0, 0, SRCCOPY);
a = ( HBITMAP )LoadImage( NULL , "test2.bmp" , IMAGE_BITMAP , 0 , 0 , LR_LOADFROMFILE | LR_CREATEDIBSECTION );
SelectObject(BhMemDC, a);
BitBlt(hdc, 0, 0, 100, 100, hMemDC, 0, 0, SRCCOPY);
みたいな感じで描画してはいけないのでしょうか?
処理速度などはどうなのですか?
分かる方お願いします。
0214デフォルトの名無しさん
05/02/19 02:56:53処理速度は、ほとんど変わらないけど…
DeleteObjectしたり、SelectObjectで
戻ってきた値をSelectObjectしなおしたり
しなくても良いのか?
0215デフォルトの名無しさん
05/02/19 05:46:05なんでそんなこと気にすんの?
0216デフォルトの名無しさん
05/02/19 10:35:27SetROP2 で R2_NOT を指定すればいいことを知ったのですが
Rectangle などの図形描画には使えるのですが
DrawText などの文字描画では色が反転されません。
反転色で文字列を描くにはどうすればいいのでしょうか。
0217デフォルトの名無しさん
05/02/19 12:29:210218デフォルトの名無しさん
05/02/19 12:52:14ども^^
下の方法だと時間がたつにつれ重くなったんで・・・・
原因はなにかなと思って聞いてみました。
0219デフォルトの名無しさん
05/02/19 12:57:510220デフォルトの名無しさん
05/02/19 13:06:03ReleaseDC(hwnd,work_hdc);
DeleteDC(BhMemDC);
DeleteObject(Bitmap);
みたいな感じに書くんですよね?
0221デフォルトの名無しさん
05/02/19 13:16:120222デフォルトの名無しさん
05/02/19 13:18:500223デフォルトの名無しさん
05/02/19 13:21:01ごめんなさい、質問の仕方がまずかったですね
WNDCLASSEX構造体のlpszClassNameってプログラム中ではどういった働きをするんですか?
あと、普通はどういう内容にするのでしょう?
0224デフォルトの名無しさん
05/02/19 13:22:34みたいにしておくと、外部プロセスからアプリを探すときに
楽かもしれんね。
0225デフォルトの名無しさん
05/02/19 13:25:04考え方としてはそう。
わかってると思うけど、その三行だけでは、213に書かれた内容に対応したものにはならないから
とりあえずタスクマネージャのGDIオブジェクトの列を出しておくと、わかりやすいよ
0226デフォルトの名無しさん
05/02/19 13:28:07ありがとうございますっ!
0227デフォルトの名無しさん
05/02/19 13:36:06CreateWindow(Ex)で使うだろ。
と言う俺もアトム派。
0228デフォルトの名無しさん
05/02/19 13:42:50そうなんですか?
一応GDIオブジェクトの列を表示にしましたが、どれがそうなのかワカラナイです^^;
なにが足りないのでしょうか?
0229デフォルトの名無しさん
05/02/19 14:05:490230デフォルトの名無しさん
05/02/19 14:16:52凄い勢いであがていきます・・・・
0231デフォルトの名無しさん
05/02/19 16:04:26にはどうしたらいいんですか?
0232デフォルトの名無しさん
05/02/19 16:33:45214さんがサラリとかいてあるのだが・・・
作ったオブジェクトは、SelectObjectしたままでは消せない。
ので、
一番最初にSelectObjectしたときの返り値を保存しておく(*)。
消すときには、保存しておいたものをSelectObjectし、
作ったオブジェクトは、全部Selectされてない状態にする。
そうしてから消す。
*返り値に何が入ってるかはちゃんと勉強しておいてね
しかし、きちんと消してないなら
213の上も下もGDIが酷いことになりそうな気がするんだが・・・
0233231
05/02/19 16:34:000234デフォルトの名無しさん
05/02/19 16:34:45概出
http://web.h-is.com/~gaia/bbs/test/read.cgi/uo_tool/1085572740/155
0235デフォルトの名無しさん
05/02/19 16:36:33解決報告するだけマシ
0236デフォルトの名無しさん
05/02/19 17:04:31WinMainやmainなどのエントリーポイントに突入するところでフックするには
どうすればよいでしょう?
0237デフォルトの名無しさん
05/02/19 17:11:550238デフォルトの名無しさん
05/02/19 17:17:31FindWindowで取得しようとすると必ず後に起動したウインドウハンドルしか取得してくれないのですが、
このような場合はどのようにしたら良いのでしょうか?
0239デフォルトの名無しさん
05/02/19 17:21:12EnumWindows
0240デフォルトの名無しさん
05/02/19 17:21:35EnumWindows
0241デフォルトの名無しさん
05/02/19 17:22:02ありがとうございます。便利な関数あるもんですね・・・
0242デフォルトの名無しさん
05/02/19 17:22:330244デフォルトの名無しさん
05/02/19 17:52:42242じゃないが、どんな問題があり得ます?
0246デフォルトの名無しさん
05/02/19 18:41:20なるほど、こういうのですね……。ありがとうございました。
>すべての子ウィンドウを取得する場合、EnumChildWindows 関数を使った方が
>GetWindow 関数をループ処理で呼び出すよりも信頼性の高い結果が得られます。
>GetWindow 関数を呼び出してウィンドウを列挙すると、無限ループに陥ったり、
>すでに破棄されているウィンドウのハンドルを参照する危険性がでてきます。
0247デフォルトの名無しさん
05/02/19 18:43:49便利と思えるとはある意味幸せな人だ。
ウィンドウ間・プロセス間で協調しなければならないマルチタスクOSなら
こういう関数が当たり前に提供されていなければ、
話にならない気がするがどうだろうか?
0248デフォルトの名無しさん
05/02/19 18:58:230249デフォルトの名無しさん
05/02/19 19:49:01あるはずのものが無かったりするとイライラする。
特にVBとか使ってるとそう思う。
0250デフォルトの名無しさん
05/02/19 21:01:05>>249
279の方に賛成かな
0251デフォルトの名無しさん
05/02/19 21:31:41がんばれ。
0252デフォルトの名無しさん
05/02/19 21:59:14どうすればいいんでしょうか?
SetWindowsHookEx を使ってもうまくいかないんだけど
0253デフォルトの名無しさん
05/02/19 22:03:03「お前がヘボいからだ」
としか言いようがないわけだが。
0254デフォルトの名無しさん
05/02/19 22:40:23void CALLBACK DeskletSetStatic(HWND hwndDesklet, bool staticValue)
{
typedef void (CALLBACK *DUMMY)(HWND,bool);
DUMMY HDeskletSetStatic = (DUMMY) GetProcAddress(GetModuleHandle(0),"DeskletSetStatic");
if(!HDeskletSetStatic)return;
HDeskletSetStatic(hwndDesklet,staticValue);
}
というコードがあるんですけど、
これっていったん呼び出されたら、永遠にループしちゃうんじゃないでしょうか??
ここはどんな処理をしてるのかサッパリです。詳しい方教えてください。よろしくお願いします。
0255デフォルトの名無しさん
05/02/19 22:55:45まずちゃんとC言語勉強してから作れ。
0256デフォルトの名無しさん
05/02/19 23:05:20そうか?
0257デフォルトの名無しさん
05/02/19 23:06:31このDeskletSetStaticという関数がDLLの呼び出し側(AveDesk)
にあるんだきっと。
それで、ここでは逆にDLLから本体の関数を呼び出してるんだ。
0258デフォルトの名無しさん
05/02/19 23:32:56GetModuleHandle(0)
しらべれば簡単にわかることなのにな。
0259デフォルトの名無しさん
05/02/20 00:14:39大方フック部分をDLLにしてない or しててもそのDLLとアプリ間でデータのやりとりができていないに一票。
0260デフォルトの名無しさん
05/02/20 01:11:52同じく。フック部分をDLLにしてないにもう一票。
0261デフォルトの名無しさん
05/02/20 02:53:461999年からタイムスリップしてきましたか?
0262デフォルトの名無しさん
05/02/20 03:01:2802/16からタイムスリップしてきましたか?
0263デフォルトの名無しさん
05/02/20 13:46:56例えると
リソースファイルに
"新規作成" IDM_NEW
とかさ
0264デフォルトの名無しさん
05/02/20 14:47:46デスクトップアイコンすべてを表示/非表示するプログラムを作ろうと
思っているのですが、手がかりがいまいちつかめません。
動作としてましては、
ディスクトップのなにも無いところで右クリック->[アイコンの整列]->[ディスクトップアイコンの表示]
で出来るのと同じことを、プログラムからしたいのです。
MSDNのSystemParametersInfoを呼んでみたのですが、それらしいものが
見つかりませんでした。
検索するとディスクトップのアイコンの表示や非表示するソフトは結構あるみたいでしたが、コードに
ついては見つけることが出来ませんでした。
キーワードやサイト等、なにか手がかりを教えていただけませんでしょうか。
0265デフォルトの名無しさん
05/02/20 14:57:05ハードディスク上ってこと?
0266デフォルトの名無しさん
05/02/20 15:05:470267デフォルトの名無しさん
05/02/20 15:05:55いえ、実際には存在しますが、デスクトップ画面には表示されないということです。
本当に消去するわけではありません。
ディスクトップ画面にはなにもアイコンは表示されない、
でも、エクスプローラでデスクトップフォルダをのぞくとちゃんと表示されるという状態です。
単純に壁紙が、ディックトップの前面に出てきて、アイコンが隠れてしまうようなイメージですかね。
ちゃんと回答できているか自身ありませんが、私がしようとしている動作は上記のようになります。
0268デフォルトの名無しさん
05/02/20 15:27:58○デスクトップ(desktop)
0269デフォルトの名無しさん
05/02/20 15:37:35>検索するとディスクトップのアイコンの表示や非表示するソフトは結構あるみたいでしたが
そのソフトがどうやってるのかSpy++で見ればわかるかもね。
やったこと無いけど、ウィンドウを最下面に配置してPaintDesktopで壁紙描画すればそれらしくなるんじゃない?
0270デフォルトの名無しさん
05/02/20 15:41:590271デフォルトの名無しさん
05/02/20 15:43:18こんなもんでどう?検証で書いたからそのまま載せる。
HWND hWnd = NULL;
hWnd = ::FindWindow( "Progman", "Program Manager" );
hWnd = ::GetTopWindow( hWnd );
hWnd = ::GetTopWindow( hWnd );
::ShowWindow( hWnd, SW_HIDE ); // to hide
// ::ShowWindow( hWnd, SW_SHOW ); // to show
あとは、SPYで該当ウィンドウの意味を調べて自分なりにアレンジしてくらさい。
0272271
05/02/20 15:48:34何かごにょごにょやるのが正統な方法なのかもしれないけど、
ちょっとそっちは見つけられなかった。
0273デフォルトの名無しさん
05/02/20 15:52:28そうですね、一度ソフトを落として、メッセージを見てみます。
>>270
レジストリを操作した場合、OSの再起動が必要になるんですよね。
再起動は出来るだけ避けたいと思っています。
>>271
ありがとうございます、早速ためさせていただきます。
0274デフォルトの名無しさん
05/02/20 15:54:39いまどき再起動しなくても変更されるよ
0275デフォルトの名無しさん
05/02/20 15:57:47「いまどき」は全く関係ありません。
0276デフォルトの名無しさん
05/02/20 16:06:10HKEY_CURRENT_USER
Software
Microsoft
Windows
CurrentVersion
Explorer
Advanced
HideIcons
0277デフォルトの名無しさん
05/02/20 16:07:03素晴らしい。
>ディスクトップ
>デスクトップ
>ディックトップ
0278デフォルトの名無しさん
05/02/20 16:07:26ありがとうございました。
いただきましたコードで動作しました。
あと、受け取りましたコードでハイドし、
[アイコンの整列]->[デスクトップアイコンの表示](正当な手順)で
Showすることができました。多分、同じしかけなのではないかと思います。
>一応参考までに、「ひょっとしたら」IActiveDesktop とかから
>何かごにょごにょやるのが正統な方法なのかもしれないけど、
>ちょっとそっちは見つけられなかった。
そうですね、頂きました、コードで表示をHIDEしても、OS側は内部でSHOWされてると
思ってるみたいです。どこかに、OSの記憶する内部状態と同期がとれるコードがあり
そうです。
基本的に、271さんに頂いたコードで、動作としては、ぜんぜんOKです。
使わせていただきます、本当にありがとうございました。
>>274
すみません、私が無知でした。
気分をがいされたかもしれませんが、私の不勉強でした
申し訳ございませんでした。そして、ありがとうございました。
0279デフォルトの名無しさん
05/02/20 16:11:53っていうかその方法だと再起動したらまた出てくるんじゃない?
0281デフォルトの名無しさん
05/02/20 16:27:091 《米古風》探偵,刑事,「でか」
a private 〜 私立探偵.
2 《俗》間抜け,やつ.
3 《俗》ペニス.
0282デフォルトの名無しさん
05/02/20 16:27:34上手く説明出来ませんが、Norton AntiVirusがやってるようなやつです。
IEにボタンを追加するのならレジストリいじれば出来るようでしたが、
作りたいのはファイルのリネームツールとかでして…。
0283デフォルトの名無しさん
05/02/20 16:38:40多分、シェル拡張(shell extension)
0284デフォルトの名無しさん
05/02/20 17:00:30オブジェクトハンドルのリストを取得できるのですが、
これと同じ情報を取得するにはどのAPI(テクニック?)を
使えばいいのでしょうか?
ProcessWalker
http://www001.upp.so-net.ne.jp/yamashita/product/pw4.htm
0285デフォルトの名無しさん
05/02/20 17:11:260286デフォルトの名無しさん
05/02/20 17:18:00単純なAPIは用意されておらずメモリ解析などしているんだと思いますが?
0287デフォルトの名無しさん
05/02/20 17:24:03sysinternalsに行ってみれば?
0288282
05/02/20 17:28:20ありがとう。
ググってみたらそれっぽいサイト見つけたので、のんびり調べてみます。
0289デフォルトの名無しさん
05/02/20 17:31:29失礼ですが、何か知っていて言っているんですか?
それとも何も知らないけど、とりあえず
MSDNやsysinternalsにあるかもと言っているだけなんですか?
0290デフォルトの名無しさん
05/02/20 17:34:030291デフォルトの名無しさん
05/02/20 18:32:200292デフォルトの名無しさん
05/02/20 18:33:12NtOpenHoge?
0293デフォルトの名無しさん
05/02/20 18:44:07VC++スレへどうぞ。
0294デフォルトの名無しさん
05/02/20 18:56:58IDeskBand
0295デフォルトの名無しさん
05/02/20 21:37:41例えばHeapFree(GetProcessHeap(),0,NULL);みたいにNULLポインタを渡すとか。
ただ単にエラーが返ってくるだけならいいが何か実害出たりしない?
0296デフォルトの名無しさん
05/02/20 22:10:38GetLastError() で試してみれば?
0297デフォルトの名無しさん
05/02/20 22:27:16Windowsに最初からあるのは48×48があるみたいだけど
Windowsのバージョンとかで変わってきたりする?
0298デフォルトの名無しさん
05/02/21 00:04:292000までは32x32
0299デフォルトの名無しさん
05/02/21 00:38:31ありがとう。
32でそろえます。
0300デフォルトの名無しさん
05/02/21 01:14:12switch(msg) {
case WM_CHAR
switch(wParam)
case ?
?の部分が分かりません・・・・
0301デフォルトの名無しさん
05/02/21 01:22:330302デフォルトの名無しさん
05/02/21 01:26:130303デフォルトの名無しさん
05/02/21 01:27:130304デフォルトの名無しさん
05/02/21 01:28:390305デフォルトの名無しさん
05/02/21 01:39:570306デフォルトの名無しさん
05/02/21 02:41:10case WM_CHAR:
switch(wParam) {
case 'Z':
case 'z':
case '\x1A':
あと適当に
}
}
0307デフォルトの名無しさん
05/02/21 03:01:090308デフォルトの名無しさん
05/02/21 03:06:23>>300
0309デフォルトの名無しさん
05/02/21 03:24:110310デフォルトの名無しさん
05/02/21 03:26:380311デフォルトの名無しさん
05/02/21 11:07:07"DWORD_PTR"ってどのインクルードファイルで定義されてるのでしょうか・・・
DX9SDKのDirectsoundを使うとき、windows.h、mmsystem.h、mmreg.h、dsound.hを
インクルードしたのですが、ビルド時に"DWORD_PTR"型が定義されてないと
怒られます
名前の通り*DWORDなんでしょうけど自分で定義するのもなんだし
DirectX7のdirectsoundはこれだけで通ったような気もするんだけどな・・・
依存関係がわかんねぇよウワァァァン
0312デフォルトの名無しさん
05/02/21 11:13:01http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winprog/winprog/windows_data_types.asp
Basetsd.hだそーだ
0313デフォルトの名無しさん
05/02/21 12:05:07PlatformSDKをいれてインクルードパス(優先順位に注意)通せば良いと思うよ。
0314デフォルトの名無しさん
05/02/21 12:12:28grepやfindが出来ないエディタ使ってるのか?
0315デフォルトの名無しさん
05/02/21 12:46:11放っといて下さい
0316311
05/02/21 12:58:18今PlatformSDKをインスコしております(PCがクソ遅くて眩暈)
なんかVC4+DX7とは勝手が違ってさっぱりだ…
0317デフォルトの名無しさん
05/02/21 13:05:08念のため書くけど、
PlatformSDKのBasetsd.hには定義されてて、
Basetsd.hはwindows.hをインクルードすればインクルードされるから、
#include <basetsd.h>とか書く必要ないからな。
0318デフォルトの名無しさん
05/02/21 13:26:02DWORD_PTR は>.311の想像とはまったく違っていて、「DWORDと何かへのポインタの両方を
情報の欠落無しに納めることの出来る整数」のこと。Win32 では普通のDWORDとほぼ同じ。
他にもLONG_PTRとか似たようなものがある。
0319デフォルトの名無しさん
05/02/21 13:49:550320311
05/02/21 13:49:59>>317
つまりまずはPlatformSDKを入れねばならんという事ですな…
>>318
盛大に勘違いしてますた('A`)
今PlatformSDKをインスコしてサーチパスを登録してビルドしたらエラー数が100を超えて中断しますた
もうだめぽ
PlatformSDKについてもうちょっと調べてみます
0321311
05/02/21 14:29:57なんでこんなに複雑になってんだyo…
0322デフォルトの名無しさん
05/02/21 15:39:090323デフォルトの名無しさん
05/02/21 15:44:58#define DWORD_PTR DWORD
が定義されているヘッダファイルについて書いただけね。
なんか、話が違ってきてるみたい。
0325デフォルトの名無しさん
05/02/21 16:33:200326デフォルトの名無しさん
05/02/21 17:06:06MFCやWTLのCString::LoadString()では
戻り値とバッファのサイズであれこれやってるね
0327デフォルトの名無しさん
05/02/21 17:07:46MSDN の記述。
>関数が成功すると、バッファにコピーされたバイト数 (ANSI 版) または文字数 (Unicode 版) が返ります
>(終端の NULL は含まない) 。
(…NULL とか間抜けな事が書いてあるが、そこは目を瞑って)
切り捨てられていなければ、
戻り値 < nBufferMax
のはず。
0328デフォルトの名無しさん
05/02/21 17:08:55バッファに1文字以上(1バイトじゃないよ)の余地があること。
マルチバイトならGetCPInfoで1文字の最大バイト数を調べる。
S-JISなら、\0の後に2バイト以上の余地があることを確認する。
でいいと思う。
たしかLoadStringは、最後の全角文字が分割されそうなときは先行バイトもロードしない。
だから\0の後方に1バイトの余地があるからといって、全体がロードできた証拠にはならない。
0329デフォルトの名無しさん
05/02/21 17:31:17そもそも切捨てが起こらないようにした方がいいよ。
0330デフォルトの名無しさん
05/02/21 18:16:54ダメってのは、dplay.hには宣言されてないのか?
上の質問では、その変数が定義されてないって質問しかしてないから、変化があったのに知らせないと誰も助けてくれないよ
まぁ、DirectSoundに関する質問ならスレ違いだけどね
(DX質問スレの方)
0331デフォルトの名無しさん
05/02/21 18:34:28328が完璧みたいですね、ありがとうございました。
0332デフォルトの名無しさん
05/02/21 18:57:51マウスポインタが上に来た時にモッコリさせるやり方、
または検索する為のキーワードを教えてください。
0333デフォルトの名無しさん
05/02/21 19:06:450334332
05/02/21 19:34:21色が白に変わってしまいますが(透けて親ウィンドウが見えている?)、
オンザモッコリは出来ている模様です。
ありがとうございました。
色が変わってしまう部分も、対処法が分かりましたらご報告します。
0335デフォルトの名無しさん
05/02/21 20:33:300336332
05/02/21 21:18:04LONG lStyle;
lStyle = GetWindowLong(hToolWnd, GWL_STYLE);
lStyle |= TBSTYLE_FLAT;
SetWindowLong(hToolWnd, GWL_STYLE, lStyle);
>>335
私も若かりし時(10代)はそういう事もありました。
0337デフォルトの名無しさん
05/02/21 21:24:00そのコード打ったのですが、なにも起こらないです・・・・・
0338デフォルトの名無しさん
05/02/21 22:07:02そりゃ、自分で何もしなければ何も起きない
0339デフォルトの名無しさん
05/02/21 23:34:340340デフォルトの名無しさん
05/02/22 01:02:56ホストウインドウ(AtlAxWin)をDestroyWindowしても呼び出されません。
0341デフォルトの名無しさん
05/02/22 01:13:55OutProcでIE(など)を開き、それがユーザ操作で終了したとき。
開くとこまではこんなソース。
↓
CLSIDFromProgID(L"InternetExplorer.Application", &clsid);
CoCreateInstance(clsid, NULL, CLSCTX_ALL,IID_IUnknown, (LPVOID *)&pUnknown);
0342デフォルトの名無しさん
05/02/22 01:34:15分かりました、ありがとうございます。
自分のアプリケーションへの埋め込みブラウザの場合、IEと同様な動作を期待するなら適切なタイミングで自分で発行してやるってことですね?
0343デフォルトの名無しさん
05/02/22 04:09:380344デフォルトの名無しさん
05/02/22 04:23:150345デフォルトの名無しさん
05/02/22 04:35:27はぁ?文盲は黙ってろデブ
0346デフォルトの名無しさん
05/02/22 05:11:100347デフォルトの名無しさん
05/02/22 05:33:520348デフォルトの名無しさん
05/02/22 05:44:400349デフォルトの名無しさん
05/02/22 05:46:410350デフォルトの名無しさん
05/02/22 06:03:02ざっと検索した範囲だと、ホストから実装して、Invokeをオーバーライドするみたいな事が書いてあるようなのですが、
CAxWindow::SetExternalDispatchで外部ディスパッチを指定すれば
そこでダウンロードコントロールをいじれるんじゃないかなという気がして試してみたいのですが、、
ここで必要なディスパッチインターフェイスをどうやって用意するべきか分かりません。
何か良いサンプルはありませんか?
0351デフォルトの名無しさん
05/02/22 06:23:380352デフォルトの名無しさん
05/02/22 10:06:51文盲
0353デフォルトの名無しさん
05/02/22 10:56:09粘着
0354デフォルトの名無しさん
05/02/22 12:11:03ぬるぽ
0355デフォルトの名無しさん
05/02/22 12:15:32ガッ
0356デフォルトの名無しさん
05/02/22 13:02:11あ、すいませんATLスレでしたorz
0357デフォルトの名無しさん
05/02/22 15:09:09円の内側を描くようにするためには、どのAPIをつかえばいいのでしょうか?
0358デフォルトの名無しさん
05/02/22 15:11:24Ellipse
Ellipse
1 個の楕円を描画します。
指定された外接長方形の中心が楕円の中心になります。
現在のペンを使って楕円を描画し、現在のブラシを使って塗りつぶします。
0359デフォルトの名無しさん
05/02/22 17:22:250360デフォルトの名無しさん
05/02/22 18:38:06CreateMenuで表示されるWindowsデフォルトのメニューとは違い、以下の問題が浮上しました。
・メニューを消す際に、一瞬、親のウィンドウが非アクティブに切り替わる。(その後、アクティブに戻る)
・他のメニューに切り替える時、メニューをSW_HIDEして消しますが、CreateMenuで作成されたMenuをHideする時のように綺麗に消えてくれない。
解決法がわかるかたいらっしゃいますか?
0361デフォルトの名無しさん
05/02/22 18:43:36CreatePopupMenu()
TrackPopupMenu()
辺りを使用し、メニューもどきではなく、
ちゃんとしたメニューを生成・表示する。
0362360
05/02/22 19:03:20いえ、それはわかっているのですが、
あくまで自作のメニューを表示させたいので、
CreatePopupMenu内部でどのようにコードが組まれているのかが知りたいですね。
0363デフォルトの名無しさん
05/02/22 19:17:45後者はあれだ。きれいに消える、が何を意味しているのかによる。
ひょっとするとAnimateWindowで解決するかもしれない。
0364デフォルトの名無しさん
05/02/22 19:30:11何故、「自作メニューもどき」にこだわるのか?
0365デフォルトの名無しさん
05/02/22 19:56:170366デフォルトの名無しさん
05/02/22 20:27:30最近のメニューはカスタムドローでDirectXのSurfaceのGDIを渡してくる
らしきところからおそらくLayered Windowになってると思う。
カスタムドローした方が楽だと思うけど。
何ならメニューアイテム1個で中は自由に描いてもいいし。
0367デフォルトの名無しさん
05/02/22 22:16:06STARTUPINFO si;
を宣言すると
エラーC2275
'identifier' : typedef 識別子に、クラス メンバ アクセス演算子 (->) を使用しました。
発生してしまうんですけど、どうしたら良いのでしょうか?
0368デフォルトの名無しさん
05/02/22 22:31:48エラー発生行はその行で間違いないか?
あと、もうちょっと前後のコード晒せ。
0369デフォルトの名無しさん
05/02/22 22:45:09間違いないです
//コメントアウトするとちゃんと通るので
エラーは こうでした
C:\My Documents\ABC\a.c(87) : error C2275: 'STARTUPINFO' : typedef 識別子に、クラス メンバ アクセス演算子 (->) を使用しました。
c:\program files\microsoft visual studio\vc98\include\winbase.h(3818) : 'STARTUPINFO' の宣言を確認してください。
C:\My Documents\ABC\a.c(87) : error C2146: 構文エラー : ';' が、識別子 'si' の前に必要です。
C:\My Documents\ABC\a.c(87) : error C2065: 'si' : 定義されていない識別子です。
0370デフォルトの名無しさん
05/02/22 22:46:52その上の行あたりが間違ってると思うよ。
0371デフォルトの名無しさん
05/02/22 22:50:480372デフォルトの名無しさん
05/02/22 22:53:08こうなんですけど
int WINAPI WinMain(HINSTANCE hCurInst, HINSTANCE hPrevInst,
LPSTR lpsCmdLine, int nCmdShow)
{
MSG msg;
hINSTANCE = hCurInst;
STARTUPINFO si; //STARTUPINFO si; ← こうすると通りますけど
if (!InitApp(hCurInst))
return FALSE;
if (!InitInstance(hCurInst, nCmdShow))
return FALSE;
while (GetMessage(&msg, NULL, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
0373デフォルトの名無しさん
05/02/22 23:03:05スレ違いだったと指摘を受けたので、こちらで質問させていただきます。
ttp://www.geocities.jp/wininet_dll_jp/
このHPをサンプルに使って、WinInetでPOST処理を作ってみたのですが、
POSTのボディ部をPHPの受信側が受け取りません。
パケットキャプチャしてみた結果では、ボディ部はちゃんと
送信していました。
同様にPHPで作った送信PGでPOSTしてみて、
結果ではうまく値がわたったので、受信側はうまく動いていると思います。
どうやれば、受信部のPHPで受け取ってくれるようになるのでしょうか?
どうぞよろしくお願い致します。
0374デフォルトの名無しさん
05/02/22 23:05:00つうか、ソースをちょっとは晒せ。
超能力者じゃねぇんだから。
0375デフォルトの名無しさん
05/02/22 23:09:22もしかして、拡張子.cにしてないか?
宣言と文の混在はc++の仕様だぞ
0376デフォルトの名無しさん
05/02/22 23:15:51どうしても分かりませんでした
>>375
言われたとうり a.c ファイルで *.cだったので
a.cppにしたら通るようになりました
どうも、ありがとうございます m(ヽ)m
0377デフォルトの名無しさん
05/02/22 23:16:410378デフォルトの名無しさん
05/02/22 23:17:59なにか違うか?
0379デフォルトの名無しさん
05/02/22 23:22:32STARTUPINFO si;
をコメントアウトしたらって意味じゃね?
0380デフォルトの名無しさん
05/02/22 23:23:16C99(ぼそ
0381デフォルトの名無しさん
05/02/22 23:24:37naruhodo
0382デフォルトの名無しさん
05/02/23 02:33:49textoutで描画してもキー入力を受け付けません。受け付けるようにするにはどうしたらいいですか?
0383382
05/02/23 02:52:240384デフォルトの名無しさん
05/02/23 03:01:420385384
05/02/23 03:26:240386デフォルトの名無しさん
05/02/23 03:37:060387386
05/02/23 04:00:270388386
05/02/23 04:33:330389デフォルトの名無しさん
05/02/23 05:50:370390デフォルトの名無しさん
05/02/23 09:11:35ウィンドウCにはスクロールバーはありません。
ウィンドウBをスクロールさせるとウィンドウCもスクロールするようにしたいのですがどうすればいいですか?
0391デフォルトの名無しさん
05/02/23 09:34:45ソースは基本的にリンク先のコードそのままで、
プロキシ対応の処理などを追加しただけです。
貼っても長いし、インデント崩れてみにくいので…
送信先がPHP以外のものなら、POSTできてるので、
文字セットはあっているとおもいます。
0392デフォルトの名無しさん
05/02/23 10:14:01ウィンドウBで WM_XSCROLL が呼ばれたらそこで
ウィンドウBとウィンドウCに再描画命令を送ればいいんでないかい?
ウィンドウCの描画でウィンドウBのスクロール情報を
使ってはならない規則などないからな。
0393デフォルトの名無しさん
05/02/23 10:26:13↓次の解決策をどうぞ
0394デフォルトの名無しさん
05/02/23 11:28:140395392
05/02/23 11:38:35ウィンドウB,Cが自分で定義したウィンドウなら
WM_PAINT でスクロール情報をもとに描画すればスクロールは実現するだろ?
ウィンドウズ定義のコントロールだったら、そのくらい質問でちゃんと書いとけよ。
教える気が萎えた。
0396デフォルトの名無しさん
05/02/23 12:36:59だから、ソース晒せ。
0397デフォルトの名無しさん
05/02/23 13:01:080398デフォルトの名無しさん
05/02/23 15:36:52GetTextMetrics/GetOutlineTextMetricsじゃだめっぽいんです。
0399デフォルトの名無しさん
05/02/23 16:53:430400デフォルトの名無しさん
05/02/23 17:20:41GetTextExtentPoint32
オーバーハングって分からんが
斜体にした時としない時の差?
0402デフォルトの名無しさん
05/02/23 23:15:43常に同じですか?kernel32.dllは同じだそうですが。
なぜかというとクラッシュが起きてデバッガが起動し、呼び出し履歴を見ると
ntdllの中でクラッシュしてるのですがそこが何なのか知りたいのです。
でもそのプロセス内で何処にロードされたかは今となっては後の祭りで分らないんです。
よろしくお願いします。
0403デフォルトの名無しさん
05/02/24 00:10:50悪いのはntdllじゃなくて、もまいのプログラム。
まちがいない。
0404デフォルトの名無しさん
05/02/24 00:55:52それぞれのクラスごとにデータを保持していて欲しいのですが、こういう場合は普通どうしていますか?
0405デフォルトの名無しさん
05/02/24 00:56:43それぞれのウィンドウごとにデータを保持していて欲しい、です。
0406デフォルトの名無しさん
05/02/24 01:00:04C++のクラスって事ならstaticじゃ無くすればいいだけだな。
0407デフォルトの名無しさん
05/02/24 01:00:24SetProp
0408デフォルトの名無しさん
05/02/24 01:24:20WNDCLASSEXをRegisterClassExで登録したもので、そのうちの、プロシージャ部についての話です。
例えば、HBITMAPの形で画像を保持しておいても、
staticだと別ウィンドウ向けに登録したものに変更されてしまい、全てのウィンドウが同じ画像になってしまいます。
今から、その2つについて調べてみます。
0409デフォルトの名無しさん
05/02/24 03:00:520410デフォルトの名無しさん
05/02/24 05:04:18GetWindowLong の GWL_USERDATA か
もしくは拡張ウィンドウメモリを使え。
どっちも GetWindowLong に載ってる。
というかお前の404の日本語は下手過ぎ。読む側のことも考えろ。
0411410
05/02/24 05:09:120412デフォルトの名無しさん
05/02/24 05:24:50ぐぐれ
0413410
05/02/24 05:30:280414デフォルトの名無しさん
05/02/24 11:32:31共通部分になってるウィンドウプロシジャーのメソッドから
それぞれのクラスのメソッドをthisポインタを介して参照する
保存場所については散々でてるしいいな
0415デフォルトの名無しさん
05/02/24 14:25:01もしかしてこんなプログラム書いてるひと?
http://pc5.2ch.net/test/read.cgi/tech/1108815602/124
0416デフォルトの名無しさん
05/02/24 18:37:02ウインドウ作成時に
SetTimer(hWnd,1,10,NULL);
でタイマを作って
WM_TIMER:
SendMessage(hWnd,WM_PAINT,wParam,lParam);
で10ミリ秒ごとにWM_PAINTを発行し再描画されるようにしているんですが・・・何か間違ってますか?
0417デフォルトの名無しさん
05/02/24 18:40:08WM_PAINTはシステムが発行するものです。
ユーザプログラムが発行してはいけません。
WM_PAINTを発生させたければInvalidateRect等を使いなさい。
0418デフォルトの名無しさん
05/02/24 18:40:120419デフォルトの名無しさん
05/02/24 19:01:48WM_TIMER:
//描画
とすれば10ミリ秒ごとに描画されますか?
0420デフォルトの名無しさん
05/02/24 19:12:480421デフォルトの名無しさん
05/02/24 19:22:09やるの面倒くさいから聞いてるんだヴォケ
0422デフォルトの名無しさん
05/02/24 19:24:52正直なとこ、自分としては割と傷つくんですが。
0423デフォルトの名無しさん
05/02/24 19:25:48419の方法で大丈夫です。やってみましょう。
0424デフォルトの名無しさん
05/02/24 19:25:49フレーミングエラーがたまに起きて、これがでると
その後のWriteFileやReadFileが失敗してしまうのですが
なんか対策ってありますか?
どーやったら復帰できるのでしょうか?
0425デフォルトの名無しさん
05/02/24 19:43:15この場合はGetDCの方で描画する方がいいかも。
後、1タイマーの精度が悪いのでせいぜい50ミリ秒ぐらいかな。
0426デフォルトの名無しさん
05/02/24 19:46:02あなたはゴミですねぇ。ここに居る必要ないんじゃないですか?
もう自分で調べましたけどね。ちなみに俺のプログラムがよんでるんじゃないんですが。。
(バカのてめぇ勝手な仮定に突っ込んでも無駄か。。)
0427デフォルトの名無しさん
05/02/24 19:49:45すれ違い
http://pc5.2ch.net/test/read.cgi/tech/1108989422/
0428デフォルトの名無しさん
05/02/24 19:50:04タイマーの精度50ミリか?
0429デフォルトの名無しさん
05/02/24 20:04:16というか10msで更新だとかなりCPUパワー食われるような‥‥
何をやりたいのか書いた方がいいと思われ。
0430デフォルトの名無しさん
05/02/24 20:11:52だから説明してみろよ。
何処にntdllに問題があると書いてある?
何処に俺のプログラムからクラッシュしていると書いてある?
日本語が読めるか?質問はdllのロードされる位置についてだ。
なんでこんな見当違いで無駄なレスをつける奴を擁護するのか言ってみろ。
0431デフォルトの名無しさん
05/02/24 20:16:21kernel32だったか忘れたけどWin2KでSP当てたらアドレスが変わってた事があった。
過信は禁物。
0432デフォルトの名無しさん
05/02/24 20:16:30すれ違い
http://pc5.2ch.net/test/read.cgi/tech/1108989422/
0433デフォルトの名無しさん
05/02/24 20:17:30バカダネェ。しかし。死ねよ
0434デフォルトの名無しさん
05/02/24 20:19:03さっさと答えろ。なんか考えでもあるのか?
すれ違いだの書いてりゃ2チャンらしくていいとでも思ってるのか?
0435419
05/02/24 20:29:14ヴォケとか書いてるのは私じゃないので悪しからず
0436デフォルトの名無しさん
05/02/24 20:29:15なんの価値もないレスがつかなければまだ知識のある人のレスが望めたんだよ。
答えを持ってないなら書かなきゃいいじゃねぇか。ばっかじゃねぇの?
あと関係ない皆さん、スレ汚しちゃってすみませんね。
もう消えるよ
0437デフォルトの名無しさん
05/02/24 20:31:45マジレスするとDUMPBINか何かでDLLのエクスポートテーブル見れば
どんな場所かわかるよ。
ちなみにシステムdllのロードアドレスは固定。
つーかPEヘッダ手繰ってけばわかるけど。
アドレスとかの仕組みはAdvancedWindowsという本に詳しく載ってる。
0438デフォルトの名無しさん
05/02/24 20:34:44ありがとうございます。アドレスについては今日調べて解決しました。
0439デフォルトの名無しさん
05/02/24 20:35:50http://www.amazon.co.jp/exec/obidos/ASIN/4756138055/250-8382872-5552210
0440デフォルトの名無しさん
05/02/24 20:39:33版を重ねてるから古いのをつかまされない様注意
0441デフォルトの名無しさん
05/02/24 20:51:38宍戸さんの所に載ってるけど、自分のマシンも同じ感じ。
http://www.sm.rim.or.jp/~shishido/timeri.html
タイマーを10ミリ秒ぐらいの間を取って5つ生成して、
それぞれ50ミリ秒感覚で来る事で、
結果的に10ミリ秒感覚になるとか出来ないかな。
0442デフォルトの名無しさん
05/02/24 20:53:030443デフォルトの名無しさん
05/02/24 21:54:43>タイマーには 分解能 という限界周期が定められており
>この分解能以上の周期でメッセージを発行することはできないのです
>この周期は 9x と NT で異なり、 9x の場合は55ミリ秒、NT は10ミリ秒です
>つまり、9x は1秒間に最大で18回、 NT は100回までしか WM_TIMER を発生させられないのです
0444デフォルトの名無しさん
05/02/24 23:18:490445デフォルトの名無しさん
05/02/25 02:17:030446デフォルトの名無しさん
05/02/25 02:21:260447445
05/02/25 02:58:20私は文字列ポインタ型に PTSTR と PCTSTR を使っていたわけですよ。
で、最近、汎用ポインタに PVOID を使おうとしたところ、PCVOID が
用意されていないということに気がついた次第でございまして。
まあ本質的な問題ではないのですが、イケてるWin32プログラマの皆様は一体
どの組み合わせを使っていらっしゃるのかなーなんて気になっちゃいまして。
(1) LPVOID と LPCVOID
(2) PVOID と CONST VOID *
(3) void * と const void *
ちなみに MSDN の CopyMemory() の項目では (2) が使われているんですよね…。
0448デフォルトの名無しさん
05/02/25 10:14:350449デフォルトの名無しさん
05/02/25 12:57:24お好みでどうぞ。
http://www.bulldog.co.jp/ ブルドックソース株式会社 東京都
http://www.kagome.co.jp/ カゴメ株式会社 愛知県
http://www.otafuku.co.jp/ オタフクソース株式会社 広島県
http://www.ikari-s.co.jp/ イカリソース株式会社 大阪府
http://www.kikkoman.co.jp/ キッコーマン株式会社 千葉県
http://www.oliversauce.com/オリバーソース株式会社 兵庫県
http://www.sky-net.or.jp/toshi/ カープソース 広島県
http://www.maruki-su.com/ 株式会社 川上酢店 愛知県
http://www.kozima.co.jp/ 小島食品製造株式会社 愛知県
http://www.komi.co.jp/ コーミ株式会社 愛知県
http://www.sankyohikari.co.jp/ サンキョーヒカリ 愛知県
http://www.junmaru.co.jp/ 株式会社 純正食品マルシマ 広島県
http://www.papaya-sauce.co.jp/ パパヤソース本舗 大洋産業株式会社 京都府
http://www.takahashisauce.com/ 高橋ソース株式会社 埼玉県
http://www.choko.co.jp/ チョーコー醤油株式会社 長崎県
http://www.timelyhit.ne.jp/ajiyoko/shop/sauce/sauce1.htm 阪神ソース株式会社 兵庫県
http://www.kyoto-thinking.co.jp/hirota/京風味ソース本舗 蛇ノ目食品廣田徳七商店 京都
http://www.optic.or.jp/com/fujiisauce/fujiisauce.html 有限会社 藤井ソース工場 岡山県
http://www2.neweb.ne.jp/wd/hikari/ ヒカリ食品 徳島県
http://www.hat.hi-ho.ne.jp/aokia/ 下北沢ビレッジソース 丸寿食品工業株式会社 東京都
http://www.yamayashokuhin.co.jp/ 山屋食品株式会社 東京都
http://www4.osk.3web.ne.jp/~brother1/ブラザーソース森彌食品工業株式会社
http://www.asahi.co.jp/you/t20011026.html神戸地ソース物語
【関連団体】
http://www.maff.go.jp/koueki/sougou/35/35.htm(社)日本ソース工業会
http://www.japan-tomato.or.jp/社団法人 全国トマト工業会
http://www.soysauce.or.jp/ 日本醤油協会
0450デフォルトの名無しさん
05/02/25 13:34:260451デフォルトの名無しさん
05/02/25 14:13:39俺だったら自分でtypedef const VOID *PCVOID;と書くか、
PVOIDとconst VOID *あるいはvoid *とconst void *の組み合わせにする。
0452デフォルトの名無しさん
05/02/25 15:37:44オレは極力標準の型を使う。
と言うわけで3。
0453デフォルトの名無しさん
05/02/25 16:36:56おいらは>>452さんとは真逆で型は極力MS定義を使うようにしてる。
なので(1)
自前定義よりは他の人が見たとき混乱しにくいかなとか
将来何かしらの拡張があった場合とかMSヘッダ側でうまい事修正・対応してくれるかな
とか期待して。
上の理由は逆にすると、実際の型を知る場合に複雑なMSヘッダから定義を探さなければならないとか
MSヘッダでまずいこと修正・対応される場合もあるとかいろんな問題も含んでるので
どれが良いって事もないと思う。
ケースバイケースって感じで
0454デフォルトの名無しさん
05/02/25 16:43:43エディットコントロールは32KBみたいですけど、普通のウィンドウでも最大そこまでOK?
0455デフォルトの名無しさん
05/02/25 16:46:52勝手な想像では、GetWindowTextLength() で扱える数値分ではないだろうかと。
0456デフォルトの名無しさん
05/02/25 17:02:00エディットの32KBは9xの制限でNTは制限ない。(メモリ上の制限はあるが)
コントロールによりけりだと思われ。
0457デフォルトの名無しさん
05/02/25 18:25:01はぁ?NTでも32K越えたら編集できねぇよボケ
0458デフォルトの名無しさん
05/02/25 18:34:520459デフォルトの名無しさん
05/02/25 18:39:19とりあえず、732kBのテキストファイルをメモ帳で普通に開けたことを
報告しておく。
0460デフォルトの名無しさん
05/02/25 18:46:37EM_LIMITTEXTの解説から抜粋
Rich edit controls: If this parameter is zero, the text length is set to 64,000 characters.
Edit controls on Windows NT/2000/XP: If this parameter is zero, the text length is set to 0x7FFFFFFE characters for single-line edit controls or ?1 for multiline edit controls.
Edit controls on Windows 95/98/Me: If this parameter is zero, the text length is set to 0x7FFE characters for single-line edit controls or 0xFFFF for multiline edit controls.
まあ、この数値がMAXと書いてあるわけでもなく
この数値がまで保障されると書いてあるわけでもないのでソースにならんと言えばその通りだけど
この数値が制限だとおもっていいんじゃない?
0461デフォルトの名無しさん
05/02/25 18:54:530462447
05/02/25 19:56:39なるほど。データ型の意味が明白なら、自前で定義するというのもアリですよね…。
>>452
そういう考え方もありますね。私も最初はそうだったのですが、文字配列に
TCHAR を使うようになってからすっかり Windows のデータ型に染まってしまいまして。
>>453
やはり、どれを採用するにしてもメリットとデメリットがあるでしょうし、
コーディングスタイルも人それぞれということになりそうですね。
たいへん参考になりました。レスを下さった皆さん、どうもありがとうございました。
0463デフォルトの名無しさん
05/02/26 00:51:57PSTRとPTSTRとは
どう違うんですか?
Tが付くのと付かないのの差がよくわからないんですが・
046469式フリーPG ◆hND3Lufios
05/02/26 00:55:50LPSTR/PSTR == char *
かな。
0465デフォルトの名無しさん
05/02/26 01:30:570466デフォルトの名無しさん
05/02/26 01:59:48メモ帳で書くといいよ
0467デフォルトの名無しさん
05/02/26 03:37:290468デフォルトの名無しさん
05/02/26 04:39:02CreateFileで使うハンドルを得られた気がするんですが、
なんて名前のAPIかどなたかご存じないでしょうか?
0469デフォルトの名無しさん
05/02/26 06:50:21そういうAPI/ライブラリ関数は無い。
FILE *をごにょごにょすれば?
0470デフォルトの名無しさん
05/02/26 08:03:22これじゃないか?
0471デフォルトの名無しさん
05/02/26 12:50:19MBCSを基本にすえておいて、必要な場面だけバッファをUnicodeに変換して
Unicode版の関数を使うのがベターだと思うよ。
0472デフォルトの名無しさん
05/02/26 12:54:05WM_CREATEがきた時に関数の値を計算して、staticな関数に保存するのと
WM_PAINTが来るたびに計算するのとどっちがいいと思う?
0473デフォルトの名無しさん
05/02/26 12:54:25LPCTSTRの文字列のある文字が、1バイト文字なのか2バイト文字(日本語など)なのかを調べるAPIはあると思いますが、
教えていただけますか?
0474デフォルトの名無しさん
05/02/26 12:54:36staticな関数じゃない、staticな配列だ…
ゴメンね
0475デフォルトの名無しさん
05/02/26 12:55:32こんにちは
0476デフォルトの名無しさん
05/02/26 13:00:37やぁ、こんにちは
0477デフォルトの名無しさん
05/02/26 13:04:55NT系のOSでもそうなん?
0478デフォルトの名無しさん
05/02/26 13:11:52IsDBCSLeadByteExあたりだろーか
0479デフォルトの名無しさん
05/02/26 13:17:49よく聞く話としては英語版のWindowsXPは日本語版よりかなり軽いらしい。
ソースコードは同じでも、
ビルドされた生成物が文字列の変換や比較で使う関数の実装が違うから。
日本語環境はかなりCPUを損していると思う。
0480デフォルトの名無しさん
05/02/26 13:27:20計算する物にもよるけど、計算結果を他に使わないなら、毎回WM_PAINTで計算&描画するのでいいと思う。
昔の定石だとWM_CREATEが来たときに計算して裏のメモリデバイスコンテキストに描画。
WM_PAINTが来たときには、BeginPaint()で再描画必要な領域を取得して、
裏からそこだけコピー・・・としてたけど、最近の高性能なパソコンなら、
そこまでする必要もないかと。
0481デフォルトの名無しさん
05/02/26 13:27:23単にバッファ全体を扱いたいにもかかわらず、関数が厳密に文字として扱おうとして
過保護な作りになってしまうことが多々ある。
最適化で劣っているはずのLinuxが速度面で優位なのは
Unicode周りの処理が関係しているからかもしれない。
0482デフォルトの名無しさん
05/02/26 13:39:340483デフォルトの名無しさん
05/02/26 13:40:03ありがとうございまし
0484デフォルトの名無しさん
05/02/26 13:42:290485デフォルトの名無しさん
05/02/26 13:51:49意味がわからん。何を比較対象にしたの?
0487デフォルトの名無しさん
05/02/26 13:59:56IsDBCSLeadByteもあるからな
0488デフォルトの名無しさん
05/02/26 14:08:52IsDBCSLeadByteW
0489473
05/02/26 14:15:03今日から開発開始ですが、今日の夜には完成すると思います。
エディタもそうなんですが、自作のターミナル(TeraTermやHyperTerminalみたいなもの)もあわせて作る予定です。
Cisco製品で試してみようと思います。
はい。
一番の山は漢字変換当たりだろうと思います。
0490デフォルトの名無しさん
05/02/26 14:38:34MBCS(SJIS)の1バイト目と、2バイト目の範囲は重なってる。
IsDBCSLeadByteがTrueを返しても、1バイト目か2バイト目だと言うこと
以上は分からないぞ。
作る前に、ShiftJISやEUCやJISの仕様について、勉強してきた方が良い。
0491489
05/02/26 14:48:57一バイトがDBCSかどうかわかれば結構ですよ。
別にMS-WORDのような重装備なものをつくるわけじゃありません。
全テキスト文字スタイル固定のシンプルなテキストエディタですから。
ご意見ありがとうございました。
0492デフォルトの名無しさん
05/02/26 14:57:210493デフォルトの名無しさん
05/02/26 15:02:461バイト文字(ASCII)と区別できるんだよな。
でも2バイト系文字の第二バイトは40h〜7Ehが存在するから
これがASCIIと区別できないんだよな。
だから2バイト系かどうかは先頭から順にリード、トレイル、ASCII、を
チェックしながら調べないと絶対わからんはずだが。。
0494デフォルトの名無しさん
05/02/26 15:10:200495デフォルトの名無しさん
05/02/26 15:10:360496デフォルトの名無しさん
05/02/26 15:13:080497デフォルトの名無しさん
05/02/26 15:24:240498デフォルトの名無しさん
05/02/26 15:26:110499デフォルトの名無しさん
05/02/26 15:30:550500デフォルトの名無しさん
05/02/26 15:33:130501デフォルトの名無しさん
05/02/26 15:39:29WCHARを使わないのであれば、
文字列へのポインタをそのままインクリメントデクリメントせずに、
必ずCharNextとCharPrevを使うこと。
これでどう?>All
0502デフォルトの名無しさん
05/02/26 15:50:420503デフォルトの名無しさん
05/02/26 15:54:21NT系のOSは、UNICODEを基本として動作しているわけだから
むしろMBCSを使う方が非効率だと思う。
0504デフォルトの名無しさん
05/02/26 15:59:30これどういう意味?
0505デフォルトの名無しさん
05/02/26 16:59:04そのへんどうなんだろうねぇ
ファイル名なんかはUNICODEにしておくと無駄な変換がなくて済みそうだけど
ウィジェットのテキストラベルやテキストボックスなんかはどうなってるんだろ
0506デフォルトの名無しさん
05/02/26 17:11:23漢字変換のポップアップウィンドウを使いたいのですが。
↓
http://www.geocities.jp/ayana_city/ime.JPG
MS側でAPIで用意されてると思うんですよ。たぶん。。。
フォントやファイルのコモンダイアログみたいに。
誰かご存知な方はいますか?
0507デフォルトの名無しさん
05/02/26 17:29:07リンクが見れない。
どのウィンドウを指してるのかよくわからんが、
IMEの操作は、「Imm〜」で始まる関数と「WM_IME_〜」で始まるメッセージを使う。
特に"candidate"の扱い方を調べろ。
0508デフォルトの名無しさん
05/02/26 17:29:21それはプロセスが文字列リソースを扱っている時の話。
適切な関数を使わないと、ただのバッファデータにまで
重厚・親切な文字列処理が行われかねない。
本来memcmp・memcpyで済ませて構わない場所や
従来strlenでヌル終端位置を取得していた場所が無駄に重くなる。
Unicode対応は、確かに多言語対応・機能拡張には柔軟になるが
バイナリバッファへの直接アクセスがセールスポイントであるC/C++の恩恵を捨てることにもなる。
そもそもマルチバイトコードの大市場というべき日本語環境でMBCS版がちゃんと動くなら、
無理にUnicode版でビルドする必要など皆無。
あれは英語圏の人間が、未知のマルチバイト言語用にビルドするためのものといって差し支えない。
0509506
05/02/26 17:41:42どうもです。
507さんの情報をヒントにグーグル検索をしたら、
いいものが見つかりました。
ありがとうです。
http://www.cisnet.or.jp/home/tsuneoka/win32tech/7.html
画像は見れると思うんですが(^^
0510デフォルトの名無しさん
05/02/26 17:53:29わざわざ独自の実装で直接バッファアクセスによる高速化・最適化を実現しているのを、
汎用的なWindowsAPIに置き換えるメリットなどないからだ。
0511506
05/02/26 18:10:20http://www.geocities.co.jp/SiliconValley-Cupertino/5872/String/Ime/index.html
どのように表示させるのかご存知な方はいますか?
0512506
05/02/26 18:10:44http://www.geocities.co.jp/SiliconValley-Cupertino/5872/String/Ime/img3.gif
0513506
05/02/26 18:13:29ImmSetCandidateWindow IME候補リストウインドウ位置設定
取得や設定ならわかりましたが、
肝心の変換文字を指定〜候補リストウィンドウの表示がわかりません。
0514506
05/02/26 18:14:540515506
05/02/26 18:18:060516デフォルトの名無しさん
05/02/26 18:27:18やっぱりリンク先が見られないんだが。
IMEプログラミングは、かなり環境に依存するし情報も少ないので、
それなりに大変。ちょっと関数呼んで終わりとか、そういうのじゃないよ。
とりあえず、メッセージフック用ののソフトで、IMEを操作したときに
どういうメッセージがやり取りされてるか知れべて見ろや。
Spy、WinSightあたりを持ってないか。
0517506edwin
05/02/26 18:31:18そーですね。
こっちが覚えたくても情報がないから、
手探り状態。
でも乗り越えないといけない山・・・。
険しく寒い山。
ガンバ自分。
どうもです。
0518デフォルトの名無しさん
05/02/26 19:47:10(3)-(F)のImmReleaseContext();の直後にreturn 0;を書けば(4)は不要。
0519デフォルトの名無しさん
05/02/26 19:53:36WindowsだからUTF-16が前提で話すけど
UNICODE文字列をmemcmp memcpyして何か問題ありますか?
wcslenは非効率な処理をしてるんですか?
むしろ1文字のバイト数が固定されているからランダムアクセスが
効率的に行えるでしょ。
SJISで文字探索するときの非効率さの方が問題。
0520デフォルトの名無しさん
05/02/26 19:56:370521デフォルトの名無しさん
05/02/26 20:05:30後方互換性を保つために、非 Unicode 文字 (ANSI や DBCS) をパラメータとしている
API を備えています。対応する API は Unicode 文字コードをパラメータとしてとります。
基本的には、非 Unicode API は、対応する Unicode API を呼び出す前に、パラメータ内
の文字コードを Unicode に変換します。
http://www.microsoft.com/japan/technet/prodtechnol/winxppro/evaluate/muiovw.mspx
0522デフォルトの名無しさん
05/02/26 20:15:11非効率じゃないのかなぁ。俺、Unicodeでコンパイルしてるよ。
もちろん、SJISのほうが便利な部分もあるから、どっかでまとめて変換するんだけどね。
MBCS版のAPIを呼ぶことはしないな。
0523デフォルトの名無しさん
05/02/26 20:44:590524デフォルトの名無しさん
05/02/26 20:56:10けなげだから、ヒント教えよう。
以下のコードを書いて実行してみてください。
char moji[]={"それがPSPの仕様だ。"};
HIMC hIMC = ImmGetContext(m_hWnd);
ImmSetCompositionString(hIMC, SCS_SETSTR, moji,strlen(moji),NULL,0);
ImmNotifyIME(hIMC, NI_COMPOSITIONSTR, CPS_CONVERT, 0);
ImmNotifyIME(hIMC, NI_OPENCANDIDATE, 0, 0);
ImmReleaseContext(m_hWnd, hIMC);
あと、imm.hをinclude&リンク指定としてimm32.libを忘れずに。
これで結構、筋がわかると思うよ。
0525デフォルトの名無しさん
05/02/26 20:59:22tcharって知ってます?
0526デフォルトの名無しさん
05/02/26 21:26:019xでもMicrosoft Layer for Unicode入れれば動かせたような希ガス。
0527デフォルトの名無しさん
05/02/26 21:28:340528学生プログラマン
05/02/26 21:50:530529デフォルトの名無しさん
05/02/26 21:59:48しかし、実際のところWin98なんでUnicodeにしたことはない。
MSLUも試す気には(今のところ)ならない。
0530デフォルトの名無しさん
05/02/26 22:01:010531デフォルトの名無しさん
05/02/26 22:16:100532デフォルトの名無しさん
05/02/26 22:45:320533デフォルトの名無しさん
05/02/26 22:53:27#ifdef _UNICODE
・・
#else
・・
#endif
だらけになる。
0534デフォルトの名無しさん
05/02/26 23:23:05> だらけになる。
・CStringみたいな文字列クラスを適切に使う
・TCHARだの_tcs*だのを使う
ってのを徹底すればそうでもない
完全になくすわけにはいかないけど、
末端に追いやることはできるっしょ
>>532
どっかないかねえ?
0535デフォルトの名無しさん
05/02/26 23:43:13(ノ∀`)アチャー
だからなぁ・・・。
0536デフォルトの名無しさん
05/02/26 23:44:41User32だと何が適切だろう
0537デフォルトの名無しさん
05/02/26 23:59:590538デフォルトの名無しさん
05/02/27 00:10:31MFCだけど
str.Format("%c ", nChar);
0539デフォルトの名無しさん
05/02/27 01:33:200540デフォルトの名無しさん
05/02/27 01:44:28ms-help://MS.PSDK.1033/winui/winui/windowsuserinterface/userinput/VirtualKeyCodes.htm
0542デフォルトの名無しさん
05/02/27 06:10:16出力される情報をリアルタイムで得るにはどうしたらいいのでしょうか?
出力をファイルにリダイレクトすれば、実行後には出力結果を得られますが、
あいにく実行時間が長いプログラムなので、リアルタイムで出力情報が欲しいのです。
0543デフォルトの名無しさん
05/02/27 06:10:570544542
05/02/27 06:22:12CreateProcessに渡すSTARTUPINFO構造体にhStdOutputという標準出力ハンドルがありました。
0545デフォルトの名無しさん
05/02/27 09:57:22かっこわるぅ〜。馬鹿だね。
0546デフォルトの名無しさん
05/02/27 10:44:45MapVirtualKeyでGo!
KeyDownイベントで拾うんだぞ。
ほかの同様のKeyイベントがあるけど、仮想キーコードが異なるんだ。
0547デフォルトの名無しさん
05/02/27 11:56:01それで今までやってきたのか・・・分かってないんだねぇ・・・
俺の部下にも注意しないと。
0548537
05/02/27 12:07:37仮想キーコードが異なる場合、どのように対処すればいいのでしょうか?
同じキーでも、コードが異なるのでは処理がややこしくなるのですが。
0549デフォルトの名無しさん
05/02/27 12:35:58GetAsyncKeyStateでも使えばいい。
本当はゲーム作ったりする時に使う関数だから、メッセージ通す方法の方が
いいのかもしれないけどね。
0550デフォルトの名無しさん
05/02/27 13:12:33>>547
0551デフォルトの名無しさん
05/02/27 13:44:05どっちかというと装飾キーの状態判定がメインな気が
0552デフォルトの名無しさん
05/02/27 14:34:330553デフォルトの名無しさん
05/02/27 15:54:530554デフォルトの名無しさん
05/02/27 16:24:17自前でIMEの変換状態を描画しているのですが
COMPOSITIONとCANDIDATEの各ウィンドウを
表示させない(変換動作はバックグラウンドで行う)ように
するにはどうすればいいか、ご存知の方はいませんか?
0555554
05/02/27 17:19:49//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
HIMC hIMC = ImmGetContext(hWnd);
COMPOSITIONFORM cmf;
cmf.dwStyle=CFS_RECT;
cmf.rcArea.left=0;
cmf.rcArea.right=-5;
::ImmSetCompositionWindow(hIMC,&cmf);
・・・
//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
とすれば、非表示になりましたが、CANDIDATEウィンドウを
非表示にする方法が分かりません。誰か教えてください。
0556デフォルトの名無しさん
05/02/27 17:48:55以前選ばれていた、Penハンドルが返ります。
0557デフォルトの名無しさん
05/02/27 17:57:36それが返ります。
つまり、デフォルトの状態が返るわけです。
0558デフォルトの名無しさん
05/02/27 18:13:05それを保存して後でまたSelectObject関数で戻さないといけないんですよね?
戻さないと何か問題ありますか?
0559デフォルトの名無しさん
05/02/27 18:20:53いえ、戻さなくても問題はおきませんが。
ただ、元(デバイスコンテキストに対するデフォルトな状態)に戻したいばあいは必ずあるので、SelectObjectが返すオブジェクトは大切だと思いますが。
0560デフォルトの名無しさん
05/02/27 18:54:48GDIリソースが漏れる。
0561デフォルトの名無しさん
05/02/27 20:02:05thx
0562デフォルトの名無しさん
05/02/27 20:26:39いざとなったらそれSelectすればいい話だけどな。
0563デフォルトの名無しさん
05/02/27 20:41:450564デフォルトの名無しさん
05/02/27 20:51:07次にA,Bの順で同じクリティカルセクションに入った場合、
CがLeaveCriticalSectionで抜けると、次はAが動き始め、Bは待つのですか?
A,Bが一緒に動き始めたりしないですか?
Win2000です。
0565デフォルトの名無しさん
05/02/27 20:52:530566デフォルトの名無しさん
05/02/27 21:11:16>次にA,Bの順で同じクリティカルセクションに入った場合、
>CがLeaveCriticalSectionで抜けると、次はAが動き始め、Bは待つのですか?
>A,Bが一緒に動き始めたりしないですか?
用語が混乱してますね。「クリティカルセクションに入った」ってことは、
Mutexをすでに獲得したということですよ。
というのは措いといて、A,Bが同時に動くことはありません。
必ず一つずつです。
0567デフォルトの名無しさん
05/02/27 21:20:27ボタンもスクロールバーもタブもスライドもコンボボックスも。
0568デフォルトの名無しさん
05/02/27 21:32:490569デフォルトの名無しさん
05/02/27 21:37:280570デフォルトの名無しさん
05/02/27 22:00:02どういうときに使うんでしょう?
page stateを変えるものではなさそうだし・・・
0571デフォルトの名無しさん
05/02/27 22:08:45平然とウソをつくのはやめてくれ。
0572デフォルトの名無しさん
05/02/27 22:21:51どこら辺がウソなの?
0573デフォルトの名無しさん
05/02/27 22:35:13クリティカルセクションとミューテックスを混同しているあたり。
0574デフォルトの名無しさん
05/02/27 22:36:00みゅーてっくすは全く関係ありません
0575デフォルトの名無しさん
05/02/27 22:36:58Win32マルチスレッドプログラミングでもいいが
0576デフォルトの名無しさん
05/02/27 22:39:11AdcancedWindows読め
全ての答えが書いてある
0577デフォルトの名無しさん
05/02/27 22:39:460578デフォルトの名無しさん
05/02/27 22:39:58合ってる場合は稀で、ほとんどが間違ってる
いいからAdvancedWindows買え
0579デフォルトの名無しさん
05/02/27 22:40:330580デフォルトの名無しさん
05/02/27 22:41:280581デフォルトの名無しさん
05/02/27 22:42:01EnterCriticalSection〜LeaveCriticalSectionで囲われた部分は同時に実行されない。
先にどこかのスレッドが中に入っている場合、後から来た方はEnterCriticalSectionで待ちぼうけ。
そういうことをさせるためのクリティカルセクション。
0582デフォルトの名無しさん
05/02/27 22:44:31競合が起きた場合でも、所有権を持つスレッドはカーネルモードに移行せず実行される
だからミューックスより速い
これらの情報はすべてAdvancedWindowsに載ってる
買え
0583デフォルトの名無しさん
05/02/27 22:54:110584デフォルトの名無しさん
05/02/27 22:54:350585デフォルトの名無しさん
05/02/27 22:56:26あー、そういう意味でMutexと書いたわけではないのだが・・・。
いわゆるCreateMutex等で作られるオブジェクトではなく、
相互排他に使われるモノ一般のことを言ったんだけど、
確かに誤解される書き方でした。失礼。
しかしまあ、「クリティカルセクション」ってのは、
一般に相互排他されたコード領域を指す言葉なわけで、
クリティカルセクションに入「った」ってことは、
すでに相互排他された状態だと思うわけですよ。
WindowsのCRITICAL_SECTIONのおかげで、若干混乱しがちですが。
0586デフォルトの名無しさん
05/02/27 22:59:14おまえ、ミューテックスってどういう意味かわかってないだろ
いいからAdvancedWindows買えよ
意味載ってるから
0587デフォルトの名無しさん
05/02/27 23:01:070588デフォルトの名無しさん
05/02/27 23:02:42ホントに分かってなかったんだな。軽くジャブ入れただけだったのに。
どんまい。勉強して出直してきな。
0589デフォルトの名無しさん
05/02/27 23:12:250590デフォルトの名無しさん
05/02/27 23:17:210591デフォルトの名無しさん
05/02/27 23:22:320592デフォルトの名無しさん
05/02/27 23:23:320593デフォルトの名無しさん
05/02/27 23:54:46自作ライブラリのUnicode対応をやった。C++前提だと意外と楽だね。
関数オーバーロードとテンプレートを駆使して
MBCS版バイナリとUnicode版バイナリを、生成物の中で両立できた。
TCHAR.H依存のマクロ切り替えだと
MBCS版バイナリとUnicode版バイナリが共存できない。
0594564
05/02/27 23:59:23AdvancedWindows持ってますがいま会社に置きっぱなしなので
明日読みます。では
0595デフォルトの名無しさん
05/02/28 00:48:17なんでAmazonだと配送に4〜6週間かかるんだろう?
0596デフォルトの名無しさん
05/02/28 01:15:59たぶん、在庫がないから発注してるんだろうな。
0597デフォルトの名無しさん
05/02/28 01:38:040598デフォルトの名無しさん
05/02/28 01:52:56Windows系扱う会社でこの本が常備してないとこはヤバイな。
0599デフォルトの名無しさん
05/02/28 02:07:500600デフォルトの名無しさん
05/02/28 02:12:380601デフォルトの名無しさん
05/02/28 04:51:07皆さんは普通の一般人ですか?
0602デフォルトの名無しさん
05/02/28 05:38:590603デフォルトの名無しさん
05/02/28 09:37:270604デフォルトの名無しさん
05/02/28 10:00:560605デフォルトの名無しさん
05/02/28 10:19:280606デフォルトの名無しさん
05/02/28 10:44:05APIを教えてください。以前使ったことがあるんですけど、
忘れちゃって…。
0607606
05/02/28 11:05:08GetFileAttributes ですね。
0608デフォルトの名無しさん
05/02/28 18:05:15スクロールバーに触ってない状態でスクロールバーが動いたときにくるメッセージないの?
0609デフォルトの名無しさん
05/02/28 18:39:400610609
05/02/28 18:57:340611デフォルトの名無しさん
05/02/28 18:57:53或る夜
0612デフォルトの名無しさん
05/02/28 19:00:02文字間を制御する必要があるため、TextOutで1文字づつ出力しているのですが、ごく稀に
代替フォントで使用されたフォントがずーっと使用されてしまうことがあります。
1文字づつSelectObjectすればちゃんと出るのは確認してますが非常に遅くなります。
文字種(漢字・アラビア文字・ヘブライ文字とか)が分かればその変わり目で
再設定すれば良さそうなのですが、文字種を判定するにはどうしたら良いでしょうか。
テーブル作るのが早いのかなぁ…
あるいは代替フォントが使用される・されない・使用不可、等が判定できる方法が
ありましたらご教授ください。
0613デフォルトの名無しさん
05/02/28 19:38:48とかか?
0614デフォルトの名無しさん
05/02/28 20:00:20はぁ?嘘言ってんじゃねぇよデブ
0615デフォルトの名無しさん
05/02/28 20:13:20こいつらmsdnより使えないことに最近気づいた
0616デフォルトの名無しさん
05/02/28 20:26:320617デフォルトの名無しさん
05/02/28 20:35:450618デフォルトの名無しさん
05/02/28 20:58:560619デフォルトの名無しさん
05/02/28 21:36:53字が多くて読む気しない
質問以前
0620デフォルトの名無しさん
05/02/28 21:45:390621デフォルトの名無しさん
05/02/28 22:12:550622デフォルトの名無しさん
05/02/28 22:23:410623デフォルトの名無しさん
05/02/28 23:53:180624デフォルトの名無しさん
05/03/01 00:24:41チョトびびった。
0625608
05/03/01 08:40:360626608
05/03/01 09:33:010628デフォルトの名無しさん
05/03/01 10:15:10ってどんな状況だ?ホイールスクロール?
0629デフォルトの名無しさん
05/03/01 10:16:06WM_VSCROLL
0630デフォルトの名無しさん
05/03/01 10:29:45つ Spy++
0631デフォルトの名無しさん
05/03/01 10:36:25っ Winspector
0632デフォルトの名無しさん
05/03/01 10:37:510633612
05/03/01 11:26:57ありがとう〜
GetFontUnicodeRanges
から辿ってみたら
GetGlyphIndices
てのもみっけ。
でもどちらも_WIN32_WINNT>=500なんでつね。
今回はXP前提なのでコレ使ってみまっす。
0634デフォルトの名無しさん
05/03/01 12:09:26stdoutやstderrのデータを フック?して、EditBox等に表示したいんですが。
何かAPIありますか?
できれば、自分自身のアプリケーションと
systemやらCreateProcess、ShellExcecutなどで立ち上げた別のアプリケーションの
stdout,stderr,を別々に監視したいです。
0635デフォルトの名無しさん
05/03/01 13:08:00CreateProcessの引数のSTARTUPINFO構造体にstdin/out/errの各ハンドルを
指定できる。あとはパイプと組み合わせれば実現できます。
呼び出し側がVBならコレが使いやすいかもね。
ttp://www2d.biglobe.ne.jp/~Philopon/soft.html#tpcsrunca
0636デフォルトの名無しさん
05/03/01 13:13:46キーを押した時にメッセージは来ないのでしょうか。
普通のエディットコントロールでは、WM_COMMANDが来るようなのですが。
0637デフォルトの名無しさん
05/03/01 13:42:07式はどうなるのでしょうか?
dwInOctets
dwInUcastPkts
dwInNUcastPkts
は表示できるのですが、Octetsは通信してない時も値が入ってますし・・
どうかよろしくお願いします。
0638636
05/03/01 15:39:380639デフォルトの名無しさん
05/03/01 16:06:28ファイルアクセスを必要とする場合、SJIS形式のファイルを読み込む処理がある場合が多い。
UNICODEファイルを読み込むケースはほとんどない。
SJISファイルをUNICODEビルドで読み込む場合に用いるC標準関数_fgetts()が非常に遅い。
エンコードと無関係な部分においても、
文字列ソートする際などに用いる比較関数_tcsicmp()の処理がUNICODE版は非常に遅い。
補足:
MFCのUNICODE版ソケットクラスには長らく不具合が存在した。
ソケットプログラムのようなマルチプラットホームを意識すべき環境には、
UNIOCDEで開発する人が少ないので不具合の発見が遅れたとみるべきだろう。
結論:
多くの場合、UNICODEビルド生成物は処理が遅い。
単にバッファサイズが2倍必要になるだけなく、諸々の処理も重くなる。
UNICODEビルドの優位性を確認できない場合がほとんどである。
0640637
05/03/01 16:49:200641デフォルトの名無しさん
05/03/01 17:04:17文字色を変えたり、背景の色を変えたりすることはできますか?
0642デフォルトの名無しさん
05/03/01 17:04:32Win32スレなのに、NT系におけるAPIコールの速度比較を
何一つ行っていないのにワロタ。
0643デフォルトの名無しさん
05/03/01 17:11:100644デフォルトの名無しさん
05/03/01 17:45:36オーナードロー使え。
そしてスレ違い。
0645デフォルトの名無しさん
05/03/01 18:36:50色変えたいだけなのに
オーナードロー使え?
馬鹿も休み休み言え!
0646デフォルトの名無しさん
05/03/01 18:39:57オーナードロー
0647デフォルトの名無しさん
05/03/01 18:43:42オーナードローとか言ってる馬鹿は氏ね。
0648デフォルトの名無しさん
05/03/01 18:57:49//フォーマット出力
void Format(TCHAR* pFm,...){
TCHAR pOut[MAX_LOADSTRING];
wsprintf(pOut,pFm,...);
}
フォーマット出力をするwsprintfを、自分で作成した関数Formatでラップしたのですが、
なぜかwsprintfの ... の部分の指定がおかしいとのエラーが出ます。
この場合、wsprintfの ... の部分はどのように指定すればいいのでしょうか?
宜しくお願いいたします。
0649デフォルトの名無しさん
05/03/01 19:02:28va_list v;
va_start(v,pFm);
wvsprintf((char*)pOut,(char*)pFm,v);
va_end(v);
これで解決です。
0650デフォルトの名無しさん
05/03/01 19:11:37どうやって取得したらいいのでしょうか?
SDKってやつも見てみたのですが、
なにで検索していいのかさっぱりわかりませんでした。
もしかしたらスレ違いかも知れないのですが、
よろしくお願いします。
0651デフォルトの名無しさん
05/03/01 19:12:410652デフォルトの名無しさん
05/03/01 19:12:56UNICODEビルドでSJISファイルを読むのに_fgetts()を使ってどうすんだよ。 w
無茶苦茶だな。
0653デフォルトの名無しさん
05/03/01 19:14:56オーナードロー
0654デフォルトの名無しさん
05/03/01 19:15:20行ごとにWM_CTLCOLORLISTBOXメッセージが来ないんですが・・・
うちのWindowsが悪いのかな
(・∀・)ニヤニヤ
0655デフォルトの名無しさん
05/03/01 19:18:42そのメッセージでどうやって特定の行の色を変えるの?
0656デフォルトの名無しさん
05/03/01 19:19:40OSを再インストーノレし最新パッチを当てれば解決します。
0657デフォルトの名無しさん
05/03/01 19:20:500658デフォルトの名無しさん
05/03/01 19:21:42だれも寄り付かねーぞ
0659デフォルトの名無しさん
05/03/01 19:28:46ありがとうございます!
これで表示されているDirectXのバージョン情報を
API(C言語)で取得するのは可能なのでしょうか?
MSDNを見たのですが、どこのレジストリに書き込まれているのか
みつけられませんでした…
0660デフォルトの名無しさん
05/03/01 19:35:50GetFileVersionInfoで検索すればわかるよ
0661デフォルトの名無しさん
05/03/01 19:35:55>UNICODEビルドでSJISファイルを読むのに_fgetts()を使ってどうすんだよ。 w
>無茶苦茶だな。
は?
0662デフォルトの名無しさん
05/03/01 19:44:58UNICODEビルドで速度を実測したことないのか?
APIへ文字列渡しする機会などほとんどない。
よってAPI呼び出しによる差異はほとんど発生しない。
むしろ、CのUNICODE関数が遅いために問題が発生する。
バッファをエンコードせず直接読み出した場合、
結局MBCS系の関数を使い続けなければならず、
UNICODE関数はSJISファイル処理に向いてない。
0663デフォルトの名無しさん
05/03/01 19:47:57今、ハードウェアを制御するアプリケーションを作っていて、ハードウェアには付属のDLLが付属していてそれを使ってコントロールまでは出来ます。
そこで、2つのアプリケーションからそのハードウェアを制御したいのですが、付属のDLLを使用すると当然1つのアプリケーションしか制御できません。
(2つ目のアプリケーションを実行した時点でハードウェアが無いと怒られる)
そこで、複数のアプリケーションから操作できるように付属DLLを操作するDLLを作成していて
今現在、DLL間での変数の共有やGetProcAddressで関数のアドレスの取得などやってみたのですが、動かず。
GetProcAddressは仮想メモリ空間のアドレスなので他プロセスから呼び出せないのは当然な所までは分かりました。
こんな感じにしたいのですが↓
アプリケーション1→|
|制御DLL→付属DLL→ハードウェア
アプリケーション2→|
今思い浮かぶ解決策としては、別プロセスの関数を呼び出す、もしくは
DLL内にスレッドを作成し、スレッドをループさせ、共用変数を監視して実行させる方法の2種類です。
もうちょっと簡単な方法があると思うのですが、何かヒントをください。
0664デフォルトの名無しさん
05/03/01 19:50:59そんな君にこそAdvancedWindows。
読めばたぶん即・解決。
ここで説明してやってもいいけど長くなりそうなんでね・・・。
とりあえずNt系ならCreateRemoteThreadでも試せば?
0665デフォルトの名無しさん
05/03/01 19:51:160666デフォルトの名無しさん
05/03/01 19:52:04UNICODEビルドなら、ReadFile直後にMultiByteToWideChar。
何でCRTのMBCS関数が関係するのかわからん。
0667デフォルトの名無しさん
05/03/01 19:52:06wsprintf
とりあえず思いついた、上記二つの関数1,000,000回連続呼び出しという
意味の無さそうなテストの結果。
UNICODE : GetTextExtentPoint=2.406sec wsprintf=2.407sec
MBCS : GetTextExtentPoint=2.547sec wsprintf=2.735sec
結論:
差はあるっつえばある
0668デフォルトの名無しさん
05/03/01 20:00:35漏れもOutprocのCOMにするのに1票。簡単だから。
何らかの事情でそれが出来ないなら、自前でサーバプロセスを作って、
クライアントはWindows Messageなりソケットなりで繋げて使う。
0669デフォルトの名無しさん
05/03/01 20:04:25え?
それじゃ、_wfopen()、fgetws()をテキストモードで用いるのと同じだろw
>>667
GUならびにリソースを文字列渡しAPIで操作する機会は少ない。
1秒に1000回あるかどうか。
実際に圧倒的に多いのはユーザが用いる文字列比較関数・文字列操作関数。
この作業は、ユーザによるただのメモリ操作に属するが、
しかしこの作業がプログラム処理の主体になる。
0670デフォルトの名無しさん
05/03/01 20:07:52fgetwsとはMultiByteToWideCharの呼び出し頻度が異なる。
その上スレが違う。
0671デフォルトの名無しさん
05/03/01 20:09:35アフォ
0672デフォルトの名無しさん
05/03/01 20:10:560673デフォルトの名無しさん
05/03/01 20:11:45メモリ帯域は最近比較的多目なので、文字列操作で1バイトずつ処理するのも
1ワードずつ処理するのもたいして変わらないような気がする。
扱う対象がSJISならSJISのままでやればよろし、というのは当然だけどさ。
0674デフォルトの名無しさん
05/03/01 20:12:270675663
05/03/01 20:23:49答えて頂いた方々、ありがとうございました。
AdvancedWindowsは買ってみようと思います。
0676デフォルトの名無しさん
05/03/01 21:14:260677デフォルトの名無しさん
05/03/01 22:22:44|自前DLL→ハードウェア
アプリケーション2→|
0678デフォルトの名無しさん
05/03/01 22:26:31DLLはそれぞれのプロセスでLoadする必要があることは理解してる?
0679デフォルトの名無しさん
05/03/01 22:28:160680デフォルトの名無しさん
05/03/01 22:31:27付属DLLが排他処理を実現していると何度言えば(ry
むしろ、その排他処理を無効化したい質問者の真意を汲めと何度言えば(ry
0681デフォルトの名無しさん
05/03/01 22:33:552. プロセスがアタッチしたら歯痛スレッド作る
これだけでしょ?
0682デフォルトの名無しさん
05/03/01 22:34:55また、その処理速度の違いについても記述しなさい。
0683デフォルトの名無しさん
05/03/01 22:36:450684デフォルトの名無しさん
05/03/01 22:42:17なぜか自前の排他処理を紹介する日本語の不自由なスレ住人。
1.DLLを使うミニプログラムを作成する。
2.そのミニプログラムは起動時の引数指定で異なる動作を行い、すぐに終了する。
3.2つのプログラムから好きな時にミニプログラムをキックする。。
0685デフォルトの名無しさん
05/03/01 22:42:40Windowsならなおさら。
0686デフォルトの名無しさん
05/03/01 22:46:410687デフォルトの名無しさん
05/03/01 22:48:070688デフォルトの名無しさん
05/03/01 22:48:390689684
05/03/01 22:49:46対処法その2
1.「付属DLLを使うプログラム」をウィンドウアプリとして作成。
2.「付属DLLを使うプログラム」はメッセージループさせつつ常駐。
3.別プログラムから「付属DLLを使うプログラム」にユーザー定義メッセージなどを送る。
0690デフォルトの名無しさん
05/03/01 22:53:25_tcsicmp()はCライブラリ関数(の処理系独自拡張)。lstrcmpi()はWinAPIの関数。
lstrcmpi()は一般に時間が掛かる(と言われている)DLLの関数を呼び出すことになるので、
計測してみたら(どの程度の差が出るかはともかくとして)おそらくlstrcmpi()が_tcsicmp()より遅くなるだろう。
0691684
05/03/01 22:53:451.「付属DLLを使うプログラム」をソケットサーバーとして作成。
2.「付属DLLを使うプログラム」をlistenさせつつ常駐。
3.別プログラムから「付属DLLを使うプログラム」にソケットで命令送信。
0692デフォルトの名無しさん
05/03/01 22:54:120693デフォルトの名無しさん
05/03/01 22:56:49その2、その3は妥当だと思うけどね。 SendMessageって使ったことないの??
0694デフォルトの名無しさん
05/03/01 22:58:12あのさあ、msvcrt.dll使うことにしたらどのみちdllの関数呼び出すんだけど
0695デフォルトの名無しさん
05/03/01 22:58:49不思議
0696デフォルトの名無しさん
05/03/01 22:59:380697デフォルトの名無しさん
05/03/01 23:00:23ちょっと黙っててもらえる?
0698デフォルトの名無しさん
05/03/01 23:02:46スマソ
忘れていた。
0699デフォルトの名無しさん
05/03/01 23:03:200700デフォルトの名無しさん
05/03/01 23:06:09それ経由で間接的に呼び出されるのだよ。
だから静的リンクされたライブラリよりちょっとばかし不利になる。
不利といっても参照かjmpが一回増えるだけだけどね。
ということがAdvancedWindowsに書いてあったりなかったり・・
0701デフォルトの名無しさん
05/03/01 23:08:59その間違いを指摘した善意の別人を質問者と同一人物と思い込んで
勝手に他人を自演認定しているテンパッたアフォが一名、
このスレを荒らしているということだ。
0702デフォルトの名無しさん
05/03/01 23:09:23そのDLLがどんなものかわからないけど簡単にリソースのオープンとクローズが
できるならプロセス間の排他処理でいけますが、
オープンのときにハードウェアに時間のかかる初期化処理が発生するなどの
理由でそういった操作が不可能なんじゃないかな。
そういう理由なら1プロセスに処理を集中する必要があるように思うよ。
0703デフォルトの名無しさん
05/03/01 23:10:14GetProcAddressで得たDLL関数はIATを経由せずに呼び出せる。
GetProcAddressは直接エクスポートされた関数アドレスを返す。
だからもしもより速い方が良いと思うのなら、
使うDLL関数をGetProcAddressで取得しなおすと良いかもしれない。
0704デフォルトの名無しさん
05/03/01 23:11:20>>703は>>701の続き。
0705デフォルトの名無しさん
05/03/01 23:13:25だから最初に起動したプロセスのDLLの一番はじめに制御スレッド立ち上げて
プロセスアタッチ毎に排他制御しろってのが伝わってないみたいだね。
わかんないのはDLLの原理が理解できてないだけ。
0706デフォルトの名無しさん
05/03/01 23:16:25一番わかってないのは君だと思う。
0707デフォルトの名無しさん
05/03/01 23:16:480708デフォルトの名無しさん
05/03/01 23:20:38ユーザーが何をしたいか、どのような制限化にあるか、
全く理解できていないと思われる。
いつからユーザーがDLLを作ることが前提になったのか不思議だ。
0709デフォルトの名無しさん
05/03/01 23:24:310710デフォルトの名無しさん
05/03/01 23:27:21制御DLLだけは663が弄れるんだろ?
アプリ1 → 制御DLL → 付属DLL
最初のアプリ、制御DLLで2つスレッド立ち上げるんだわ。
付属DLLを制御するスレッド
制御スレッドに命令を送るスレッド
ついでにCreateMutexかなんかの排他制御用オブジェクトと
命令通知用のイベントオブジェクトを作る。
データを共有したかったら制御DLL内に共有セクション作ればいい。
アプリ2 → 制御DLL
制御DLLがこんときに立ち上げるスレッドは1つ
制御スレッドに命令を送るスレッド
付属DLLはアプリ1の制御DLLが占有してるのでリンクしない。
これでわかんねーかなあw
0711デフォルトの名無しさん
05/03/01 23:28:26_stricmp()ではないけど、UNICODE環境で速度を試してみた。
400000個ほどあるUnicode文字列をqsortでソートする際の比較関数を変えてみた。
_tcsicmp() 17秒 ※実際は_wcsicmp()
lstrcmpi() 2秒
予想に反してlstrcmpi()が速いのだけど、_wcsicmp()が異様に遅いともいえる。
誰か理由を教えてくれ・・・。
0712デフォルトの名無しさん
05/03/01 23:34:13なんか勘違いしてるとか。
0713デフォルトの名無しさん
05/03/01 23:35:220714デフォルトの名無しさん
05/03/01 23:35:30怒るかもしれないが、書かせてもらう。
制御DLLが必須ということになっている時点で、
君の中で強固な脳内補完が行われたのではないかね?
いくら排他制御を実装したところで、それを利用できるのは自分のプログラムだけだろ。
0715デフォルトの名無しさん
05/03/01 23:39:03人を勘違い呼ばわりする前に、自分が勘違いしてないか
確認した方がいいぞ。
WinBase.hでも見てこい。
0716デフォルトの名無しさん
05/03/01 23:41:12やっぱ俺の説明ちっとも理解してないみたいね。
>自分のプログラムだけだろ。
これ、何の反論なの?
俺>>663に対して説明したつもりなんだけど。
意味不明なんですがw
0717デフォルトの名無しさん
05/03/01 23:42:16アドビのホットショップみたいに、
ツールウィンドウをクリックしても、親のウィンドウはアクティブなままにしておく方法を教えていただきたいのですが。
通常だと、TOOLWINDOWをクリックすると、親のウィンドウは非アクティブ化しますが、
TOOLWINDOWも親のウィンドウも両方ともアクティブのままにしておきたいのです。
よろしくお願いいたします。
0718デフォルトの名無しさん
05/03/01 23:42:48みんなそんなにはずしてないように思うけどね。
ただいえることは、675の書き込みが微妙すぎる(笑
0719デフォルトの名無しさん
05/03/01 23:47:410720デフォルトの名無しさん
05/03/01 23:49:41>みんなそんなにはずしてないように思うけどね。
排他処理を用意しようとしている人は、思い切りはずしているでしょw
制御DLLを作ってもかまわないが、排他処理を入れる意味が全くない。
0721デフォルトの名無しさん
05/03/01 23:53:380722デフォルトの名無しさん
05/03/01 23:57:30付属DLLを複数で使うための排他制御なんだが。
付属DLLからぶら下がってるハードウェアは関係ない。
なんも理解してないな。
0723デフォルトの名無しさん
05/03/01 23:59:18>制御DLLが必須
とか妙な思い込みしてるみたいだけど、
DLL化しなくていいなら直接アプリ自身で制御DLLの役やっても変わらないが。
いいかげんAdvancedWindowsでも読んだら?
0724デフォルトの名無しさん
05/03/02 00:01:58普段気にしたことはないけどsetlocale系の設定って影響すんでしょうかね?
APIのlstrcmpiはコントロールパネルのロケールで動いてるんでしょうけど。
0726デフォルトの名無しさん
05/03/02 00:16:24Cランタイムをスタティックリンクすることも多いよ
0727デフォルトの名無しさん
05/03/02 00:17:03Spy++かなんかでホットショップとやらの窓のスタイルがどうなってるのか調べる。
0728デフォルトの名無しさん
05/03/02 00:20:28だからこそ、排他処理を自分で作る意味ないつってんだろ、アフォかお前?
オナニー排他処理なぞ作って楽しいのか?
0729デフォルトの名無しさん
05/03/02 00:22:390730デフォルトの名無しさん
05/03/02 00:31:14きちんと説明できないアフォみたいだし。
0731デフォルトの名無しさん
05/03/02 00:34:010732デフォルトの名無しさん
05/03/02 00:38:50Cランタイムをスタティックリンクしてもダイナミックリンクしても
結果は同じ?
0733デフォルトの名無しさん
05/03/02 00:44:54ブラックボックス(この場合付属DLL)を抱えてる以上、メッセージ待機は危険。
ブラックボックス内でメッセージ処理されたら悲惨なことになる。
0734デフォルトの名無しさん
05/03/02 00:49:27ひとつの制御スレッドだけが付属DLLをコントロールする構造なら、各アプリからの
命令はシリアライズ(順番化)するまたはされるから排他処理はいらないとも
いえるし、シリアライズすることが一種の排他処理ともいえる。
それでも複数の命令をセットで発行する必要があるなら排他は必要になりますけどね。
最初の質問をした人が戻ってこないとこれ以上の議論は無意味だと思うよ。
>>733
「付属DLLを使うプログラム」<−ここは弁護するよ、これをよくみよう
0735711
05/03/02 00:52:38>>711はスタティックリンクを使ってます。
ロケールは、_tsetlocale(LC_ALL, _T(".ACP")) を実行しています
当方の環境は、ToolKit2003のため、
標準C++ライブラリをダイナミックリンクするためのMSVCPRT.LIBがないため、
即座にダイナミックリンクを試せないので、ダイナミックリンクでやる気が沸きません。
C ランタイム ライブラリ用MSVCRT.LIBは入っているのですが。
なぜ、このような中途半端な配布になっているのか謎です。
0736デフォルトの名無しさん
05/03/02 00:54:58>ブラックボックス内でメッセージ処理されたら悲惨なことになる。
もっと詳しく
0737デフォルトの名無しさん
05/03/02 00:57:090738デフォルトの名無しさん
05/03/02 01:05:13排他処理のための排他処理かよ。
ポーリングだけで十分じゃん。氏ね、お前ら。
0739デフォルトの名無しさん
05/03/02 01:09:180740デフォルトの名無しさん
05/03/02 01:11:19今時好きなだけフリーズする簡単なアプリを作ってらっしゃると。
0741デフォルトの名無しさん
05/03/02 01:13:22誰がどの書き込みかはわからなくなってるけど、
なんかこれは関係ないのが煽りにきた感じだな。
0742デフォルトの名無しさん
05/03/02 01:14:25待つかどうかはユーザアプリ次第。
同期をDLLのなかでやろうとする馬鹿まで現れたか。
0743デフォルトの名無しさん
05/03/02 01:14:270744デフォルトの名無しさん
05/03/02 01:15:44なんなの、そのユーザーアプリって。
ポーリングはどこに掛かってるの?
0745デフォルトの名無しさん
05/03/02 01:25:06CPUを遊ばせておくよりは。
0746デフォルトの名無しさん
05/03/02 01:30:430747デフォルトの名無しさん
05/03/02 01:36:470748デフォルトの名無しさん
05/03/02 01:59:35それ(_tcsicmp)ねえ、_tsetlocale呼ばないとすごく速くなるんだけど、
そのかわり"ABCDE"と"abcde"が区別されちゃう。
デフォルトでは大小文字判定する文字が限定されているようだ。
0749デフォルトの名無しさん
05/03/02 02:53:57lstrcmpi()じゃなくてCompareString()でやらないとアンフェアということかねぇ。
0750デフォルトの名無しさん
05/03/02 04:09:18カーソルの点滅が止まってしまい、CPU率がすごく重くなるんですが、
解決方法がありましたら教えてください。
左ボタンを最初に押した時のみメッセージが来るようで、
押し続けている時は来なく、それはサブクラス化した場合も同じなので、
どれかのメッセージを防いで解決しようと思いましたがうまくいきませんでした。
0751677
05/03/02 05:02:19>>736 == >>730 == >>729 == >>718 == >>707 == >>706 == >>701 == >>693 == >>684 == >>663
0752デフォルトの名無しさん
05/03/02 05:04:40RickEdit
ってなんでしょう?
0753デフォルトの名無しさん
05/03/02 05:17:400755750
05/03/02 06:05:26改善されているようなので、そちらでやってみたいと思います。
失礼します。
0756デフォルトの名無しさん
05/03/02 07:06:50この手の書き込みする奴に聞きたいんだけど、
「だから何?」
0757デフォルトの名無しさん
05/03/02 07:08:16towlowerがとっても遅いのでそれに引きずられて
wcsicmpも遅くなる。何せ、かたやテーブル参照、方や
LCMapString呼び出しだから。
0758717
05/03/02 07:18:39Spyで調べて、スタイルをそのとおりにしましたが、
できませんでした。
誰か、解決法をご存知な方はいらっしゃいますか?
私の今必死にグーグルなどで調べています。
0759デフォルトの名無しさん
05/03/02 07:21:270760デフォルトの名無しさん
05/03/02 07:39:45式はどうなるのでしょうか?
dwInOctets
dwInUcastPkts
dwInNUcastPkts
は表示できるのですが、Octetsは通信してない時も値が入ってますし・・
どうかよろしくお願いします。
0761717
05/03/02 07:56:37ありがとうございました。
もう一点ですが、アクティブ化されるウィンドウ(タイトルバーの色がアクティブ色になる)は、デフォルトでは必ずひとつですが、
2つ以上のウィンドウをアクティブ表示したいのですが、その方法をご存知でしょうか?
この辺の資料が少なすぎて、手探り状態です。
よろしくお願いいたします。
0762デフォルトの名無しさん
05/03/02 08:55:25調べてみます。
ありがとうございました!
レス遅くなってすいません。
0763デフォルトの名無しさん
05/03/02 09:29:54API GetIfEntryのMIB_IFROW構造体のことだと書かないとスレを移しても回答はないと思いますよ。
0764デフォルトの名無しさん
05/03/02 09:32:45すいません。誰かが探してくれているみたいです。
0765デフォルトの名無しさん
05/03/02 09:41:28漢字変換を実装したいのですが、ひらがなを引数に渡すと、
それに対応する漢字が得られるAPIがありましたら教えてください。
0766デフォルトの名無しさん
05/03/02 10:14:140767765
05/03/02 10:25:58自作のウィンドウを出して、そこに得た漢字をずらっと並べて、
数が10個を超えた場合は、スクロール処理させる感じで、
そこで選んだ漢字を戻り値にして、元のウィンドウに表示させる感じです。
0768デフォルトの名無しさん
05/03/02 10:30:40第279章 IMEの操作 その2
第280章 IMEの操作 その3
第281章 IMEの操作 その4
第282章 IMEの操作 その5
第283章 IMEの操作 その6
http://www.kumei.ne.jp/c_lang/index_sdk3.html
0770765
05/03/02 10:56:36もう少し深く調べたいと思います。
お答えいただいた方、どうもありがとうございました。
0771デフォルトの名無しさん
05/03/02 12:18:54あんたの作るプログラムがすべてのように語られてもねぇ w
0772デフォルトの名無しさん
05/03/02 12:51:250773デフォルトの名無しさん
05/03/02 13:41:39Windows2000/XP系で、キーボードの低レベル割り込み
(9x系で言うとVxD)ってありますか?
また、Windows2000/XPに対してVxDでの割り込み(無理?)
できませんでしょうか?
0774デフォルトの名無しさん
05/03/02 13:55:080775デフォルトの名無しさん
05/03/02 15:13:05どの関数を使うんですか?
0776デフォルトの名無しさん
05/03/02 15:27:290777デフォルトの名無しさん
05/03/02 15:28:56GetClassLongPtr
0778デフォルトの名無しさん
05/03/02 16:10:13MFCのことならスレ違い
0779デフォルトの名無しさん
05/03/02 16:20:490780デフォルトの名無しさん
05/03/02 16:37:24ExtractAssociatedIcon
0781デフォルトの名無しさん
05/03/02 16:38:17「アイコン 拡張子 取得 API」とかでググればすぐにわかるのに。
0783デフォルトの名無しさん
05/03/02 16:53:32http://www.geocities.jp/ayana_city/window.jpg
表示されている2つのウィンドウを両方とも「タイトルバー部分のアクティブ表示」にしたいのですが、
どうすればいいのでしょうか?
0784デフォルトの名無しさん
05/03/02 17:25:06C:\Program Files\CBuilder6\Source\Mfc
0785デフォルトの名無しさん
05/03/02 17:34:190786デフォルトの名無しさん
05/03/02 18:15:41なんでそんなことしたいの?
フォーカスがどこにあるのか混乱するじゃん。
0787783
05/03/02 18:21:35ご返答助かります。
通常のウィンドウは、通常どおり、一つのウィンドウ(トップにある)だけアクティブにすればいいのですが、
ツールウィンドウは、常にアクティブにするような仕様にしたいのです。
フォットショップとかも、ツールウィンドウは常にアクティブ(タイトルバーの色もアクティブ)ですよね。
それに、ツールウィンドウは常にトップに位置するものですが、
このツールウィンドウが非アクティブになると、右上の閉じるボタン×が使えなくなり、
・トップに表示されているのに非アクティブ表示なのは不自然
・トップに表示されているのに、閉じるボタン×が使えない
ということになるので、
ツールウィンドウだけ常にアクティブ表示としたいのです。(タイトルバーの色がアクティブということです。)
グーグルで調べていますが、なかなかHitしません。
誰かご存知な方がいらっしゃいましたら、教えていただけないでしょうか。
0788デフォルトの名無しさん
05/03/02 18:28:520789787
05/03/02 19:17:30そうします。
自分でツールバーを模擬します。
そうするしか方法がないみたいです。
というより、Excelのツールバーを見て、ツールバー部分を独自に描画してるのを気づきました。 orz
0790デフォルトの名無しさん
05/03/02 19:19:53WM_NCACTIVATEを投げるの。
0791663
05/03/02 21:15:070792デフォルトの名無しさん
05/03/02 21:59:360793デフォルトの名無しさん
05/03/02 22:09:31_WIN32_WINNTを0x400以上あるいは_WIN32_WINDOWSを0x410以上と定義してからwindows.hをインクルードすれば良い。
前者はNT4以降、後者だとWin98以降で追加されているAPIなどが使用可能になる。WM_MOUSEWHEELもその「など」のうち。
0794デフォルトの名無しさん
05/03/02 22:43:17そこが非クライアント領域だった場合、どのウィンドウハンドルに対して
どんなメッセージと座標で送信すればいいんですか?
その点が非クライアント領域かどうかは WM_NCHITTEST を送って調べています。
0795787
05/03/02 23:21:50ありがとうございます。
WM_NCACTIVATEを投げて、
DefWindowProc(hWnd, message, 1, lParam);でアクティブ化したらできました。
ただ、タイトルバーはアクティブ表示になったのですが、
右端の閉じるボタン×が反応しなくなりました。
×ボタンを押しても、ウィンドウが閉じないのです。
見た目はアクティブ化されていますが、実際は非アクティブ化されたものでしょうから、
SetActivateWindowでアクティブ化をしましたが、×ボタンはマウスクリックに反応しません。
これはなぜなのでしょうか?
0796デフォルトの名無しさん
05/03/02 23:24:350797787 795
05/03/02 23:32:29http://www.geocities.jp/ayana_city/window2.JPG
SHOWされている3つのウィンドウ全て、×ボタンに反応させたいのです。
なぜか、WS_EX_TOOLWINDOWの2つの×ボタンが反応しません。
0798デフォルトの名無しさん
05/03/03 00:45:29rich edit control の version を調べる API にありますでしょうか。
winXP では、問題ないみたいだけど、win98 では EM_GETPARAFORMAT
が失敗します。
winXP で、default での line spacing が間延びしているのをなんとか
したいと思っているところです。(wordpad も間延びしていると思って
います。)
0799デフォルトの名無しさん
05/03/03 01:25:39OSのバージョンの問題とは思わないのかよ。
0800デフォルトの名無しさん
05/03/03 01:28:28VisualStudioで作成したアイコンを滑らかにしたような表示になるんですよね。
綺麗にみえるんですが、
そういう滑らかにする表現をしないで、ドットのまま描画させる方法ってありますか?
0801デフォルトの名無しさん
05/03/03 02:33:470802デフォルトの名無しさん
05/03/03 02:44:2448×48、32×32、24×24、16×16
をそれぞれ16色・256色・16777216色で全てアイコンファイルに組み込む。
ただし、16777216色版は必ずしも必要ない。
0803デフォルトの名無しさん
05/03/03 03:50:17クラス名とOSのバージョンで判断するんだったと思うが。
http://abfan.active.client.jp/024.html
リッチエディットは、新しいバージョンだと使えない機能なんかもあってややこしい。
各バージョンごとの機能の違いを書いたページがあったけど、URL忘れた。
0804798
05/03/03 09:49:02>>クラス名とOSのバージョンで判断するんだった...
そうと思っていましたが、win98 の Windows フォルダ見たら、
riched.dll v? ファイルバージン 4.0 257,440 バイト
riched20.dll v3.0 ファイルバージン 5.30.... 431,133 バイト
riched32.dll v? ファイルバージョン 4.00.... 197,392 バイト
があるので、EN_GETPARAFORMAT で PARAFORMAT2 が使えるのではと
期待しました。しかし失敗。バージョンが確認できて 2.0 未満なら
EM_GETPARAFORMAT を止めようかと思った次第。
win98 では、2.0 に行かないんなら、上の dll はなんなんだろう
って思ってしまった。
line spacing では、ぐぐると、うまく行かない Q&A があったりする。
0805804
05/03/03 11:17:340806デフォルトの名無しさん
05/03/03 14:45:41_WIN32_WINDOWSを0x410以上と定義って意味わかんないんだけど
0807デフォルトの名無しさん
05/03/03 15:41:27#define _WIN32_WINDOWS 0x410
#include <windows.h>
0808デフォルトの名無しさん
05/03/03 16:28:39どの関数を使えばいいのでしょうか。
宜しくお願いします。
0809デフォルトの名無しさん
05/03/03 16:40:280810デフォルトの名無しさん
05/03/03 16:40:55参考になるサイトがあったら教えてください
お願いします
0811デフォルトの名無しさん
05/03/03 16:44:54意味不明
0812デフォルトの名無しさん
05/03/03 16:50:28HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt以下を弄くる
http://support.microsoft.com/?scid=kb;ja;177241
0813デフォルトの名無しさん
05/03/03 16:58:31余裕で同じエラーでるんだけど
0814813
05/03/03 17:00:080816808
05/03/03 17:50:17文字列数(strlen)ではありません。
DCにSelectされているGDIOBJCTの状態での文字列の長さを知りたいです。
0817デフォルトの名無しさん
05/03/03 17:53:38strlenじゃないとすると、GetTextExtentPoint32かな。
0818デフォルトの名無しさん
05/03/03 18:30:100819デフォルトの名無しさん
05/03/03 19:54:40俺の感じてた違和感はそれだったのかー
0820デフォルトの名無しさん
05/03/03 19:57:19馬鹿か?黙っていればいいものを、それか、もっと別の面白いことでボケなさい
0821デフォルトの名無しさん
05/03/03 20:00:28文字列をGDIOBJECTとしてDCにSelectできるようなWindowsが出るまで
待ってくだちい。おながいします。
0822デフォルトの名無しさん
05/03/03 20:10:44Windows XP / _WIN32_WINNT>=0x0501
Windows 2000 / _WIN32_WINNT>=0x0500
Windows NT 4.0 / _WIN32_WINNT>=0x0400
Windows Me / _WIN32_WINDOWS=0x0490
Windows 98 / _WIN32_WINDOWS>=0x0410
Internet Explorer 6.0 / _WIN32_IE>=0x0600
Internet Explorer 5.01, 5.5 / _WIN32_IE>=0x0501
Internet Explorer 5.0, 5.0a, 5.0b / _WIN32_IE>=0x0500
Internet Explorer 4.01 / _WIN32_IE>=0x0401
Internet Explorer 4.0 / _WIN32_IE>=0x0400
Internet Explorer 3.0, 3.01, 3.02 / _WIN32_IE>=0x0300
0823デフォルトの名無しさん
05/03/03 21:54:31DrawTextもDT_CALCRECTでRECTで戻してくれるぞ。確か。
0824デフォルトの名無しさん
05/03/03 21:55:44詐欺だな
0825デフォルトの名無しさん
05/03/03 22:08:09そういやこれ見て#define _WIN32_WINNT 0にする技を思いついたことを思い出した。
0826デフォルトの名無しさん
05/03/03 22:19:160827デフォルトの名無しさん
05/03/03 22:29:100828デフォルトの名無しさん
05/03/04 00:42:030829デフォルトの名無しさん
05/03/04 00:46:04奴隷はいやだ!
奴隷はいやだ!
0830デフォルトの名無しさん
05/03/04 00:53:42hoge("filename.cpp"); //true
hoge("text"); //true
hoge("."); //「.」一文字はファイル名にならないのでfalse
hoge("2005\\03\\05"); //「\」をファイル名に使うことはできないのでfalse
こんなことができないかなと・・・
0831デフォルトの名無しさん
05/03/04 02:17:30CreateFile
0832デフォルトの名無しさん
05/03/04 03:27:12(1) 「ドロップダウン」でコンボボックスを作成
(2) 1つ以上のアイテムを追加 (例:"Windows")
(3) 追加したアイテムのうちの1つと同じ文字列を先頭から一部だけ入力 (例:"Win")
(4) MoveWindow() もしくは SetWindowPos() でコンボボックスのサイズを変更
このようにすると、フォーカスの有無にかかわらず勝手に "Windows" が選択され、
表示されてしまいます。"Win" を表示したままサイズを変更する方法をご存知の方が
いらっしゃいましたら、どうか教えてください。よろしくお願いします。
0833デフォルトの名無しさん
05/03/04 07:13:15理由言ってみ?
0834デフォルトの名無しさん
05/03/04 10:17:32ファイル名に0x81〜0x9Fや0xE0〜0xFFが使われてる事ってあるのかな?
0835デフォルトの名無しさん
05/03/04 10:52:230836デフォルトの名無しさん
05/03/04 10:52:570837デフォルトの名無しさん
05/03/04 11:03:47あるよ。
ウムラウトとかね。
0838デフォルトの名無しさん
05/03/04 12:09:16#define hoge(name) strpbrk(name, "\\/:*?\"<>|")
0839デフォルトの名無しさん
05/03/04 12:50:55前に調べたこと歩けど、APIでは用意されてないはず。
書いてあるの以外にも、ファイルの長さチェックやCOM1とかの予約名もあって結構複雑で。
>>838
例の3つ目に書いてある
>hoge("."); //「.」一文字はファイル名にならないのでfalse
でいきなり駄目だと思うけど。
0840デフォルトの名無しさん
05/03/04 13:30:030841デフォルトの名無しさん
05/03/04 13:36:26一部の漢字を使用したファイル名も使えなくなるね。
0842デフォルトの名無しさん
05/03/04 13:47:34そのメル欄は>>170からそのまんまなんでつか?
0843デフォルトの名無しさん
05/03/04 14:05:450844デフォルトの名無しさん
05/03/04 14:08:140845841
05/03/04 14:32:040846デフォルトの名無しさん
05/03/04 15:59:49アメリカなんかのソフトでReadMeとかに突然、半角のゥやョが出てきて何かと思ったら、
欧文フォントにすると©や®になるなんてことはしょっちゅう。これはファイル名じゃないけど。
0847デフォルトの名無しさん
05/03/04 17:02:520848838
05/03/04 17:25:28うぬぬぬ…
定義済みファイル名は置いといて、
#define hoge(name) (! _mbspbrk(name, "\\/:*?\"<>|") && (*name != '.' || *(name + 1) != '\0'))
これでどうだっっ
0849デフォルトの名無しさん
05/03/04 17:38:04無駄な足掻きを。
".."もダメだし、nameが""だったらname[1]はやっちゃダメだろう。
0850デフォルトの名無しさん
05/03/04 17:44:300851デフォルトの名無しさん
05/03/04 17:45:21もうそういうハンドルにしなさい。
0852デフォルトの名無しさん
05/03/04 17:49:30Win2kでNTFSでもふつーに .. 使えるんですけど。
>>851
やだ。
0853デフォルトの名無しさん
05/03/04 17:52:20..(親)が出来るのは当然。
...(=..\..)や、
....(=..\..\..)ができると言う話だ。
0854デフォルトの名無しさん
05/03/04 18:31:58GetOpenFileNameでOFN_NOCHANGEDIRをつけない時などに、
うまく動作しなくなる事があるのですが、これはどういう現象なんでしょうか。
0855デフォルトの名無しさん
05/03/04 18:45:56特にGetOpenFileNameはねぇ。
0856デフォルトの名無しさん
05/03/04 18:45:560857逆アセ初級者
05/03/04 18:47:06その後の使い方などよくわかりません。
どうすればいいのでしょうか?
DLしたURL
ttp://flasm.sourceforge.net/
0858デフォルトの名無しさん
05/03/04 18:51:06マニュアル嫁スレ違い
0859デフォルトの名無しさん
05/03/04 18:54:59おおっ、時間がまったく同じ!
なるほど。ドスでcdでパスを変化させますが、
あれと同じようなことが起こっているんですね。
ありがとうございました。
0860854, 859
05/03/04 18:56:160861デフォルトの名無しさん
05/03/04 19:18:45半角カタカナの小さい「ゥ」・・・ゥ
著作権を表わす(c)のかわりによく使われる。
0862デフォルトの名無しさん
05/03/04 19:39:590863デフォルトの名無しさん
05/03/04 19:56:410864デフォルトの名無しさん
05/03/04 20:22:50ありがとうございました。
0865デフォルトの名無しさん
05/03/04 22:06:21BCCってVBみたいにランタイムみたいなもの必要ないですよね?
0866デフォルトの名無しさん
05/03/04 22:07:29氏ね
0867デフォルトの名無しさん
05/03/04 22:19:36たぶんkernel32.dllあたりが必須。
0868デフォルトの名無しさん
05/03/04 22:24:35こんな差別はなかったかもしれない、ね。
0869デフォルトの名無しさん
05/03/04 23:48:500870デフォルトの名無しさん
05/03/04 23:50:48FLOAT で変数を宣言したのですが、中の値がずっと0と表示されます。
FLOAT a とし、
CHAR ch;
wsprintf(ch , "a=%f" , a);
TextOut(hdc , 0 , 0 , xh , lstrlen(xh));
(途中を省略しています。)
これで「a=0」と表示されます。
何がおかしい、またはここをこうすればよいなど、教えていただきたいです。
0871デフォルトの名無しさん
05/03/04 23:53:53とりあえず、ソースファイルの拡張子を*.cから*.cppに変えてビルドを試してから来い。
Cしか使わないからという短絡的動機で拡張子を*.cにする初心者が多すぎる。
0872デフォルトの名無しさん
05/03/04 23:57:32wsprintfの書式指定にfはありません。
0874デフォルトの名無しさん
05/03/05 00:21:46どうしてもと言うなら wsprintf(ch,"iTest=%d.%d", (int)a, (int)(a * 1000.0f) % 1000);
0875デフォルトの名無しさん
05/03/05 00:46:21>wsprintf(ch , "a=%f" , a);
これって間違いだよねぇ?
0876デフォルトの名無しさん
05/03/05 00:56:570877デフォルトの名無しさん
05/03/05 00:59:09というかコンパイル通らないだろ。それ?
0878デフォルトの名無しさん
05/03/05 01:26:28GetWindowLongとSetWindowLongで「アクセスが拒否されました。」が返ってくるんだけど
何かいい方法無いのかな?
0879デフォルトの名無しさん
05/03/05 02:07:13>これで「a=0」と表示されます。
が嘘な訳で、答える気しない。
0880834
05/03/05 02:20:59>>837
>>846
>>861
遅レスですが、勉強になりますた。
やはり、各言語に対応させるには、その言語分の
バージョンを作らないと駄目なんですね…。
1つのアプリで多言語対応…ってファイルを
扱う時点で無理って事ですか(;´Д`)
もし、やるとしたらOSの国コード調べて分岐とか…?
0881デフォルトの名無しさん
05/03/05 04:09:460882デフォルトの名無しさん
05/03/05 04:11:28AdvancedWindowsでプロセスとスレッドについて勉強して出直して来い。
0883デフォルトの名無しさん
05/03/05 04:39:54DLL で SetWindowsHookEx(WH_GETMESSAGE, ...) して、
WM_MOUSEWHEEL が来たら処理しているのですが、
以下の状況ではメッセージが送られてきません。
1.コンソールウィンドウがアクティブなとき
2.最小化ウィンドウがアクティブなとき(Alt+ESC使用時など)
上記の状況でもホイールメッセージを取得できる方法を知りませんか?
0884デフォルトの名無しさん
05/03/05 05:30:220885883
05/03/05 11:46:56素早いレスどうもです。
確かに WH_MOUSE_LL を使用する方法で試したら解決しました。
でもこの方法は NT系でしか使えないのが難点ですね…。
ひとまずはこれでやってみることにします。
ありがとうございました。
0886デフォルトの名無しさん
05/03/05 13:28:32あの「●●●」って表示されるやつです。
0887デフォルトの名無しさん
05/03/05 13:53:39http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/base/naming_a_file.asp
>880
Windows 上なら UNICODE 使っとけ、になるんじゃないの?
0888デフォルトの名無しさん
05/03/05 14:07:44HeapAllocで作ったメモリのサイズを調べる関数は何でしょう?
char* cp=HeapAlloc( 〜 )
cp <−このポインタのデータサイズを知りたい
0889デフォルトの名無しさん
05/03/05 14:10:450890デフォルトの名無しさん
05/03/05 14:14:28ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/editcontrols/editcontrolreference/editcontrolstyles.asp
0892デフォルトの名無しさん
05/03/05 15:34:11MSDNでHeapAllocを見ればSee Alsoに「HeapSize」って入ってるんだか
ら、自分で調べられるようになろうな。
0893デフォルトの名無しさん
05/03/05 16:13:50君、的はずしまくってるんだけど。
多分コメントしようがないと思うぞ。
はずしすぎてて。
0894デフォルトの名無しさん
05/03/05 17:17:19なぜか例外が多発するんです。
文字列の長さを、Setする文字列にあわせて動的にサイズ変更をしたいのですが、
例外が多発します。
この問題はどのようにすればクリアー(解決)できるのでしょうか。
0895デフォルトの名無しさん
05/03/05 17:20:22「クリアー(解決)」
↑
なんでこういう余計なことするの?理由書いてみ?
0896デフォルトの名無しさん
05/03/05 17:22:340897デフォルトの名無しさん
05/03/05 17:27:48まぁ、ソース晒すのが一番の近道だね。
0898894
05/03/05 17:39:22#include "Memory.h"
CMemory::CMemory(){
//hProcess=HeapCreate(HEAP_GENERATE_EXCEPTIONS,128,64000);
}
CMemory::~CMemory(){
Release();
}
void CMemory::Allocate(SIZE_T size){
pVoid=(char*)HeapAlloc(GetProcessHeap(),HEAP_GENERATE_EXCEPTIONS|HEAP_ZERO_MEMORY,size);
}
void CMemory::ReAllocate(SIZE_T size){
pVoid=(char*)HeapReAlloc(GetProcessHeap(),HEAP_GENERATE_EXCEPTIONS,pVoid,size);
}
char* CMemory::Get(){
return (char *)pVoid;
}
0899デフォルトの名無しさん
05/03/05 17:39:39unsigned long CMemory::GetSize(){
unsigned long ret;
ret=(unsigned long)HeapSize(GetProcessHeap(),HEAP_NO_SERIALIZE,(void*)pVoid);
return ret;
}
void CMemory::CopyMemory(CMemory* pSrcMem){
//
long size=pSrcMem->GetSize();
ReAllocate(size);
//
int c;
char* pDstMem=Get();
char* pSrcMem2=pSrcMem->Get();
for(c=0;c<size;c++){
*pDstMem=*pSrcMem2;
pDstMem++;
pSrcMem2++;
}
}
void CMemory::Release(){
HeapFree(GetProcessHeap(),0,(void*)pVoid);
}
0900894
05/03/05 17:42:36void CMemory::Allocate(SIZE_T size)
↓HeapReAlloc
void CMemory::ReAllocate(SIZE_T size)
↓char*にキャストして返り値
char* CMemory::Get()
↓サイズを得る
unsigned long CMemory::GetSize()
↓複製
void CMemory::CopyMemory(CMemory* pSrcMem)
↓解放
void CMemory::Release()
今年からプログラミングを始めた大学生です。
なにぶん、初心者でわからない点が多いのでアドバイスいただけたらうれしいです。
0901デフォルトの名無しさん
05/03/05 17:46:25メモリ確保失敗してるのに文字列をコピーしてるとか
ポインタとハンドル混同してるとか
確保した領域よりデカい文字列入れてるとか
そんなとこだろ
0902デフォルトの名無しさん
05/03/05 17:48:02アホの上塗りか。素直に「アホだから」ってかいときゃいいんだよ。
>>897
まさにその通り。アホのフォローは大変だな。
0903デフォルトの名無しさん
05/03/05 18:10:04ha ha ha
質問者より3ヶ月早くプログラミングを始めただけで上級者気取りか。
おめでてーな。
0904デフォルトの名無しさん
05/03/05 18:38:31技術以前の問題ですが。
それすらも分からないのに勝手に入ってこないでください。
0905デフォルトの名無しさん
05/03/05 21:29:40リストコントロールが自分で作ったバッファにコピーして、それを使ってくれるの?
0906デフォルトの名無しさん
05/03/05 21:35:29期間は関係ない。理解度の問題。
10年やってもアフォはアフォ。
0907デフォルトの名無しさん
05/03/05 21:41:52いいよ
0908デフォルトの名無しさん
05/03/05 21:43:07終端null分を確保していないに3000バッファ
0909デフォルトの名無しさん
05/03/05 22:13:11こらこら、君も理解できてないのに分かったようなレスを
しないように。
0910デフォルトの名無しさん
05/03/05 23:37:42サンキュー
0911デフォルトの名無しさん
05/03/05 23:42:46「なんちゃらフォルダを作成します」とか表示してファイルを作成できるAPIはありますか?
0912デフォルトの名無しさん
05/03/05 23:44:13おかしなAPIですね。
0913デフォルトの名無しさん
05/03/05 23:46:400914デフォルトの名無しさん
05/03/05 23:56:26そのことをユーザーに確認するダイアログを表示し、
OKを押下された場合にフォルダを作成して、
そこにファイルを作成できるAPIはありますか?
0915デフォルトの名無しさん
05/03/05 23:58:55そんなもんはない。
CreateDirectory
MessageBox
この辺使って自分で作れ。
0916デフォルトの名無しさん
05/03/06 00:12:010917デフォルトの名無しさん
05/03/06 00:18:570918デフォルトの名無しさん
05/03/06 00:27:18そうします。ありがとう。
0919デフォルトの名無しさん
05/03/06 00:29:20CPhotoshop ps;
for(;;)
sell(ps.clone());
0920デフォルトの名無しさん
05/03/06 00:31:510921abobe
05/03/06 00:40:330922デフォルトの名無しさん
05/03/06 00:48:06第2引数にFILE_FLAG_OVERLAPPEDフラグを指定しない事と
第3引数にPIPE_WAITフラグを指定する事は同じ意味でしょうか?
同期モード、オーバーラップモード、ブロッキングモード、非ブロッキングモードの
意味を理解するのに混乱してしまっています。
0923デフォルトの名無しさん
05/03/06 00:48:40普通はSHCreateDirectoryEx()でしょ。
0924デフォルトの名無しさん
05/03/06 00:54:09Minimum operating systems Windows 2000, Windows Millennium Edition
だしなぁ・・・
0925デフォルトの名無しさん
05/03/06 01:07:340926デフォルトの名無しさん
05/03/06 01:18:190927デフォルトの名無しさん
05/03/06 01:33:33sellのtargetを指定してないな。
エラーを吐くぞ
0928デフォルトの名無しさん
05/03/06 04:48:36対話ダイアログはないけど
MakeSureDirectoryPathExists()とか。
0929デフォルトの名無しさん
05/03/06 06:08:13Windows使ったことないのか?というか質問の意図が分かってなさそう。
0930デフォルトの名無しさん
05/03/06 08:25:31あるファイルを開いているプロセスを調べたり、
あるプロセスが開いているファイルハンドルを調べたりするってどうやるんですか?
要するにこういうことなんですが
ttp://www.sysinternals.com/ntw2k/freeware/procexp.shtml
0931デフォルトの名無しさん
05/03/06 10:19:36興味本位での質問はNGです。
0932デフォルトの名無しさん
05/03/06 10:43:04フォントを作る際、
int fontsize=12;
LOGFONT logfont;
memset(&logfont, NULL, sizeof(logfont));
logfont.lfHeight = fontsize;
logfont.lfWeight = FW_NORMAL;
logfont.lfCharSet = SHIFTJIS_CHARSET;
logfont.lfOutPrecision = OUT_DEFAULT_PRECIS;
logfont.lfClipPrecision = CLIP_DEFAULT_PRECIS;
logfont.lfQuality = DEFAULT_QUALITY;
logfont.lfPitchAndFamily = FIXED_PITCH;
strcpy(logfont.lfFaceName, "MS ゴシック");
と、フォントのサイズをint fontsize=12;としたのですが、MS-メモ帳と比べてフォントサイズの大きさに違いがあるんですけども、
何か修正しなければならないことはあるのでしょか?
MS−メモ帳と同じ大きさにしたいんです。
0933デフォルトの名無しさん
05/03/06 11:11:41たしかメモ帳の初期値はFixedSysの14ポイント。
0934932
05/03/06 11:17:16ええ、メモ帳のフォントのサイズも「12」と合わせた上で比較したのですが、大きさが異なるんです。
私の知識不足からくるものということはわかってますが、
どこに修正を加えればいいのでしょうか?
0935デフォルトの名無しさん
05/03/06 11:39:29メモ帳のフォントで使われている単位は「ポイント」
それに対して、LOGPONTのlfHeightは「ピクセル」
12センチと12インチを比べても一致しないのと同じこと。
相互変換にはGetDeviceCaps()を使うけど、定番の処理なので検索すればすぐ見つかる。
0937デフォルトの名無しさん
05/03/06 13:19:56> あるファイルを開いているプロセスを調べたり、
> あるプロセスが開いているファイルハンドルを調べたりするってどうやるんですか?
使ったこと無いけど、NTネイティブAPIをつかえばできると思う。
ZwQuerySystemInformationとかそのあたり。
http://www.pearsoned.co.jp/washo/win/wa_win49-j.html
http://www.amazon.co.jp/exec/obidos/ASIN/4891001917/250-4347431-2972203
0938デフォルトの名無しさん
05/03/06 22:23:51IE6の各種イベント(ボタンをおしたりメニューを選択したり)はフックできますが
(WM_COMMANDがフックされる)、例えばFireFoxのイベントは取得できません
(例えばメニュー選択中にMENU_SELECTは発生しない)。
Beckyのイベントはフックで来ますが、Netscape7.1のイベントは取得できません。
すべてのイベントを取得するにはどうしたらよいでしょう?
0939デフォルトの名無しさん
05/03/06 22:32:350940デフォルトの名無しさん
05/03/06 22:35:310941デフォルトの名無しさん
05/03/06 23:31:450942デフォルトの名無しさん
05/03/06 23:42:28InitializeCriticalSectionAndSpinCountを使おうと思ってコンパイルしたら
error C3861: 識別子は、引数依存の照合を使用しても見つかりません。
と言われて、仕方ないんで#define _WIN32_WINNT 0x0501と書いたらとりあえずエラーは出なくなったんだけど、
これでいいのかな?それとも何か別の正しい方法があるのかな
0943デフォルトの名無しさん
05/03/07 00:02:100944デフォルトの名無しさん
05/03/07 08:27:10wc.hbrBackground = CreateSolidBrush(RGB(0, 0, 0));
ってした場合ってこのブラシ破棄しないとダメぽ?
あと、BCCとVCとかBCBとかの総合環境ってのはどのくらい違うのでせうか・・。
0945デフォルトの名無しさん
05/03/07 09:14:00その手の定義が必要なものは見たまま、
使用するOSがそのバージョン以上であることを要求するからだよ。
デフォルトの状況だと昔のバージョンのOSでも動く関数しか使えない状態になってる。
仮に
_WIN32_WINNT 0x0501
を定義しないと使えないのであれば、その関数はWinXP以上の環境でないと使えない関数ということになる。
(NT4.0・2000等では動かない)
InitializeCriticalSectionAndSpinCountの説明見ると
Windows NT 4.0 SP3 以降
Windows 98 以降
となっているのでもう少し定義Verをさげられるんじゃまいかな?
面倒なのでその辺は自分でしらべておくれ。
0946デフォルトの名無しさん
05/03/07 09:19:09UnregisterClass時にシステムが破棄するから自分で破棄しちゃだめぽ と書いてある。
自前でUnregisterClass呼ばなくてもプロセス終了時にUnregisterClassされるはずなので
普通にアプリ作る場合はUnregisterClassも呼ばないかな、あんまり。
0947デフォルトの名無しさん
05/03/07 13:45:09GetCurrentThreadで返されたハンドルを他のスレッドに渡して使わせるには、
DuplicateHandleしないといけないんですよね?
0948デフォルトの名無しさん
05/03/07 13:54:240949デフォルトの名無しさん
05/03/07 14:12:16その場合DuplicateHandle必須。
GetCurrentThreadが返す擬似ハンドルは、他のスレッドからは使えないと思った方がいい。
>あるスレッドがこの関数を使って、自分自身を表す擬似ハンドルを作成しても、
>他のスレッドは最初のスレッドを参照する目的ではその擬似ハンドルを利用
>できません。擬似ハンドルは常に、その擬似ハンドルを使っているスレッド自
>身と解釈されます。
http://www.microsoft.com/japan/msdn/library/ja/jpdllpro/html/_win32_getcurrentthread.asp?frame=true
0950デフォルトの名無しさん
05/03/07 15:11:05#include <stdio.h>
void main( void )
{
intold ;
FILE *fp;
old = dup( 1 ) ;
fp = fopen( "data", "w" ) ;
_dup2( _fileno( fp ), 1 ) ;
puts( "この行はファイル 'data' に出力されます。\r\n" );
printf("hoge\n") ;
fflush( stdout );
_dup2( old, 1 ) ;
printf( "foo" ) ;
fclose( fp );
getchar() ;//ここのgetcharが、fooより先に表示されてしまうのは、なぜなんですか?
}
誰か分かる人いますか?
0951あら
05/03/07 15:15:380952デフォルトの名無しさん
05/03/07 15:16:330953デフォルトの名無しさん
05/03/07 15:44:25GetDC(m_hWnd)
したあと、必ずReleaseDCをしなければならないと決まりがありますが、
特にReleaseDCをしなくても、エラーは出ません。
これはGetDCをするたびに、メモリ領域が作成され、
終了後、すぐにReleaseで削除しないといけないということなのでしょうか?
GetDCを呼び出す回数が多いので、いちいちReleaseDCを呼び出すのが難です。
0954デフォルトの名無しさん
05/03/07 15:50:02Use MFC.
0955デフォルトの名無しさん
05/03/07 15:50:58「getcharが表示される」とはどういう意味?
それから、スレ違い。
0956デフォルトの名無しさん
05/03/07 15:52:44WTLについてるCDCとかCPaintDCがお勧め
0957デフォルトの名無しさん
05/03/07 16:23:10文字列表示関数、ビットマップ表示関数などを作って、引数の指定によっては、
関数の中で、Get〜Releaseを行うみたいな事をすればいい。
0958デフォルトの名無しさん
05/03/07 16:25:230959デフォルトの名無しさん
05/03/07 16:50:38呼び出し元のウィンドウハンドルを得る方法を教えてください。
呼び出し先への引数で、ウィンドウクラス名、ウィンドウタイトル名を渡して、
呼び出し先でFindWindowという方法は思いついたのですが、
ウィンドウクラスが渡せない状況の時はどうすればいいでしょうか。
0960デフォルトの名無しさん
05/03/07 16:56:14ウィンドウクラス名、ウィンドウタイトル名が渡せるのなら
ウィンドウハンドルを直接渡せばいいじゃない。
0961959
05/03/07 17:04:19すいません。ウィンドウハンドルも渡せません。
例えば、一般のテキストエディタからプログラムを呼び出し、
その引数にテキストエディタ名(.exe)、編集中の.txtを渡して、
呼び出し元の方でなんかやる見たいな事がしたいんです。
0963デフォルトの名無しさん
05/03/07 17:14:20ウィンドウハンドル渡せない理由が無いが?
0964959
05/03/07 17:24:56JmEditor2というテキストエディタからプログラムを呼び出したくて、
ツール実行という機能があるので、それで呼び出します。
ファイル名は、当然知っているので簡単に渡せますが、
ウィンドウクラス名、ウィンドウハンドル名は、
JmEditor2の中にアクセスできない状況(ユーザーとして使う状況)では、
分からないと思うのですが。
0965デフォルトの名無しさん
05/03/07 17:35:400966デフォルトの名無しさん
05/03/07 17:39:510967959
05/03/07 18:04:48そうですよね。%fとかで、ファイル名は簡単に分かるんですが、
ウィンドウクラス名、ウィンドウハンドルも渡す機能が欲しいです。
所で、テキストエディタから、別のテキストエディタを呼び出して、
その引数に現在編集している.txtのファイル名を渡すと、
(EcoNote.exe(フルパス一時ファイル名) → JmEditor.exe)
呼び出し先で編集して、呼び出し元の.txtも変わる見たいな事が
出来る事が分かったんですけど、これはどういう感じで行っているのでしょうか。
ファイル名しか渡していなく、僕の状況と同じだと思うんですが、
こちらはアクセスして処理できています。
0968デフォルトの名無しさん
05/03/07 18:21:16FindFirstChangeNotificationで監視していて
変更されたら再読み込みしてるとか?
0969959
05/03/07 18:29:18そのキーワードで調べてみます。
お答えくださった皆様、どうもありがとうございました。
うまくやるやり方が分かった時は、ご報告させていただきます。
0970デフォルトの名無しさん
05/03/07 23:07:22RubyでWinInet.dllを使おうとしているのですが、なんだかうまくいきません。
いかんせん、RubyでWin32APIを使うのは初めてなので、試行錯誤の連続ですが。
このサイトのVB用コードを参考に、翻訳+αしてみました。
ttp://www.geocities.co.jp/SilkRoad/4511/vb/wininet.htm
これがソースです。汚くてすいません;;
ttp://www.freewebz.com/pme_jp/inetlib.rb
このファイルを外部ライブラリとしてrequireした後、
(変数)=GetHttpData("(URL)")と呼び出します。
しかし、irbでやってみたところ、なぜか予期しない"1"を返してきます。
なぜでしょ?
0971970
05/03/07 23:11:560972デフォルトの名無しさん
05/03/07 23:20:130973デフォルトの名無しさん
05/03/08 00:13:08ありがとうございました
0974デフォルトの名無しさん
05/03/08 00:37:46一つ目はカラムの数を知ることができるマクロ(メッセージ)についてです。
ListView_GetColumnCountみたいなマクロがあれば一番なんですが、ないみたいなので
今のところListView_GetColumnでカラムのインデックスを0から増やしていって
FALSEが返るまで呼び出すことで数えています。
ただ、このやり方でホントに常に正しく数えられるのかどうか分からないし、
いまいちスマートさに欠けるやり方なのでよりよい取得方法があれば教えてください。
二つ目はListView_GetColumnWidthについてです。MSDNを見ると・・・
If you use the returned string width as the column width in a call to the ListView_SetColumnWidth macro,
the string will be truncated. To retrieve the column width that can contain the string without truncating it,
you must add padding to the returned string width.
となっていて、カラム幅を適切に設定したいならpaddingを足せとのことですが、このpaddingの値を適切に
取得する方法が分かりません。
以上です。どなたかご存知の方がいればよろしくお願いします。
0975974
05/03/08 00:40:49ListView_GetColumnWidth
じゃなくて
ListView_GetStringWidth
でした。
英文もこっちのマクロの説明です。
あ、あとあげ忘れてた。
0976デフォルトの名無しさん
05/03/08 00:45:00ちょっとよく分からないで書いてる部分もあるけど、
親プロセスを取得することは可能みたい。
というわけで、FindWindowしたウィンドウが親プロセスの
ウィンドウかどうかを確かめるなどの方法で、確実に起動元の
ウィンドウを特定することは可能だと思う。
親プロセス取得は、
- Retrieving the parent of a process (WinNT)
ttp://www.codeguru.com/Cpp/W-P/win32/article.php/c1437/
- class Win32_Process
http://msdn.microsoft.com/library/en-us/wmisdk/wmi/win32_process.asp
※ ParentProcessIdというメンバ
あたりを見てみました。
0977デフォルトの名無しさん
05/03/08 01:31:51一つ目はListView_GetHeaderしてHeader_GetItemCountかな。
0978974
05/03/08 02:12:18どうもです。一個目のほうはうまくいきました。
二つ目は今のところ適当に10pixelほど足してごまかしています。
カラム間の境界部分をダブルクリックするのをエミュレートすれば勝手に幅を整えてくれるとも
考えたのですが、なんか余計に泥臭くなってしまいそうでいまいちです。
Windows内部ではこの幅の調整の処理をうまく行えているということは
何か方法があるとは思うのですが・・・
0979デフォルトの名無しさん
05/03/08 02:24:31ListView_SetColumnWidthをLVSCW_AUTOSIZEでかな。
0982デフォルトの名無しさん
05/03/08 09:40:48Win32_NetworkAdapter
Win32_NetworkAdapterConfiguration
Win32_NetworkAdapterSetting
を使ってみたのですが、該当項目が見当たらなくて。
取得不可能??
0983デフォルトの名無しさん
05/03/08 10:07:56Win32_ComputerSystemのDomainじゃダメ?
0984デフォルトの名無しさん
05/03/08 10:59:30とれました!
ネットワークと違うところに格納されているとは盲点でした。
ありがとうございました。
0985デフォルトの名無しさん
05/03/08 12:09:360986デフォルトの名無しさん
05/03/08 12:28:48SetClassLongPtr 関数を使え。
0987985
05/03/08 12:40:510988デフォルトの名無しさん
05/03/08 12:47:090989デフォルトの名無しさん
05/03/08 13:02:00そのくらい自分で書け
0990デフォルトの名無しさん
05/03/08 13:13:020991デフォルトの名無しさん
05/03/08 15:44:340992デフォルトの名無しさん
05/03/08 19:24:410993デフォルトの名無しさん
05/03/08 20:28:510994デフォルトの名無しさん
05/03/08 20:36:320995デフォルトの名無しさん
05/03/08 20:40:46http://pc5.2ch.net/test/read.cgi/tech/1110281860/
0996デフォルトの名無しさん
05/03/08 20:48:510997デフォルトの名無しさん
05/03/08 20:57:420998デフォルトの名無しさん
05/03/08 21:03:59) )
ノ /^l'"'"~/^i'ツ'ッ.,
(( (( ヾ ヾ モフー・・・
) ) 丿 ミ ´ ∀ ` 彡
(( ( ノノ ッ _ ミ
∴∵ >> (´彡,. (,,_,ノ _,,.ヽ
//》||ヾミ\ "'"'゙''""''''゙""´
0999デフォルトの名無しさん
05/03/08 21:13:471000デフォルトの名無しさん
05/03/08 21:17:3010011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。