■過去ログ置き場に戻る■
1-
前250
次250
最新50
[memo]
"9999999999_00.html#R20"
という感じで、URLの最後に "#R
レスNo
" を追加すると幸せになれます。
Win32API質問箱 Build41
501
名前:
デフォルトの名無しさん
:2006/03/25(土) 12:27:05
>>500
WM_ACTIVATEAPPじゃダメなんか?
502
名前:
デフォルトの名無しさん
:2006/03/25(土) 12:33:26
全ての流れを掌握してるシステムより先に検知することなどできはしない
503
名前:
デフォルトの名無しさん
:2006/03/25(土) 12:39:16
キーボードドライバになんかかませばOSより先に知れるが。
504
名前:
デフォルトの名無しさん
:2006/03/25(土) 12:46:46
そんなことを知ってるヤツがここで聞くかよw
505
名前:
500
:2006/03/25(土) 13:08:30
えっと別に抑止したいとかOSより先にっとかゆんじゃなくて、
タイミングが知りたいだけなんですが…
WM_ACTIVATEAPPはAlt + Tabによる切り替えなのか
判断できないと思うんですけど、何か方法があるんでしょうか?
クリック操作でウィンドウが背後に回る時とかも来ますよね…
506
名前:
デフォルトの名無しさん
:2006/03/25(土) 13:20:30
GetKeyState取るとか。
フック掛ければ早そうだが。
507
名前:
デフォルトの名無しさん
:2006/03/25(土) 13:57:59
フックかければ、ユーザモードアプリより先に取れるはずだよ。
昔、それで、Alt+Tabを独自アプリに切り替えるプログラムがサンプルで Dr.GUIに出てたはず。
508
名前:
デフォルトの名無しさん
:2006/03/25(土) 14:01:56
win2000とかなら取れるけどwin9x系だと取れないことない?
以前winキーのフックができなくて困った記憶がある
509
名前:
デフォルトの名無しさん
:2006/03/25(土) 14:04:31
ローレベルフックしようとしたということではあるまいな
510
名前:
デフォルトの名無しさん
:2006/03/25(土) 14:06:50
そうそうローレベルフックしようとしてたような希ガス
だってローレベルじゃないとWinキー拾えないっしょ?
511
名前:
510
:2006/03/25(土) 14:08:52
記憶が定かじゃないんで間違ってるかもw
512
名前:
デフォルトの名無しさん
:2006/03/25(土) 16:42:52
同じくWinキーはローレベルフックでないと駄目だった記憶が…
513
名前:
デフォルトの名無しさん
:2006/03/25(土) 18:35:02
はじめまして
同じDLLをLoadLibraryで複数ロードした場合
h1=LoadLibrary("test.dll")
h2=LoadLibrary("test.dll")
インスタンスが複数できるイメージでいたのですが
あくまでもインスタンスは1つなんですね
これを上記 h1,h2で個別のメモリを共有しない方法あります?
検索すると逆に アプリケーション間でメモリを共有する
方法はたくさん載ってるのですが
よろしくお願いします
514
名前:
デフォルトの名無しさん
:2006/03/25(土) 18:58:03
>>513
test.dllを別名で保存してロードすればいい
515
名前:
デフォルトの名無しさん
:2006/03/25(土) 21:36:22
LoadLibraryがやってることを全て自前で実装してしまえばどうとでもできる。
516
名前:
デフォルトの名無しさん
:2006/03/25(土) 22:04:11
モーダルダイアログをモードレスダイアログのように親ウィンドウとアクティブ/非アクティブ
などの動作を共有する方法はないでしょうか?
別のウィンドウに親と自ウィンドウが隠されて、親ウィンドウがアクティブになった歳に
一緒に前面にくるような仕組みを行いたいのです、よろしくお願いします。
517
名前:
デフォルトの名無しさん
:2006/03/25(土) 22:13:01
モーダルといえば、ふつうそうなるけど。
モードレスのときに、モーダルのように、親からアクティブにしてほしい、ってことか?
518
名前:
デフォルトの名無しさん
:2006/03/25(土) 22:30:11
モーダルダイアログしか作成できないので、擬似的にでもモードレスと同じ動作をしたいのです。
現状では、スレッドを作成してモーダルダイアログを作成して、親ウィンドウと別々の
動作を可能にしているのですが、親ウィンドウが前面に出てくる時に
自ダイアログが前面に来ないのでこれをモードレスと同じような動きを作りたいと思って
質問させていただいています。
519
名前:
デフォルトの名無しさん
:2006/03/25(土) 22:35:14
モーダル、モードレスじゃなく、ウィンドウの親子関係の問題の気がするが…
520
名前:
デフォルトの名無しさん
:2006/03/25(土) 22:54:16
どうにかしてモーダルダイアログのHWND持ってくる必要があるが、
SetWindowPosとかでZオーダー変えればいいんじゃねーの?
つーか、
> モーダルダイアログしか作成できないので
コレがさっぱりワカンネ
521
名前:
デフォルトの名無しさん
:2006/03/25(土) 22:59:59
モーダルにしたければ、親ウインドウを無効にするだけでできるんだが、
まさかリソース系の専用のAPIを使わなければできないとか思ってるのか?
522
名前:
デフォルトの名無しさん
:2006/03/25(土) 23:06:12
モーダルで作成して、SetParentで親ウィンドウを指定したのですが
親ウィンドウ内にダイアログが作成されてしまいました。
モードレスも作成は出来るのですが、メッセージループにIsDialogMessageをかませられないので
正常に動作しなかったのです。
523
名前:
デフォルトの名無しさん
:2006/03/25(土) 23:08:56
ウインドウスタイルの設定すらまともにできないのなら、
猫のページを見て、やり方を覚えてからにしろ。
524
名前:
デフォルトの名無しさん
:2006/03/25(土) 23:36:46
>>513
逆に聞くが、なんで別のメモリにしたいの?
525
名前:
デフォルトの名無しさん
:2006/03/26(日) 00:03:09
スレッドセーフじゃないDLLを使わなくちゃいけなかったときに
>>514
の方法をやったことがあるな。
>>513
が同じ理由なのかは知らんけど。
526
名前:
デフォルトの名無しさん
:2006/03/26(日) 01:49:41
>>525
それよりも、スレッドセーフにするラッパーDLL作った方がいいんじゃない?
527
名前:
デフォルトの名無しさん
:2006/03/26(日) 08:18:02
>>526
kwsk
DLLの関数Aを呼んだあとで関数Bを呼ぶんだけど、
Aの結果を受けてBの動作が変わるという仕様だった。
「Aの結果」というのを、たぶんグローバル変数で持ってたんだな。
で、マルチスレッドで問題が起きた、と。
そのときの俺には
>>514
以外にいい方法が思いつかなかったんだ。
528
名前:
デフォルトの名無しさん
:2006/03/26(日) 09:49:45
>>520
ダイアログボックスを作るのにはDialogBox関数しかないとか思っているオチではないかと
529
名前:
デフォルトの名無しさん
:2006/03/26(日) 11:55:12
CreateDialogだろ、知ってるよ。IsDialogMessageをメッセージループに入れられないから
正常に動作しないんだよ。
自己解決するのでもう質問への回答はいらないです、失礼します。
530
名前:
デフォルトの名無しさん
:2006/03/26(日) 11:56:29
>>10
研究成果は国民の共有財産だ。
即物的なものにしか価値を認めないDQNにはわからないかもしれないがね。
531
名前:
デフォルトの名無しさん
:2006/03/26(日) 12:00:19
_, ._
Σ(゚Д゚) ←
>>10
532
名前:
デフォルトの名無しさん
:2006/03/26(日) 12:11:07
>>527
ラッパーDLL内で元のDLLをCopyFile
533
名前:
デフォルトの名無しさん
:2006/03/26(日) 12:27:36
>>10
は三週間も経った後に
見当違いのレスされてカワイソス
534
名前:
デフォルトの名無しさん
:2006/03/26(日) 13:31:03
>>529
本当にしたいことを捨て台詞とともに書くようじゃ、まっとうな回答は得られる訳ないな
535
名前:
デフォルトの名無しさん
:2006/03/27(月) 15:27:13
まともな質問もできないから自分に逆切れしてるだけかと
536
名前:
デフォルトの名無しさん
:2006/03/27(月) 22:19:44
エディットボックスでダブルクリックを検知したいんですけど、どうすればよいでしょうか?
537
名前:
デフォルトの名無しさん
:2006/03/27(月) 22:49:02
勇気で補え
538
名前:
デフォルトの名無しさん
:2006/03/27(月) 22:50:09
ttp://www14.big.or.jp/~ken1/tech/tech9.html
ここの下記のコード、コピっても全く反応がありません。
case WM_PAINT:
{
PAINTSTRUCT ps;
hdc = BeginPaint(hWnd , &ps);
…
Blit(hdc,hdc,0,100,50,50,400,260,RGB(0,0,0));
EndPaint(hWnd , &ps);
}
break;
どこが悪いか教えてください。お願いします。
539
名前:
デフォルトの名無しさん
:2006/03/27(月) 22:54:21
>>536
Edit Boxぐらい自前で作れるよ。そうすりゃ簡単。
どうしても、いやならメッセージをフックしろ。
540
名前:
デフォルトの名無しさん
:2006/03/27(月) 23:00:02
GDIナツカシス
>>538
透過部分を黒(0)、描画部分を白(1)にしたマスク画像を作って
まずマスク画像をBitBleでラスタオペレーションにSRCPAINTで描画、
そのあと本画像をSRCANDで描画すると透過処理できる
「背景とマスクをSRCPAINT(論理和)で結合し、そのあとSRCAND(論理積)で結合することによって
黒(0)の部分は全て0になり、白(1)の部分だけに描画される」
とか俺のAPIメモに書いてあった
541
名前:
デフォルトの名無しさん
:2006/03/27(月) 23:00:42
フックってDLL作るのがメンドイよなー
実行ファイルでも大丈夫って噂を聞いたが本当だろうか
542
名前:
デフォルトの名無しさん
:2006/03/27(月) 23:04:34
前提条件が他プロセスなのか?
情報を小出しにしないで、できる限り説明してから質問しろ。
543
名前:
デフォルトの名無しさん
:2006/03/27(月) 23:05:49
>>536
NM_DBLCLK or サブクラス化
544
名前:
デフォルトの名無しさん
:2006/03/27(月) 23:09:15
>>539
どうやって作るのかも言えよ!
つかえねえなボケが。
545
名前:
デフォルトの名無しさん
:2006/03/27(月) 23:24:43
EditBoxくらい、っていうけど、ちゃんとしたEditBox作るのは結構大変だよ。
たとえば、「右から左へ読む」とか「UNICODE制御文字の挿入」とか。
546
名前:
デフォルトの名無しさん
:2006/03/27(月) 23:30:13
大変って何が大変なんだ? アルゴリズムを考えるのが大変なら、自分の脳味噌を呪えよ。
547
名前:
デフォルトの名無しさん
:2006/03/28(火) 08:49:14
エディットボックスのダブルクリック検知くらいでフックとかアホかと・・・
548
名前:
デフォルトの名無しさん
:2006/03/28(火) 08:51:00
>>543
NM系はコモンコントロールの通知メッセージで標準コントロールじゃない
549
名前:
デフォルトの名無しさん
:2006/03/28(火) 09:31:27
>>548
御意
550
名前:
デフォルトの名無しさん
:2006/03/28(火) 10:33:51
故にサブクラス化にしる
551
名前:
デフォルトの名無しさん
:2006/03/28(火) 12:13:40
>>540
ありがとうございます。
552
名前:
デフォルトの名無しさん
:2006/03/28(火) 16:26:02
すみません、CreateFont/CreateFontIndirectで、固定ピッチの太字フォントを強制することは出来ますでしょうか?
LOGFONT logFont = {0};
HFONT hFont;
HDC hDC = GetDC(NULL);
logFont.lfHeight = nHeight;
logFont.lfWidth = 0;
logFont.lfWeight = bBold ? FW_BOLD : FW_NORMAL;
logFont.lfCharSet = SHIFTJIS_CHARSET;
logFont.lfOutPrecision = OUT_DEFAULT_PRECIS;
logFont.lfClipPrecision = CLIP_DEFAULT_PRECIS;
logFont.lfQuality = DEFAULT_QUALITY;
logFont.lfPitchAndFamily = FIXED_PITCH | FF_DONTCARE;
_tcscpy(logFont.lfFaceName, _T(pszFontName));
hFont = CreateFontIndirect(&logFont);
こんなコードを書いているのですが、FW_NORMALではフォント幅が
たとえば半角8pixel/全角16pixelで全て固定できるのですが
FW_BOLDの場合は9pixelとか17pixelとかの半端な文字が出てしまいます。
何か方法がありましたらご教示頂けませんでしょうか。
553
名前:
デフォルトの名無しさん
:2006/03/28(火) 16:36:14
>>552
8+1→9
16+1→17
554
名前:
デフォルトの名無しさん
:2006/03/28(火) 16:45:39
・日本語をあきらめ、Courier等を使う。
・太字描画処理を自分でやる。
555
名前:
デフォルトの名無しさん
:2006/03/28(火) 16:52:00
それを聞いて思ったんだが、オマイラもちろん
コード書くときのフォントはCourier(New)だよな!?
556
名前:
デフォルトの名無しさん
:2006/03/28(火) 16:54:57
Lucida Console です。
557
名前:
デフォルトの名無しさん
:2006/03/28(火) 17:02:57
ああ...書き方がまずかったですね、すみません
・lfWidthを8と指定しても9になる
・全角が半角の2倍にならない
など、FW_BOLD指定時とFW_NORMAL指定時でフォントの論理的な属性が
異なってしまう点で行き詰まっています。
明示的に指定した値そのもので、かつ全角が半角のきっちり倍になるような
太字フォントで描画することは可能でしょうか?
558
名前:
デフォルトの名無しさん
:2006/03/28(火) 17:03:05
自作フォントです
559
名前:
デフォルトの名無しさん
:2006/03/28(火) 17:04:58
目が見えません
560
名前:
デフォルトの名無しさん
:2006/03/28(火) 17:08:04
>>554
, 558
無理ですか...ありがとうございました。
561
名前:
デフォルトの名無しさん
:2006/03/28(火) 17:09:29
太さがNGなら色で区別つければ?
# 多分見難いかもしれんけど・・・
562
名前:
デフォルトの名無しさん
:2006/03/28(火) 17:16:46
>>558
うp
563
名前:
デフォルトの名無しさん
:2006/03/28(火) 17:43:01
固定ピッチのフォントは、ピッチが固定してるだけであって、2byte文字が1byte文字の2倍の幅とは限らない。
自前のウィンドウに描画するなら、1文字づつDrawTextすれば?
あるいは、2倍幅になるようなlfWidthのみを使う。
564
名前:
563
:2006/03/28(火) 17:49:54
>固定ピッチのフォントは、ピッチが固定してるだけであって、2byte文字が1byte文字の2倍の幅とは限らない。
(追記) BOLDにしなくてもサイズによっては、2倍になりません。
565
名前:
563
:2006/03/28(火) 17:51:32
>あるいは、2倍幅になるようなlfWidthのみを使う。
(訂正)あるいは、2倍幅になるようなlfHeightのみを使う。
566
名前:
デフォルトの名無しさん
:2006/03/28(火) 18:13:22
プログラミングにMSゴシック使っている俺は負け組?
567
名前:
デフォルトの名無しさん
:2006/03/28(火) 18:39:37
基本でしょう
568
名前:
デフォルトの名無しさん
:2006/03/28(火) 19:18:49
> 1文字づつDrawTextすれば?
ClearTypeとの相性最悪だから俺は好きでない。
569
名前:
デフォルトの名無しさん
:2006/03/28(火) 22:16:32
東風明朝
さざなみ明朝
1 l I | の区別が楽。
0の中に点があれば、もっとよかったけど。
570
名前:
デフォルトの名無しさん
:2006/03/28(火) 23:56:48
SMゴシップ
571
名前:
デフォルトの名無しさん
:2006/03/29(水) 00:04:03
>>557
フォントの指定を持って厳密におこなうと、lfWidthが8の場合も取れる事がある。
ただし、WIFE時代のフォントだけじゃないかな。日本語だと。
列挙して獲得 DCにセット後、論理フォントで確認、まですれば完璧。
一般的には、文字を描画するときに文字間が指定できる API があるから、それを使う。
572
名前:
デフォルトの名無しさん
:2006/03/29(水) 12:18:47
IMEで入力中というか、未確定文字列があるかどうかを知るには
どの関数が適してますか?
573
名前:
デフォルトの名無しさん
:2006/03/29(水) 12:31:26
質問です
自分の作ったアプリがWinXPでは動くけど、9xでは動かない時、原因としてどのような事が考えられるでしょうか。
・WINVER, _WIN32_WINNT, _WIN32_WINDOWSのバージョンを適切に設定する
・ユニコードビルドしない
くらいしか思いつかないのですが、何か他に気をつけなければならない点があったら教えていただけないでしょうか
574
名前:
デフォルトの名無しさん
:2006/03/29(水) 12:52:38
>>573
XPにも9xにも実装されている関数だとしても油断してはならない。
細かい差異が存在する可能性がある。
たとえばCreateWindow(Ex)では、
NTならHINSTANCEはヌルにして良いが、9xではヌルにできないと言う違いがある。
そんな具合なんでエラーになる箇所で呼んでいる関数をMSDNなんかで調べてみな。
575
名前:
デフォルトの名無しさん
:2006/03/29(水) 12:54:47
・IEのバージョン
・使用しているAPIが9xに対応したものかどうか
576
名前:
デフォルトの名無しさん
:2006/03/29(水) 12:57:42
>>574
なるほど、そりゃキツい
というか、9x系列のOSを持ってないので、9xでも動くように開発するのは無理そうですね…
577
名前:
は@
c178.016.c3-net.ne.jp
◆cplnFO9T0I
:2006/03/29(水) 13:07:19
?
GetDlgItemTextを行うためにDialogBoxで呼び出したダイアログボックスのハンドルを知る方法って無いですか?
578
名前:
デフォルトの名無しさん
:2006/03/29(水) 13:18:36
教えてオーナードロー&visual-styleに詳しい人
Vistaでプッシュボタンにカーソルを合わせると、じわぁと色が変るのですがあれってどうやるんでしょうか?
579
名前:
デフォルトの名無しさん
:2006/03/29(水) 13:21:08
>>577
LRESULT CALLBACK About( HWND hDlg,....)
{
n = hDlg;
......
}
これじゃダメなの?
580
名前:
578
:2006/03/29(水) 13:44:55
自己解決(してないけど)
MSDNフォーラムみてたら
「まだサポートしてない、Beta2辺りで新しいAPIを公開するかもしれないから待ってね」(適当に訳した)
とあった…orz
>>577
つ FindWindow()
ってDialogBox()で指定するDLGPROCのHWNDでいいんジャマイカ?
581
名前:
デフォルトの名無しさん
:2006/03/29(水) 15:05:33
ここで質問していいのかわからないのですけど、
「ファイル名を指定して実行」ダイアログのログってどこに保存されてます?
582
名前:
デフォルトの名無しさん
:2006/03/29(水) 15:12:18
レジストリのどこか
583
名前:
デフォルトの名無しさん
:2006/03/29(水) 15:13:37
>>581
レジストリ
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU
584
名前:
デフォルトの名無しさん
:2006/03/29(水) 15:26:40
ありがとうございました。
585
名前:
デフォルトの名無しさん
:2006/03/29(水) 15:30:43
パソコン初心者も見てるんだ
586
名前:
は@
c178.016.c3-net.ne.jp
◆cplnFO9T0I
:2006/03/29(水) 15:41:45
?
>>579
これで実行したものの、c_tempの中身が空になって終わりなんですよ。
ちなみにEndDialog(hDig, LOWORD(wParam));の前にブレークポイントを置いて確認しました。
LRESULT CALLBACK WProc_DISC_NAME(HWND hDig, UINT message, WPARAM wParam, LPARAM lParam){
switch(message){
case WM_INITDIALOG :
return FALSE;
case WM_COMMAND :
switch(LOWORD(wParam)){
case BTN_OK :
GetDlgItemText(hDig, TXT_DB, c_temp, sizeof(c_temp));
EndDialog(hDig, LOWORD(wParam));
return TRUE;
break;
default:
break;
}
break;
default:
break;
}
return FALSE;
}
587
名前:
は@
c178.016.c3-net.ne.jp
◆cplnFO9T0I
:2006/03/29(水) 15:49:23
?
>>586
訂正
×:空になって
○:空のままで
588
名前:
デフォルトの名無しさん
:2006/03/29(水) 15:52:44
c_tempの宣言はちゃんとしてる?
TXT_DBというコントロールにちゃんと文字列はあるの?
なんでGetDlgItemTextの戻り値をチェックしないんだ?
589
名前:
は@
c178.016.c3-net.ne.jp
◆cplnFO9T0I
:2006/03/29(水) 16:28:17
?
>>588
>c_tempの宣言はちゃんとしてる?
グローバル変数として宣言してあります。
>TXT_DBというコントロールにちゃんと文字列はあるの?
TXT_DBは別のダイアログでした。
>なんでGetDlgItemTextの戻り値をチェックしないんだ?
クイックウォッチで無いと返されました。
結論:バグ取りに手伝わせてしまい非常にすみませんでした。
(何故かメインのダイアログにあるTXT_DBをGetDlgItemTextの引数に指定していた上に
このダイアログのエディットボックスのIDをちゃんと変えていなかった為。
ちゃんとIDを決めてそのIDを引数にしたら上手く取り込めました。)
590
名前:
デフォルトの名無しさん
:2006/03/29(水) 20:35:25
>>555
Fixed98
斜線つきの0が好きなので
>>576
難しいけど無理ではない
591
名前:
デフォルトの名無しさん
:2006/03/29(水) 20:39:57
>555
Anonymous 最近聞いた。
592
名前:
デフォルトの名無しさん
:2006/03/29(水) 20:46:26
>>555
みそ字 が欲しいなぁ
593
名前:
デフォルトの名無しさん
:2006/03/29(水) 23:10:26
タスクトレイアイコンの上でマウス動かすとツールチップ出てくるけど、
あれをコードで出すにはどうすれば良いの?
594
名前:
デフォルトの名無しさん
:2006/03/29(水) 23:21:45
TextOut
595
名前:
593
:2006/03/29(水) 23:48:44
>>594
それってオレに対するレス?
だとしたらもう少しヒントお願い…
596
名前:
デフォルトの名無しさん
:2006/03/30(木) 00:06:24
>>593
ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/functions/shell_notifyicon.asp
これじゃないのか?ちょっと検索したらすぐ見付かったが
597
名前:
デフォルトの名無しさん
:2006/03/30(木) 00:49:25
メモリデバイスコンテキスト関連の質問です。
SelectObject (hdcMemM1, ii[0]) ;
SelectObject (hdcMemM2, ii[1]) ;
BitBlt (hdc, pos[0].x, pos[0].y, cxSource, cySource, hdcMemM1, 0, 0, SRCCOPY) ;
BitBlt (hdc, pos[1].x, pos[1].y, cxSource, cySource, hdcMemM2, 0, 0, SRCCOPY) ;
ここの部分を、下に直すと上手く動かなくなります。
SelectObject (hdcMemM1, ii[0]) ;
SelectObject (hdcMemM2, ii[0]) ;
BitBlt (hdc, pos[0].x, pos[0].y, cxSource, cySource, hdcMemM1, 0, 0, SRCCOPY) ;
BitBlt (hdc, pos[1].x, pos[1].y, cxSource, cySource, hdcMemM2, 0, 0, SRCCOPY) ;
出力したい画像が同じで、bitbltを使う場合同じ画像の出力がうまくいきません。
この場合メモリデバイスコンテキストはどのようにするのがヨイんでしょうか?
598
名前:
593
:2006/03/30(木) 00:50:57
>>596
バルーンはNIM_MODIFYすると直ぐ表示されるけど、
ツールチップはNIM_MODIFYしても何か表示されないっぽくて困ってます
599
名前:
デフォルトの名無しさん
:2006/03/30(木) 00:54:11
>>597
なんで転送元二つも必要なん?
画像が同じなら一つでいいじゃん。
600
名前:
デフォルトの名無しさん
:2006/03/30(木) 01:05:06
>>599
トンクスです。
ビットマップハンドルをコピーしてるのが良くなかった気がする。。
デバイスコンテキストハンドルのコピーで増やしてみる。
デバイスコンテキストだけで、128枚画像あるorz 疲れた
601
名前:
デフォルトの名無しさん
:2006/03/30(木) 08:27:57
>>597
1つのオブジェクトを複数のデバイスコンテキストが同時にSelectすることは出来ない。
602
名前:
デフォルトの名無しさん
:2006/03/30(木) 13:23:06
一つの「ビットマップは」だろ。
603
名前:
602
:2006/03/30(木) 13:33:28
>>753
動的にメモリを確保したいときに使う。
mallocしてしっかりfreeしないと、メモリリークが激しいよ。うん。激しいよ。
604
名前:
602
:2006/03/30(木) 13:34:05
あ・・・っ!激し・・すぎ・・!
605
名前:
デフォルトの名無しさん
:2006/03/30(木) 13:34:45
>>753
動的にメモリを確保したいときに使う。
mallocしてしっかりfreeしないと、メモリリークが激しいよ。うん。激しいよ。
606
名前:
602
:2006/03/30(木) 13:35:16
あ・・・っ!激し・・すぎ・・!
607
名前:
602
:2006/03/30(木) 13:38:24
誤爆しましたorz
C言語なら俺に聞け! Part 124
http://pc8.2ch.net/test/read.cgi/tech/1142302804/752-760
608
名前:
デフォルトの名無しさん
:2006/03/30(木) 15:55:04
つまり
SelectObject (hdcMemM1, ii[0]) ;
BitBlt (hdc, pos[0].x, pos[0].y, cxSource, cySource, hdcMemM1, 0, 0, SRCCOPY) ;
BitBlt (hdc, pos[1].x, pos[1].y, cxSource, cySource, hdcMemM1, 0, 0, SRCCOPY) ;
609
名前:
デフォルトの名無しさん
:2006/03/30(木) 19:39:01
>>605
malloc/freeだとフラグメント解消できないから、
プロはHeapCreate(0,0,0)してHeapAllocを使う。
610
名前:
デフォルトの名無しさん
:2006/03/30(木) 19:44:17
CreateThreadもリークしますよね?
どうしよ・・・・
611
名前:
デフォルトの名無しさん
:2006/03/30(木) 23:59:01
C++NETでSMTPによるメール送信プログラムを実装しました
次にSocketを使用して、SMTPメール送信するプログラムの実装をして見ようと
思うのですが、大まかな流れは
1 Socketの初期化
2 TCP/IPを設定
3 SMTP設定
4 Socketを閉じる
こんな感じでいいでしょうか?
612
名前:
デフォルトの名無しさん
:2006/03/31(金) 06:21:07
普通はプロトコルとかエンコードとかを考えると思うが
613
名前:
デフォルトの名無しさん
:2006/03/31(金) 06:33:09
うむ
まずはプロとコルだな
プロをマスターした後にコルを習得せよ
614
名前:
デフォルトの名無しさん
:2006/03/31(金) 08:38:24
ドトネトがやってくれるんじゃね
615
名前:
デフォルトの名無しさん
:2006/03/31(金) 10:25:30
>>610
後始末をすればリークしない
616
名前:
デフォルトの名無しさん
:2006/03/31(金) 12:32:28
>>611
だす
みなさんどうもです
PCからカキコ出来ないので、携帯からです
実は、TC/IPプロトコル部分をrawSocketを用いて実装したくて
WIN32APIをC++でコーディングした方がいいかと思い、このスレで質問させて
もらいましたが、ドットネットでもrawSocketの関数は用意してあるのでしょうか?
617
名前:
デフォルトの名無しさん
:2006/03/31(金) 12:47:40
サンプルはpingだけどこのあたり。
http://www.kt.rim.or.jp/~ksk/wskfaq-ja/advanced.html#rawsocket
618
名前:
デフォルトの名無しさん
:2006/03/31(金) 13:26:05
>>611
Cygwin使えばUnix用のsmtpsendのソースがそのまま使えるよ。
#WinSockは色々互換性がないので注意。
いずれにしても、後はネットワークプログラミングスレにでも。
619
名前:
デフォルトの名無しさん
:2006/03/31(金) 14:25:38
SMTP (Simple Mail Transfer Protocol)
そんなに難むほど難しいことかな?
620
名前:
デフォルトの名無しさん
:2006/03/31(金) 17:01:04
HTTPよりはムズイんじゃない?
621
名前:
デフォルトの名無しさん
:2006/03/31(金) 17:17:34
ウィンドウ内に二つの違う画像を並べるのってどうやるの?
______________
| |
| ◎ △ |
|____________|
こんな感じで、メニューで開いた画像を左にとかやりたいんだけども
622
名前:
デフォルトの名無しさん
:2006/03/31(金) 17:20:25
>>620
全然
620が「何処がどうムズイと思うのか」が知りたい
623
名前:
デフォルトの名無しさん
:2006/03/31(金) 17:21:18
それから、巨大な画像も
描画エリア内に収まるように縮小したりしたいんだけど
画像を扱うTIPがあまりなくて(´・ω・`)
624
名前:
デフォルトの名無しさん
:2006/03/31(金) 17:22:12
>>621
座標を指定すればいいじゃん
625
名前:
デフォルトの名無しさん
:2006/03/31(金) 17:23:11
>>623
つ StretchBlt
626
名前:
デフォルトの名無しさん
:2006/03/31(金) 17:27:10
Win32APIを始めようと、サイトを見ながら導入しようとしました。コンパイラはBorland C++ Compiler 5.5で、
サイトに書いてある通り、bcc32 -W test.c としてコンパイルしても
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
test.c:
警告 W8057 test.c 9: パラメータ 'hInstance' は一度も使用されない(関数 WinMain )
警告 W8057 test.c 9: パラメータ 'hPrevInstance' は一度も使用されない(関数 WinMain )
警告 W8057 test.c 9: パラメータ 'lpCmdLine' は一度も使用されない(関数 WinMain )
警告 W8057 test.c 9: パラメータ 'nCmdShow' は一度も使用されない(関数 WinMain )
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
Error: 外部シンボル '_main' が未解決(C:\BORLAND\BCC55\LIB\C0X32.OBJ が参照)
このようなエラーが出てしまいます。どこが問題なのか指摘して頂きたいのですが、お願いします。
627
名前:
デフォルトの名無しさん
:2006/03/31(金) 17:27:44
>>621
好きなように描け。
>>623
好きなように縮小しろ。
>>620
もしや、POP before SMTPとかSMTP認証とかと勘違いしていないか?
SMTP自体はCHAT作るより簡単だぞ。
628
名前:
デフォルトの名無しさん
:2006/03/31(金) 17:33:31
POP before SMTP だって、ソケット通信さえ出来ればどうということ無いしなあ。
メール関係で一番面倒なのは、メールメッセージそのものを作るところだよ。
629
名前:
デフォルトの名無しさん
:2006/03/31(金) 17:43:31
>>624-625
ありがd
ちょいと色々いじくってるけどまだ上手くいってない
>>627
それが出来ないから聞いてるんだよ('A`;
あと読み込んだ画像データを
ボタン押したらCUIプログラムに送って実行させるみたいな風にするにはどうしたらいいかな
それが一番やりたい
630
名前:
デフォルトの名無しさん
:2006/03/31(金) 17:47:50
>>629
つ WinExec
631
名前:
デフォルトの名無しさん
:2006/03/31(金) 18:11:25
>>626
-Wがあるから大丈夫なはずだけど何でだろう。
間のスペースが全角なのは、ここに書くときにそうしたと思うし。
632
名前:
デフォルトの名無しさん
:2006/03/31(金) 18:15:09
>>621
位置変えはBitBltの第2、第3引数に普通にあるような。
>>629
CreateProcess。
633
名前:
デフォルトの名無しさん
:2006/03/31(金) 18:17:33
>>631
そうですか・・・もう少し検索して方法を探してみる事にします。レス有難う御座います。
634
名前:
デフォルトの名無しさん
:2006/03/31(金) 18:27:07
-tWでないっけ?
635
名前:
デフォルトの名無しさん
:2006/03/31(金) 18:37:13
windows.hを挿入してないとか
PlatformSDKをいんぽしていないとか
もしそうなら抜くぞ
636
名前:
デフォルトの名無しさん
:2006/03/31(金) 18:45:45
>>634
両方試してみましたができませんでした。
>>635
サンプルコードですので、間違ってはいないと思うのですが・・・。
SDKをもう一度インストールし直してみます。
ダメであれば諦めます。有難う御座いました。
637
名前:
デフォルトの名無しさん
:2006/03/31(金) 18:48:20
>>626
というか真面目に学ぼうとするなら今更BCCなんて使うなや
638
名前:
デフォルトの名無しさん
:2006/03/31(金) 19:00:50
そうだな
VC++2005ExpressEditionが無償で配布されてるんだからそっち使った方がいい
俺もBCCから乗り換えた
639
名前:
デフォルトの名無しさん
:2006/03/31(金) 19:37:16
そして、LPTSTR hoge="hoge"; みたいなサンプルでハマる、と。
640
名前:
デフォルトの名無しさん
:2006/03/31(金) 19:41:56
プロジェクトの文字セット設定を変えればよろし
641
名前:
デフォルトの名無しさん
:2006/03/31(金) 19:55:01
最初からTEXTマクロとかTCHARを使って書けばいいんだけど、最初はウェブからコピペしちゃうよね。
VS2005でもエラーがなく通るのはPetzoldのサンプルコードぐらいか。
642
名前:
デフォルトの名無しさん
:2006/03/31(金) 20:13:43
TEXTマクロなんか使わなくても普通に通る
643
名前:
デフォルトの名無しさん
:2006/03/31(金) 20:32:59
デフォルトで_UNICODEとなってからはTEXTとかTCHARとかやめてwchar_t, L""で書いてる
644
名前:
デフォルトの名無しさん
:2006/03/31(金) 20:34:13
MFCのウィザードで自動で作られるようなメニューのサンプルってどこかにない?
開く・貼り付け・ヴァージョン情報あたりで十分なんだけど
645
名前:
デフォルトの名無しさん
:2006/03/31(金) 20:51:08
できね・・・Orz。最後に一つだけ質問させて下さい。SDKは25MBをDLして、CoreSDK-common.1.2.cab
のフォルダをbcc32.exeと同じ場所に置けばいいのですよね?
646
名前:
デフォルトの名無しさん
:2006/03/31(金) 20:58:22
>>643
引数がLPCTSTRになってる奴にwchar_t*って渡せたっけ?と思って
MSDNライブラリにあった型定義一覧を探してたが見つからない・・・
誰かどこにあったか知らない?
647
名前:
デフォルトの名無しさん
:2006/03/31(金) 21:10:55
そもそも簡単なサンプルのコンパイルならPSDKイラネはずだが。
最低限のSDKはBCCに付いてくる。
648
名前:
デフォルトの名無しさん
:2006/03/31(金) 21:11:48
>>646
LPCTSTRで検索したら普通に出てきたぞ
#ifdef UNICODE
typedef LPCWSTR LPCTSTR;
#else
typedef LPCSTR LPCTSTR;
#endif
typedef CONST WCHAR *LPCWSTR;
typedef __nullterminated CONST CHAR *LPCSTR;
なのでLPCTSTRにwchar_t*は渡せない
const wchar_t*なら渡せる
649
名前:
デフォルトの名無しさん
:2006/03/31(金) 21:15:30
>>648
逆
非constなポインタ引数にはconstポインタは渡せない。
650
名前:
デフォルトの名無しさん
:2006/03/31(金) 21:19:27
>>647
自分には無理な様なので脳内コンパイルで楽しみます。ご迷惑お掛けしました。
助言して下さった方々有難う御座いました!諦めます。
651
名前:
デフォルトの名無しさん
:2006/03/31(金) 21:21:46
実は警告とエラーの区別が付いていないだけと予想。
652
名前:
デフォルトの名無しさん
:2006/03/31(金) 21:33:37
>>651
ぬォォォォォォォォォぉぉぉできたーーーーーーーーーー!!!!
出来ましたよ!警告とエラーと言う意味深な発言をしてくれたので、まさかと思い実行しましたら
ウインドウが表示されました。有難う御座います。
コンパイル結果が警告が出たので先入観から無理と判断してしまってました・・・。
警告が出て違和感ありますが、出来てよかったです。
653
名前:
648
:2006/03/31(金) 21:36:44
>>646
漏れも
>>649
も寝ぼけてたようだww
(
>>649
の二行目は正しい)
LPCTSTRにはwchar_t*もcons wchar_t*も渡せる。
誤解のないように他のも言っておくと、
当然const LPCWSTR(=const wchar_t* const)やconst LPWSTR(wchar_t* const)も渡せる
(シグネチャは同じだしね)
654
名前:
デフォルトの名無しさん
:2006/03/31(金) 21:37:27
ちゅか誰か俺の644に応えて
655
名前:
デフォルトの名無しさん
:2006/03/31(金) 21:40:34
>>652
Warning も全部解決しる
メッセージをよーーーーーく読めばどうすれば分かるはず
656
名前:
デフォルトの名無しさん
:2006/03/31(金) 22:08:24
C++限定の方法。
int WINAPI WinMain(HINSTANCE, HINSTANCE, char*, int)
657
名前:
デフォルトの名無しさん
:2006/03/31(金) 22:18:36
>>654
猫でも分かる
658
名前:
デフォルトの名無しさん
:2006/03/31(金) 22:27:30
ある区間のコードだけは他のスレッドに制御が移らないように出来ますか?
659
名前:
デフォルトの名無しさん
:2006/03/31(金) 22:28:56
書籍やウェブサイトどおりに
int WINAPI WinMain(・・・){
・・・
return msg.wParam;
}
とすると警告が出るのですが、return (int)msg.wParam; にしたほうがいいんですか?
660
名前:
デフォルトの名無しさん
:2006/03/31(金) 22:31:05
無害な警告だし、明示的にキャストして消しても問題ないと思われ
661
名前:
デフォルトの名無しさん
:2006/03/31(金) 22:34:00
>>660
ありがとうございます。周りに合わせてキャストせずに放っておくことにします。
662
名前:
デフォルトの名無しさん
:2006/03/31(金) 22:34:33
x64 だと問題があるが、まあ意味はないな
663
名前:
デフォルトの名無しさん
:2006/03/31(金) 22:35:16
>>655
どう試してみても消える事が無いです。基本から始めていきいつか警告の意味を理解してみます。
WinAPIは楽しいですね。
664
名前:
デフォルトの名無しさん
:2006/03/31(金) 22:37:06
俺はstatic_castする。
665
名前:
デフォルトの名無しさん
:2006/03/31(金) 22:43:16
>>664
誰もそんなこと聞いてねーよボケ
だいたいC++かどうかもワカンネーだろ
666
名前:
デフォルトの名無しさん
:2006/03/31(金) 22:57:32
_tWinMainにしろ。
667
名前:
デフォルトの名無しさん
:2006/03/31(金) 23:19:59
>>658
ひたすらSuspendThread
668
名前:
デフォルトの名無しさん
:2006/03/32(土) 00:34:25
>>658
カーネルレベルで共有セマフォをねじる。
または、それが発生するような処理を「中途半端」に実行する。
スレッドレベルならば、リソースは共有されているわけで、ひたすら suspend すりゃいいと言うのが妥当。
669
名前:
デフォルトの名無しさん
:2006/03/32(土) 00:59:37
スレッドの優先順位を最高レベルに上げる。
670
名前:
デフォルトの名無しさん
:2006/03/32(土) 01:28:18
>>669
それだけは、やるな。
止めたいスレッド以外、つまりほかのプロセスまで止まる。
システムがCPUパワーをどのように割り振ってるか調べればわかるはず。
671
名前:
デフォルトの名無しさん
:2006/03/32(土) 04:41:34
>>670
調べるからAdvanced Windowsくれ。
672
名前:
デフォルトの名無しさん
:2006/03/32(土) 08:43:17
_tmemset() なぜないんだ
673
名前:
デフォルトの名無しさん
:2006/03/32(土) 09:27:42
>>672
つstd::fill_n
C++だけど。
674
名前:
デフォルトの名無しさん
:2006/03/32(土) 09:28:55
>>670
他のプロセスを止めてはいけないという前提条件は定義されていない。
675
名前:
デフォルトの名無しさん
:2006/03/32(土) 09:45:43
CPUが2つ以上あったら、suspendThread以外の手法では
並列実行されるけどそれは、「制御が移らない」という条件を満たすといえるの?
676
名前:
デフォルトの名無しさん
:2006/03/32(土) 09:51:37
複数のプロセッサを考慮するという前提条件が存在しないが、
それを追加するならプロセスの使用するプロセッサをマスクすればいいだけ。
677
名前:
デフォルトの名無しさん
:2006/03/32(土) 09:56:58
DualCoreとかHTとかある現状で、マルチスレッドプログラムが
マルチプロセッサを考慮しないのはとっても危険だと思うが。
678
名前:
デフォルトの名無しさん
:2006/03/32(土) 10:08:27
>>675
が思いつかなかった、回避方法は示したが、
解決したら逆にグダグダ文句を言い続ける。
相手に勝利するためのだけの議論のふっかけ乙。
679
名前:
デフォルトの名無しさん
:2006/03/32(土) 13:49:53
パソコン起動時に壁紙を自動で変更するプログラム作りたいんですが、
壁紙を変更する方法(どのファイルを書き換えればいいか?)と、
起動時にプログラムを自動実行させる方法を教えてください。お願いします。
680
名前:
デフォルトの名無しさん
:2006/03/32(土) 13:49:55
>>671
わかってるなら、いらないだろ。Advanced Windows。俺のは初版だから古いぞ。
681
名前:
デフォルトの名無しさん
:2006/03/32(土) 14:15:38
>>679
ファイル名を決め打ちで持っておいて、任意の壁紙ファイルをその名前にコピーするのが簡単。
#IrfanViewやブラウザがやってる方法もこれ。
その決め打ちのファイルを設定するのはレジストリだが、その位はユーザに選ばせてもいいかも。
自動実行は、スタートアップにショートカットを入れてしまうのがいちばん簡単かな。
これも、場合によってはユーザができることだし。
682
名前:
デフォルトの名無しさん
:2006/03/32(土) 15:08:44
>>679
[HKEY_CURRENT_USER\Control Panel\Desktop]
"Wallpaper"="C:\\WINDOWS\\Walking_Home_by_x_horizon.bmp"
"WallpaperStyle"="0"
この辺。
683
名前:
デフォルトの名無しさん
:2006/03/32(土) 15:19:55
レジストリで直接変更するとログインし直さないといけなくなるけど。
APIで用意されているのに使わない理由が何かあるの?
684
名前:
デフォルトの名無しさん
:2006/03/32(土) 15:28:49
>>681
,682
おお、なるほど。これなら、出来そうです。サンクス!
>>683
APIであったんですか。調べてみます、サンクス。
685
名前:
デフォルトの名無しさん
:2006/03/32(土) 16:23:15
リバーコントロールの上にスライダを乗せているのですが
スライダの背景色が描画されてしまいXPだと綺麗に見えません。
そこでリバーをサブクラス化して、WM_CTLCOLORSTATICで
SetBkMode((HDC)wParam, TRANSPARENT);
return (LRESULT)GetStockObject(NULL_BRUSH);
としてみたのですが、背景色が透明になるどころか
なぜか黒くなってしまいました。
原因や解決策をご存知の方はいらっしゃいませんか?
686
名前:
デフォルトの名無しさん
:2006/03/32(土) 20:00:49
>>684
APIであると言われて調べるのなら
なぜはじめに調べてみないんだろうか…
687
名前:
デフォルトの名無しさん
:2006/03/32(土) 20:09:56
APIであるなんて考えもしない
俺の場合
688
名前:
デフォルトの名無しさん
:2006/03/32(土) 21:07:32
ものすごくくだらない機能のAPIがあったような気がしたんだが
なんだっけ?
689
名前:
デフォルトの名無しさん
:2006/03/32(土) 21:14:19
それはようするに、誰が一番くだらないAPIを見つけられるかという
ネタ振りだな?
690
名前:
デフォルトの名無しさん
:2006/03/32(土) 21:25:04
CharNextを馬鹿にするな!
691
名前:
デフォルトの名無しさん
:2006/03/32(土) 21:39:19
ウィンドウが何のフォントを使っているのか調べる方法はあるのでしょうか?
MSDNを調べた結果、GetTextFace()だと思ったのですが、自プロセスのEditコントロールから取得すると何のフォントが使われていても"System"という文字列しか返ってこないようなのですが・・・?
692
名前:
デフォルトの名無しさん
:2006/03/32(土) 22:56:12
WM_GETFONT
693
名前:
デフォルトの名無しさん
:2006/03/32(土) 23:33:37
>>690
CharNext()は別に下らなくないだろ
694
名前:
デフォルトの名無しさん
:2006/04/02(日) 01:42:30
じゃあ、FreeLibraryAndExitThreadとか言ってみるテスツ
695
名前:
デフォルトの名無しさん
:2006/04/02(日) 02:00:58
画像を窓に表示させたいんだけど
これって勝手にスクロールバーとか出てこないの?
696
名前:
Win32API
:2006/04/02(日) 03:13:17
出てくるわけねーだろ
甘えんなヴォケ
697
名前:
デフォルトの名無しさん
:2006/04/02(日) 08:23:01
>>695
検索用キーワード
CreateWindow WS_VSCROLL WM_VSCROLL
698
名前:
デフォルトの名無しさん
:2006/04/02(日) 09:13:15
>>695
おれもあってもイイと思うがない。
high level の bmp control とか image control。audio control か sound control か
wave control とか。edit control, rich edit control があるもんな。
画像を扱う third party 保護といえば保護なんかな。
win98 時代にも jpeg, tiff などの filter も持っているのに公開していない。
自前で decode しないといけなかった。
API の説明も分かり難いものがある。使う側がテストしながら使うはめになる。
説明書くのを手抜きしたいなら、ソースを公開すればいいと思うんだが。
699
名前:
デフォルトの名無しさん
:2006/04/02(日) 09:40:48
>>698
( ゚Д゚)・・・
(゚Д゚)・・・
700
名前:
デフォルトの名無しさん
:2006/04/02(日) 11:03:02
SecureZeroMemory
701
名前:
デフォルトの名無しさん
:2006/04/02(日) 12:05:56
SetWindowsHook(Ex)でロードされたdllのDllMainは実行されますか?
702
名前:
デフォルトの名無しさん
:2006/04/02(日) 12:11:58
>>701
DllMain内でOutputDebugStringでも使ってデバッグ出力確認すればいいじゃない
703
名前:
デフォルトの名無しさん
:2006/04/02(日) 13:45:40
コモンコントロールをリソース無しで(CreateWindow系で)作っています。
この自作コントロール、親がダイアログの場合は何も問題が無いのですが、
親が普通のウィンドウの場合、再描画を行ってくれなくて困っています(例えばタスク切り替え時など)。
手直しする方法を御存知のかた、教えて頂けないでしょうか。
一応、親ウィンドウのWM_PAINTにて、(子の)InvalidateRect等を呼んでみたりしましが、駄目でした。
704
名前:
デフォルトの名無しさん
:2006/04/02(日) 14:11:20
>>703
親ウィンドウにWS_CLIPCHILDRENが付いてないとか言うなよ。
705
名前:
デフォルトの名無しさん
:2006/04/02(日) 14:42:37
>>704
はい、それは大丈夫です。
具体的にはWS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN | WS_CLIPSIBLINGS
でやってます。逆に、これを外しても駄目みたいです。
補足で、自作コントロールの方では、一応極力DefWindowProcを各メッセージで呼んでます。
706
名前:
デフォルトの名無しさん
:2006/04/02(日) 15:20:59
その自作コントロールは、WM_PAINTでちゃんと描画してるか?
707
名前:
デフォルトの名無しさん
:2006/04/02(日) 15:41:20
>>706
お付き合いどうもです。
例えば自作エディットコントロールなんですが、これを枠だけWM_NCPAINTで自前描画しています。
他の文字や反転処理、プロンプト描画などは全て、DefWindowProcに任せています。
そして一応成功しています。
問題なのはその自作エディットコントロールを一度ShowWindowで非表示>表示したり、
あるいはアプリをAlt+Tabでタスク切り替えしたときでして、この時コントロールの再描画を一切行ってくれません。
(ただこの場合も、そのコントロールにフォーカスが行くと再描画してくれます。)
708
名前:
デフォルトの名無しさん
:2006/04/02(日) 16:06:51
WM_NCPAINTでBeginPaint使ってるとか言うなよ。
709
名前:
デフォルトの名無しさん
:2006/04/02(日) 16:10:03
リストボックスを持ったモードレスダイアログを作りたいです。
BCCFormで作ったんですが、上手くいきません。
EXSTYLE WS_EX_DLGMODALFRAME
STYLE WS_POPUP | WS_THICKFRAME | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX | DS_SETFONT
スタイルがおかしいのでしょうか?
710
名前:
デフォルトの名無しさん
:2006/04/02(日) 16:11:13
リストビュー(レポートビュー)のカスタムドローで
NMCUSTOMDRAWのrcに正しい値が入ってないのは仕様なの?
x座標はあってたけど、y座標の値がでたらめだった。
LVM_GETSUBITEMRECTで解決したが、半日ほど悩んだ。
711
名前:
デフォルトの名無しさん
:2006/04/02(日) 17:30:48
>>708
マニュアル通り、GetWindowDC(GetDCEx)です。
どうもこいつは、ウィンドウベースじゃ無理そうだな…
712
名前:
デフォルトの名無しさん
:2006/04/02(日) 17:59:06
TerminateProcessで殺される事を、
事前に察知させる方法ありませんか?
せめてちゃんとリソースを破棄してから終了したいのです。
この仕様はあまりにも理不尽です。
Terminate呼ぶ代わりにWM_CLOSEみたいな
メッセージを投げるとかの対処しかありませんか?
713
名前:
デフォルトの名無しさん
:2006/04/02(日) 18:02:30
つまりアレか? メッセージ処理したくないけど終了前になんらかの処理を行いたいと?
714
名前:
デフォルトの名無しさん
:2006/04/02(日) 18:03:22
>>712
それでリソースの破棄に時間掛けたりあまつさえ無限ループしたりするのか?
馬鹿馬鹿しいイタチごっこだな
715
名前:
デフォルトの名無しさん
:2006/04/02(日) 18:33:53
とりあえずWM_CLOSEでも送ってみれば?
つーかものすごいバカっぽいな
716
名前:
デフォルトの名無しさん
:2006/04/02(日) 18:45:14
UNIXならシグナルハンドラでどうにかなるんだがな。
717
名前:
デフォルトの名無しさん
:2006/04/02(日) 18:52:35
ほう、どうやってUNIXでSIGKILLを処理するのか詳しく聞こうか?
718
名前:
デフォルトの名無しさん
:2006/04/02(日) 19:57:26
うむ
719
名前:
デフォルトの名無しさん
:2006/04/02(日) 20:49:13
シングルラインのエディットコントロールでEnterキーを押したときに鳴る
ビープ音を止めるにはどうすればよいでしょうか?
WM_KEYDOWNを捕まえても意味がなかったようです。。
720
名前:
デフォルトの名無しさん
:2006/04/02(日) 21:28:11
例えば
OKボタン、Cancelボタン、テキストボックスの3つしかないダイアログボックスがあります。
そして、テキストボックスに
http://test.jpg
などの文字列を入力。
その後OKボタンを押すとダウンロードが始まる仕組みを作りたいのですが、
このダウンロードのプロセスがわかりません。
APIの関数ひとつで出来るような簡単なものを想像しているのですが、実際のところ
どうすれば実現できるのでしょうか
721
名前:
デフォルトの名無しさん
:2006/04/02(日) 21:29:53
URLDownloadToFile だったっけ?重いファイルだと固まるけど
722
名前:
デフォルトの名無しさん
:2006/04/02(日) 21:32:33
>>721
さま
おぉ!即レスありがとうございます!
さっそくこの情報を元に頑張ってみたいと思います。ありがとうございました。
723
名前:
719
:2006/04/02(日) 22:29:27
自己解決しました。
WM_CHARを捕まえてVK_RETURNのときだけ
CallWindowProcを呼ばないようにしたら出来ました。
724
名前:
デフォルトの名無しさん
:2006/04/02(日) 23:17:56
BMP画像をクライアント領域よりも大きいときは縮小
小さいときは、クライアント領域内に表示っていうのがうまくいかない
誰かおしえてくれ。。。
725
名前:
デフォルトの名無しさん
:2006/04/02(日) 23:24:44
自分でどこまでできてどこが分からないのかを説明できるようになってからもう一度質問に来い。
726
名前:
デフォルトの名無しさん
:2006/04/02(日) 23:27:18
クライアント領域を指定して
そこに指定したデータを開いて
クライアント領域に合わせて画像を拡大縮小させるの
全部がわがんね
そんなことを説明してるサイトのアドを教えてよ
もう、疲れた
727
名前:
デフォルトの名無しさん
:2006/04/02(日) 23:43:22
すとれっちんぽ
728
名前:
デフォルトの名無しさん
:2006/04/03(月) 00:26:00
WM_CHARがキーボードからの入力なのか、
それとも何かのAPIがポスト or 送信したものなのか、判別する方法ってありますか?
729
名前:
デフォルトの名無しさん
:2006/04/03(月) 00:29:55
TranslateMessageがWM_KEYUP/DOWNを変換してWM_CHARを発行するんじゃなかったっけ?
730
名前:
デフォルトの名無しさん
:2006/04/03(月) 00:36:40
そのようなんですが、
キーボードからの入力があってWM_KEYUP/DOWNが来てWM_CHARが発行されたのか、
何かのAPIがWM_KEYUP/DOWNを送ってきてWM_CHARが発行されたのか、です。
(もしかしたら直接WM_CHARを送ってきている?)
wParamとかlParamを見るのかもしれませんが、とりあえずGetKeyStateでしのいでいます。
731
名前:
デフォルトの名無しさん
:2006/04/03(月) 05:07:08
>>724
クライアント領域の大きさを取得。
ビットマップの大きさを取得。
minマクロあたりで小さいほうを採用
ストレッチブリットを使う。
こんな感じでどうだい?
732
名前:
デフォルトの名無しさん
:2006/04/03(月) 05:09:53
説明は次のレスで。
HBITMAP CreateMask(HWND hWnd,HBITMAP Src,COLORREF trans){//マスク作成。透過色は黒になる。
BITMAP bm; HDC hdc,mdc,sdc,rdc; HBITMAP hbmp,hmono,old,old2,old3; COLORREF oldbk;
GetObject(Src,sizeof(BITMAP),&bm);
hdc = GetDC(hWnd);
mdc = CreateCompatibleDC(hdc);
sdc = CreateCompatibleDC(hdc);
rdc = CreateCompatibleDC(hdc);
hbmp = CreateCompatibleBitmap(hdc,bm.bmWidth,bm.bmHeight);
hmono = CreateBitmap(bm.bmWidth,bm.bmHeight,1,1,NULL);
ReleaseDC(hWnd,hdc);
old = (HBITMAP)SelectObject(sdc,Src);
old2 = (HBITMAP)SelectObject(mdc,hmono);
oldbk = SetBkColor(sdc,trans);
BitBlt(mdc,0,0,bm.bmWidth,bm.bmHeight,NULL,0,0,WHITENESS);
BitBlt(mdc,0,0,bm.bmWidth,bm.bmHeight,sdc,0,0,SRCCOPY);
old3 = (HBITMAP)SelectObject(rdc,hbmp);
BitBlt(rdc,0,0,bm.bmWidth,bm.bmHeight,mdc,0,0,SRCCOPY);
SelectObject(sdc,old);
SetBkColor(sdc,oldbk);
SelectObject(mdc,old2);
SelectObject(rdc,old3);
DeleteDC(sdc);
DeleteDC(mdc);
DeleteDC(rdc);
DeleteObject(hmono);
return hbmp;
}
733
名前:
732
:2006/04/03(月) 05:18:04
現在非常に困っています。お知恵を拝借したい。
>>732
はとあるビットマップの透過用マスク画像を生成するための関数です。
引数はGetDCするためのウインドウハンドルとマスクのソースとなるHBITMAPそして透過色を指定する数値です。
で、現状の問題はこの関数を使ってできた画像をそのままウインドウにBitBltしてみても期待のようにはならず白になってしまいす。
白になるのは途中でWHITENESSをBltしているからなんですが、その先の処理がうまく意図どおりに動かないようです。
どこか見落としなどの指摘があればぜひお聞かせください。
734
名前:
デフォルトの名無しさん
:2006/04/03(月) 05:55:57
誰もいない。
鳥のさえずり聞くなら今のうち。
ピーちゅんちゅん。ピーちゅんちゅん。ピーちゅんちゅん。ピーちゅんちゅん。ピーちゅんちゅん。ピーちゅんちゅん。
ピーちゅんちゅん。ピーちゅんちゅん。ピーちゅんちゅん。ピーちゅんちゅん。ピーちゅんちゅん。ピーちゅんちゅん。
ピーちゅんちゅん。ピーちゅんちゅん。ピーちゅんちゅん。ピーちゅんちゅん。ピーちゅんちゅん。ピーちゅんちゅん。
Orz
735
名前:
732
:2006/04/03(月) 06:24:26
寝ます。
それと質問は一端取り下げます。
また別の機会にでも質問させてもらおうと思います。
それじゃお休みです。
736
名前:
デフォルトの名無しさん
:2006/04/03(月) 10:21:36
>732
マジレスしてやる
そんな糞コードをこねくり回すよりCreateDIBSectionで作ったDIBに
自分でマスク用データ書き込んだ方が比較にならんほどマシ
全部書き直せ
737
名前:
デフォルトの名無しさん
:2006/04/03(月) 13:59:29
物理メモリの使用容量を取得するにはどうすればよいでしょうか?
GlobalMemoryStatusで取った総容量から空き容量を引いた値は
システムキャッシュで使われている分も含んでしまうので、
それを含まない値を取得したいのです。
738
名前:
デフラグさん
◆mRgSYalFkQ
:2006/04/03(月) 16:47:44
>>734
[゚д゚] デフラグカンリョウ
/[_]b
| |
Orz。。。。。。。。。。。。。。。。。。。。いいうえくさずちちちちちちちちちちちちちちちちちちちちちちちちち
ちちちちちちちちちちちちななののもゅゅゅゅゅゅゅゅゅゅゅゅゅゅゅゅゅゅゅゅゅゅゅゅゅゅゅゅゅゅゅゅ
ゅゅゅゅらりんんんんんんんんんんんんんんんんんんんんんんんんんんんんんんんんんんんんピピピピピ
ピピピピピピピピピピピピピーーーーーーーーーーーーーーーーーー今聞誰鳥
739
名前:
デフォルトの名無しさん
:2006/04/03(月) 17:11:58
画面のプロパティの設定タブで確認できる、各モニタ毎の番号は
EnumDisplayDevicesの第2引数で指定したもの+1なのでしょうか?
そうでないならばモニタ番号とディスプレイデバイスの対応を取る方法は無いでしょうか?
740
名前:
デフォルトの名無しさん
:2006/04/03(月) 17:30:48
createprocessでDOSプログラム(○.exe)に ”ファイルパス | -n > FILE” 見たいな感じのコマンドラインを実行させたいのですが
どういう風にもっていけばいいのでしょうか
ためしにノートパッドの起動だけやってみたのですが
ノートパッドだと、これに文字列がはじめに入力されるような感じで
STARTUPINFO si;
ZeroMemory(&si, sizeof(STARTUPINFO));
si.cb = sizeof(STARTUPINFO);
si.dwFlags = STARTF_USESHOWWINDOW;
si.wShowWindow = /*SW_HIDE*/SW_SHOWNORMAL;
PROCESS_INFORMATION pi;
CreateProcess(NULL, "notepad ", NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
741
名前:
デフォルトの名無しさん
:2006/04/03(月) 17:42:35
> UINT GetDlgItemText( HWND hDlg, int nIDDlgItem, LPTSTR lpString, int nMaxCount );
> BOOL SetDlgItemText( HWND hDlg, int nIDDlgItem, LPCTSTR lpString );
GetDlgItemText に必要なのがLPTSTR型で
SetDlgItemText に必要なのはLPCTSTR型ですが
GetDlgItemText で取得したものを SetDlgItemText で表示する際
データの変換はどうするのでしょうか?
(LPCTSTR)LPTSTR とか (LPTSTR)LPCTSTR 、あとstrcpy関数も試してみましたが
うまくいきませんでした
742
名前:
デフォルトの名無しさん
:2006/04/03(月) 17:52:21
>>740
何がやりたいのかさっぱり言ってることの意味わからん。
> コマンドラインを実行させたい
ここだけに反応すると
cmd.exe /c コマンドライン
を実行すればいい。
>>741
> うまくいきませんでした
では原因わからんわ。
質問するときは何が起こったのか書いてくれ。
743
名前:
デフォルトの名無しさん
:2006/04/03(月) 18:02:40
猫でもわかるWindowsプログラミングを片手に簡単なスクリーンセーバーを作ろうとしているのですが
ほぼ本の通りにやっているのですが、画像が表示されません
何度も本と見比べたのですが、どこが間違っているのかわかりませんでした
#define ID_TIMER 101
LRESULT WINAPI ScreenSaverProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
HDC hdc, hdcMem;
static RECT rc;
HBITMAP hBmp;
BITMAP bmpInfo;
switch(msg){
case WM_CREATE:
SetTimer(hWnd, ID_TIMER, 500, NULL);
GetClientRect(hWnd, &rc);
break;
case WM_TIMER:
if(wParam != ID_TIMER) break;
hdc = GetDC(hWnd);
hBmp = LoadBitmap(hMainInstance, "MY_BITMAP"); // ビットマップリソース
GetObject(hBmp, (int)sizeof(BITMAP), &bmpInfo);
hdcMem = CreateCompatibleDC(hdc);
SelectObject(hdcMem, hBmp);
BitBlt(hdc, 50, 50, bmpInfo.bmWidth, bmpInfo.bmHeight, hdcMem, 0, 0, SRCCOPY);
DeleteObject(hBmp);
DeleteDC(hdcMem);
ReleaseDC(hWnd, hdc);
break;
どこが悪いのか教えて頂けないでしょうか
744
名前:
デフォルトの名無しさん
:2006/04/03(月) 18:04:19
うわ、スペースおかしくなってしまってすいません・・・
745
名前:
デフォルトの名無しさん
:2006/04/03(月) 19:05:44
CreateProcess(NULL, "netsh interface ipv6 install", NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
これで出来ないか?と一週間前に知った関数で知ったかンス
流してほしい海の果てまで
746
名前:
デフォルトの名無しさん
:2006/04/03(月) 19:15:49
>>736
おはようございます。
書き直しですか。なるべく泥臭いことはしたくなかったんですが。
少々残念ですが、そのように検討してみます。
747
名前:
デフォルトの名無しさん
:2006/04/03(月) 20:16:09
>>741
LPTSTRはTCHAR*のtypedef。
LPCTSTRはconst TCHAR*のtypedef。
だからLPTSTR型のオブジェクト(変数)はLPCTSTR型へ暗黙の内に変換できる。
748
名前:
デフォルトの名無しさん
:2006/04/03(月) 20:36:13
>>745
自分へのレスでいいのかな?
どうもです。
ただ、プログラム始めたばかりなので
いまいちどういう関数か分からくて試すのに時間がかかりそうです。
749
名前:
デフォルトの名無しさん
:2006/04/03(月) 20:37:18
あ、上は
>>743
です。ここってID出ないんですね
750
名前:
デフォルトの名無しさん
:2006/04/03(月) 20:44:22
実はリソースが無いというオチではないか
■過去ログ置き場に戻る■
1-
前250
次250
最新50
DAT2HTML
0.33f Converted.