■過去ログ置き場に戻る■
1-
前250
次250
最新50
[memo]
"9999999999_00.html#R20"
という感じで、URLの最後に "#R
レスNo
" を追加すると幸せになれます。
Win32API質問箱 Build27
501
名前:
デフォルトの名無しさん
:05/02/03 17:36:40
ws &= ~WS_THICKFRAME;
502
名前:
デフォルトの名無しさん
:05/02/03 17:36:48
WS_EX_CLIENTEDGEつけてないか?
503
名前:
500
:05/02/03 17:38:00
作りたいのは、こういうToolTipみたいなものです。
http://www.geocities.jp/ayana_city/tooltip.jpg
周囲の縁は上記の写真のとおり、一ドットまでならOKです。
504
名前:
デフォルトの名無しさん
:05/02/03 17:39:13
>>496
Win32APIじゃないけど文字列検索ならとりあえずstd::string::findとかstd::strstrとか
505
名前:
デフォルトの名無しさん
:05/02/03 17:39:14
VCならリソースエディタでダイアログ弄って試したら。
506
名前:
デフォルトの名無しさん
:05/02/03 17:42:23
http://www.geocities.jp/ayana_city/windowstyle.jpg
http://www.geocities.jp/ayana_city/tooltip.jpg
このページは準備中です
申し訳ありませんが、このページは現在利用できなくなっています。しばらくたってからもう一度お試しください。ご不明な点があれば、ヘルプをご覧の上、お問い合わせください。
507
名前:
500
:05/02/03 17:46:43
DWORD dwStyle;
DWORD dwExStyle;
lpszClassName = AfxRegisterWndClass( CS_HREDRAW | CS_VREDRAW, hCursor);
dwExStyle = WS_EX_TOPMOST;
dwStyle &= ~WS_THICKFRAME;
return CreateEx( dwExStyle, lpszClassName, _T("タイトルバー"), dwStyle, rect, NULL, NULL, NULL);
だと、縁有りになりますね。
508
名前:
デフォルトの名無しさん
:05/02/03 17:46:54
>>504
それって2バイト文字考慮されてなかった希ガス
509
名前:
デフォルトの名無しさん
:05/02/03 17:48:11
>>500
ttp://forums.belution.com/ja/vc/000/059/84.shtml
510
名前:
デフォルトの名無しさん
:05/02/03 17:48:22
>>507
dwExStyleを初期化せずにdwStyle &= ~WS_THICKFRAME;ですかぁ?
511
名前:
500
:05/02/03 17:54:06
いえ、dwExStyle=0として試しましたが、駄目でしたよ。
>>509
さん、
それ参照したいと思います。
皆さん、本当にご迷惑おかけして吸いません。
512
名前:
デフォルトの名無しさん
:05/02/03 17:57:17
#define WS_OVERLAPPED 0x00000000L
というのはわりと嵌りやすい罠だな。
513
名前:
デフォルトの名無しさん
:05/02/03 17:58:03
>>507
ウィンドウ作られあとに(WM_CREATEとかの処理の中で)
GetWindowStyle
ws &= ~WS_THICKFRAME
SetWindowStyle
じゃだめ?
514
名前:
デフォルトの名無しさん
:05/02/03 17:59:01
>>512
#define WS_OVERLAPPEDWINDOW (WS_OVERLAPPED | \
WS_CAPTION | \
WS_SYSMENU | \
WS_THICKFRAME | \
WS_MINIMIZEBOX | \
WS_MAXIMIZEBOX)
ですが何か?
515
名前:
500
:05/02/03 18:05:54
BOOL CXSFrameWnd::CreateTest(CWnd* pWnd)
{
LPCTSTR lpszClassName;
CRect rect( 0, 0, 300, 200);
HCURSOR hCursor = ::LoadCursor( NULL, IDC_ARROW);
DWORD dwStyle=0;
DWORD dwExStyle;
lpszClassName = AfxRegisterWndClass( CS_HREDRAW | CS_VREDRAW, hCursor);
dwExStyle = 0;
dwStyle = WS_POPUP | WS_SYSMENU;
dwStyle &= ~WS_THICKFRAME;
return CreateEx( dwExStyle, lpszClassName, _T("タイトルバー"), dwStyle, rect, NULL, NULL, NULL);
}
やはり、こうなります。(2ドットの縁有り)
http://www.geocities.jp/ayana_city/windowstyle.jpg
orz
516
名前:
500
:05/02/03 18:13:05
leftとtopに、2ドットのラインがあるんですよね。
その2ドットは多少の色違いがあるから、窪みがあるように見える。
rightとbottomは一ドットなんですけども。
left top right bottomの四方全て、一ドットの枠にしたいんですが。
517
名前:
デフォルトの名無しさん
:05/02/03 18:16:51
dwStyle = WS_POPUP | WS_SYSMENU;
dwStyle &= ~WS_THICKFRAME;
アフォ?
518
名前:
デフォルトの名無しさん
:05/02/03 18:16:57
MFCの話だとスレ違いじゃねぇかと思うが。
CXSFrameWndがCFrameWnd派生だとすると、段差がついてるのはCXSFrameWndに貼り付けられた子ウィンドウのほうなんじゃねぇか?
519
名前:
デフォルトの名無しさん
:05/02/03 18:20:31
>>500
ttp://homepage2.nifty.com/DSS/VCPP/MFC/Window/Window3DHide.htm
520
名前:
デフォルトの名無しさん
:05/02/03 18:21:06
dwStyle=WS_OVERLAPPED で枠も何も無いけどな。
521
名前:
デフォルトの名無しさん
:05/02/03 18:23:05
やっぱりMFCを使っているとつまらないことで苦労しないとならないのですね。
522
名前:
デフォルトの名無しさん
:05/02/03 18:26:19
たぶん派生元のクラスでCreateされるときに勝手にスタイルが変わる。
ウィンドウが作られたあとにスタイル変更する方が無難。
523
名前:
デフォルトの名無しさん
:05/02/03 18:27:02
32ビット環境でソース互換性の為と思い
SetWindowLongPtrを使用しているのですがコンパイル時に
warning C4244: '引数' : 'LONG_PTR' から 'LONG' に変換しました。データが失われているかもしれません。
となります。
これは私が何か問題のある行動、または足りない設定があるのでしょうか?
それとも単にSDKヘッダの定義ミスで特に問題のない事なのでしょうか?
また、回避策はあるのでしょうか?
できればSetWindowLongPtrの為だけに C4244を#pragmaでオフにすることは避けたいのですが・・・
524
名前:
デフォルトの名無しさん
:05/02/03 18:33:31
http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200302/03020161.txt
525
名前:
デフォルトの名無しさん
:05/02/03 18:34:59
>>523
キャストすれば?
526
名前:
デフォルトの名無しさん
:05/02/03 18:41:00
>>523
SetWindowLongPtrの戻り値をLONG/long型の変数に代入しているならLONG_PTRにしろ。
527
名前:
デフォルトの名無しさん
:05/02/03 18:44:29
LONG_PTRって、ポインタのような名前のくせに
実際にはlongか__int64ってのはなんでだろ。
528
名前:
デフォルトの名無しさん
:05/02/03 18:45:43
>>525
SetWindowLongPtrの定義が
LONG_PTR SetWindowLongPtr( HWND hWnd, int nIndex, LONG_PTR dwNewLong );
のようになっているはずでにもかかわらず
INT WINAPI _tWinMain(省略)
{
LONG_PTR dwNew = 100; // 数値は適当
SetWindowLongPtr(NULL, 0, dwNew); // 内容は適当
}
のようなコードで上記警告になってしまいます。
529
名前:
500
:05/02/03 18:51:33
>>519
さん
そのサイトにかかれてある通りに試したら、
縁が無くなりました!
本当にありがとうございました。
530
名前:
デフォルトの名無しさん
:05/02/03 19:27:22
>>528
警告はLONG_PTR dwNew = 100; で出てるんじゃね?
531
名前:
デフォルトの名無しさん
:05/02/03 19:49:33
warning C4244: '引数' : 'LONG_PTR' から 'LONG' に変換しました。データが失われているかもしれません。
532
名前:
デフォルトの名無しさん
:05/02/03 19:50:46
INT WINAPI _tWinMain(省略)
{
LONG dwNew = 100; // 数値は適当
SetWindowLongPtr(NULL, 0, &dwNew); // 内容は適当
}
533
名前:
デフォルトの名無しさん
:05/02/03 20:33:02
http://www.kumei.ne.jp/c_lang/sdk/sdk_00.htm
のコードをビルドしたいのですが、
c:\source1.cpp(20) : error C2440: '=' : 'HGDIOBJ' から 'HBRUSH' に変換できません。
'void*' から非 'void' 型への変換には明示的なキャストが必要です。
c:\source1.cpp(43) : warning C4244: 'return' : 'WPARAM' から 'int' に変換しました。データが失われているかもしれません。
というエラーと警告が出ます。
なぜだか分からないのですが分かる方教えてくれませんか?
MC++2003を使ってます。
534
名前:
デフォルトの名無しさん
:05/02/03 20:41:08
ttp://www.kumei.ne.jp/c_lang/setvc.htm
これの一番下か?
535
名前:
デフォルトの名無しさん
:05/02/03 20:44:13
>>534
あ、そんなところに・・・・
これはどのように治せばいいのでしょうか?
536
名前:
デフォルトの名無しさん
:05/02/03 20:58:34
http://pc5.2ch.net/test/read.cgi/tech/1101022051/726
537
名前:
デフォルトの名無しさん
:05/02/03 21:06:53
myProg.hbrBackground =(HBRUSH)GetStockObject(WHITE_BRUSH);
538
名前:
デフォルトの名無しさん
:05/02/03 21:11:13
>>537
あ、出来ました
どうもありがとうございました^^
539
名前:
デフォルトの名無しさん
:05/02/03 21:17:24
猫以下だな…
540
名前:
523,528
:05/02/03 21:17:28
>>532
それだとSetWindoLongPtrを使う意味がまるでなくなってしまうような orz
MSのヘッダにミスがあるということで良い気がしてきました(´・ω・`)
541
名前:
デフォルトの名無しさん
:05/02/03 21:57:25
DLLから.libを作成する方法ってありませんか?
あるDLLを静的リンクしたいのですが、DLLだけしかありません。
関数の型はわかってます。
542
名前:
デフォルトの名無しさん
:05/02/03 22:13:27
543
名前:
デフォルトの名無しさん
:05/02/03 22:13:49
なんかライセンス違反の匂いが
544
名前:
デフォルトの名無しさん
:05/02/03 22:15:16
キーボードフォーカスを任意の座標に移動させるにはどうしたらいいか教えてください
545
名前:
デフォルトの名無しさん
:05/02/03 22:18:08
>>541
DEFを書けば、LIB.EXEから作成できる。
546
名前:
デフォルトの名無しさん
:05/02/03 22:27:29
>>544
まさかキャレットの移動じゃないよね?
547
名前:
544
:05/02/03 22:38:06
キーボードフォーカス
548
名前:
デフォルトの名無しさん
:05/02/03 22:59:08
>>544
WindowFromPoint()でウィンドウハンドル取って
SetFocus()だとどうだろう
549
名前:
デフォルトの名無しさん
:05/02/03 23:44:26
座標ってことは、
エディットボックスの斜め上あたりにカーソルを存在させる
とか?
かなり無理があると思うが・・・・
550
名前:
デフォルトの名無しさん
:05/02/04 00:13:17
解像度と同じサイズのウィンドウを作ってしまえば出来るぜ。
551
名前:
デフォルトの名無しさん
:05/02/04 07:20:14
OPENFILENAME で 開き
ダイアログが閉じる前に選択されたファイルのチェックを行い
メッセージボックスを表示したいのですが、
どのようにすればよいでしょうか。
CDN_FILEOK だとダメみたいです。。。
552
名前:
デフォルトの名無しさん
:05/02/04 07:48:48
>>551
CDN_FILEOKを受け取った後、FALSEを返してるか?
553
名前:
デフォルトの名無しさん
:05/02/04 09:01:38
はいFALSEを返していますが、閉じてしまいます。。
554
名前:
デフォルトの名無しさん
:05/02/04 10:00:21
開くボタンを消して、それと同じ位置にカスタムボタンを貼り付けるとか…。
555
名前:
デフォルトの名無しさん
:05/02/04 10:17:03
おまえらエスパーか?
あの文で何がしたいか分かるのか?
556
名前:
デフォルトの名無しさん
:05/02/04 10:44:01
エスパーて・・・まだ昭和の人ですかあなたは・・・
557
名前:
デフォルトの名無しさん
:05/02/04 10:54:46
語学力の無い香具師だな。
・ダイアログが閉じる前に
(=ダイアログを閉じないで)
・CDN_FILEOK だとダメみたいです。。。
(=CDN_FILEOKをフックして色々したけど駄目だった)
この程度を文中から読み取れないで、
よくMSDNとか理解できるな。
558
名前:
デフォルトの名無しさん
:05/02/04 11:24:30
APIとは直接関係ないですが、質問させてください。
どのラジオボタンが押されているのかを取得したいのですが、
IDが、IDC_RADIO1 , IDC_RADIO2 , ・・・・・ と並んでいるとして
SendMessage(GetDlgItem(hDlgWnd, IDC_RADIOx ),BM_GETCHECK, 0, 0)
をforループで回して、 チェックされているラジオボタンを検出したら
nCheckItem = i としたらいいのではないか?と思ってます。
ところが、#defineで定義されている最後の数字をFORループの変数に従って
変えるやり方がわかりません。どうしたらいいでしょう?
559
名前:
デフォルトの名無しさん
:05/02/04 11:25:36
具体的にどう書いてダメだったか書いてないな。
CDN_FILEOKの応答を正しく書いてないかもしれない。
560
名前:
デフォルトの名無しさん
:05/02/04 11:28:37
>>556
意味不明
561
名前:
デフォルトの名無しさん
:05/02/04 11:36:10
>>558
int id[] = {IDC_RADIO1,IDC_RADIO2, ・・・・・};
562
名前:
558
:05/02/04 12:31:37
>>561
とりあえず解決できました。 ありがとう!!
563
名前:
デフォルトの名無しさん
:05/02/04 12:35:18
>>528
実はこうなっている。
#ifdef _WIN64
(略)
#else
#define SetWindowLongPtrA SetWindowLongA
#define SetWindowLongPtrW SetWindowLongW
#endif
Windows 95から使えるのはこういうわけ
564
名前:
デフォルトの名無しさん
:05/02/04 12:35:53
>>527
「ポインタと同じサイズ」と言いたいのだろう。
565
名前:
デフォルトの名無しさん
:05/02/04 12:47:13
(・A・)
566
名前:
デフォルトの名無しさん
:05/02/04 12:59:32
MFCでダイアログベースのアプリケーションを作成したのですが、
どうやってもダイアログにアイコンを表示できません。
初期のコードにSetIconなどのアイコンを表示するようなコードが書かれているのですが、
なぜ表示されないのでしょうか?
567
名前:
566
:05/02/04 13:11:43
すいません、解決しました
568
名前:
デフォルトの名無しさん
:05/02/04 13:39:33
>>567
解決したなら、それはそれで「なぜ表示できていなくて
どうやって解決したか」を語るべきだ。
569
名前:
デフォルトの名無しさん
:05/02/04 13:49:37
そもそもMFCはAPIじゃないだろ
570
名前:
デフォルトの名無しさん
:05/02/04 14:11:46
初歩的な質問になりますが、
現在のマウスの位置を取得するには、どのようにすればいいのでしょうか?
571
名前:
デフォルトの名無しさん
:05/02/04 14:12:48
あと、もう一点。
マウスのLボタンがクリックされているかどうかを調べるWin32関数はありますか?
572
名前:
デフォルトの名無しさん
:05/02/04 14:17:45
CDからWAVを吸い出すツールを作りたいと思ってるんだが・・・。
CDから指定トラックのデータを吸い出すAPIとかってあるの?
知ってる人にはフザけた質問かもしれんが、ちょっとマジで聞いてます。
だれかマジレスお願いします。
573
名前:
デフォルトの名無しさん
:05/02/04 15:01:10
>>570
GetCursorPos
>>571
GetAsyncKeyState
574
名前:
570
:05/02/04 15:14:17
>>573
ありがとうございました。
助かります。
575
名前:
566
:05/02/04 16:07:38
ダイアログのプロパティにSystem Menuという項目があったので
それをTrueにしたらアイコンが表示されました
これをTrueにしないとアイコンや最大化、最小化が表示されないっていうのを知りませんでした
576
名前:
デフォルトの名無しさん
:05/02/04 16:40:00
CDRip.DLLでも使ってみたらいいんじゃねーの
577
名前:
デフォルトの名無しさん
:05/02/04 17:15:31
ローカル座標とグローバル座標を変換するためには?
どうしたらよいのでしょうか?
578
名前:
デフォルトの名無しさん
:05/02/04 17:34:41
ClientToScreen
ScreenToClient
579
名前:
デフォルトの名無しさん
:05/02/04 18:18:01
ほんと知ってればどうってことない質問ばっかりだよな。
逆引きAPIのすごく細かいサイトとか本あればいいのにねぇ。
金になるならやるんだが。
580
名前:
デフォルトの名無しさん
:05/02/04 18:42:38
SetTimerみたいな関数を自作したい場合って、スレッド使うの?
スレッド→メッセージループ→時間が来たらメッセージ送信
って感じですか?
それとも、別の良い方法がある?
581
名前:
デフォルトの名無しさん
:05/02/04 18:44:01
W2K以上ならスマートな方法あるな。
582
名前:
デフォルトの名無しさん
:05/02/04 18:47:55
いやあるなっていうかそこで書き込みおわりかよ(笑
583
名前:
デフォルトの名無しさん
:05/02/04 18:52:06
いや、サポートすべきOSのバージョンわかんない。
Me以下もサポートしなけりゃならないなら余計な事になるから。
584
名前:
580
:05/02/04 18:59:47
>>583
私へのレスですよね
出来れば1xもサポートできる方が良いですが、自分も回りもXPか2000だけなんで、無サポートでも良いです
どんな方法か教えてください。
585
名前:
デフォルトの名無しさん
:05/02/04 19:14:51
>>584
1xって…9xなのか?
それとも…ガクガク
586
名前:
デフォルトの名無しさん
:05/02/04 19:41:25
>>585
スレタイをちゃんと見てる香具師ならそれはないだろう
587
名前:
デフォルトの名無しさん
:05/02/04 19:50:25
Win1.0かぁ、懐かしい、タイルウインドウしか出来なかった。
588
名前:
デフォルトの名無しさん
:05/02/04 20:02:32
>>587
俺も使った
( ゚д゚)ペッ が感想
589
名前:
デフォルトの名無しさん
:05/02/04 20:07:20
>>588
まー、あのころはStarに感動してポケットマネーでGUIを感動した時代だ。
仕方が無い
590
名前:
69式フリーPG
◆hND3Lufios
:05/02/04 20:16:08
286/10MHz〜386/16MHzあたりの時代だからねぇ。。。
まあ、68000の8MHzであれだけのことをやってたMacはたいしたもんだった。
爆弾でまくりだったけど。
591
名前:
デフォルトの名無しさん
:05/02/04 20:16:55
で、
>>581
は責任持って答えるように。
592
名前:
デフォルトの名無しさん
:05/02/04 20:19:51
スレッドでタイマ作るならWaitFor〜使うのが普通だろ。
593
名前:
デフォルトの名無しさん
:05/02/04 20:21:00
>>592
だったらMe以下でもできるじゃん。
たぶん
>>581
は俺たちの知らない様なこと知ってる。
期待。
594
名前:
デフォルトの名無しさん
:05/02/04 20:21:02
Lisa使ったことある?超高級Macだった
595
名前:
デフォルトの名無しさん
:05/02/04 20:59:03
キーを押した時の、WM_KEYDOWNに付いての質問です。
連続で押していると、100ミリ秒ぐらいの間隔でWM_KEYDOWNが来ますが、
PostMessageでやると、その間がありません。
どうやれば、ホントにキーを押した感じのような表現が出来るでしょうか。
596
名前:
デフォルトの名無しさん
:05/02/04 21:02:49
少し、演出とか考えろよ。リアルタイムでプログラムが反応する
とか思ってるのはあほすぎ。逆に、システムがユーザーをごまかす
を考えろw、ユーザーが不利にならない範囲でだがw
597
名前:
デフォルトの名無しさん
:05/02/04 21:07:03
>>593
きっとFiberのことでは?
598
名前:
デフォルトの名無しさん
:05/02/04 21:07:22
SendMessage(...);
Sleep(100);
SendMessage(...);
でだめか?
599
名前:
デフォルトの名無しさん
:05/02/04 21:10:53
>>597
Tipかと思った
600
名前:
595
:05/02/04 21:11:35
>>596
すいません。
>>598
そういうのも考えていました。私のはSetTimerの方でしたが。
WM_KEYTOUCH、WM_KEYPUSHとかあればいいんですけど。
601
名前:
デフォルトの名無しさん
:05/02/04 21:58:05
>>584
1xとか書いててそのまま飯食ってた……
今の所、
>>597
>>599
>>592
というレスがあるみたいなので、調べてみます。
602
名前:
デフォルトの名無しさん
:05/02/04 22:06:31
>>601
実装はスレッドだが、CreateTimerQueue,付近を調べれば?
知ってんじゃないの?SDKの同期/非同期サービスだが、知っていたらごめん。
いやー、あんた知ってるよね
603
名前:
デフォルトの名無しさん
:05/02/04 22:25:24
GlobalAlloc関数について質問があるのですが
GlobalAllocの第2引数の 割り当てるサイズ なのですが
わかりにくいと思うのですが
char *lpszBuf;
int nLen;
HGLOBAL hMen;
nLen = GetWindowTextLength(hEdit);←hEditのサイズが入る
hMem = GlobalAlloc(GHND, sizeof(char) * nLen + 1);
lpszBuf = (char *)GlobalLock(hMen);
こんな感じになると思うのですが
sizeof(char) * nLen + 1のところが良くわからないのですが
sizeof(char) × (nLen + 1)ってことなのでしょうか?
その時のnLen+1は理解できるのですが
sizeof(char)もサイズを求める物ですよね?
こいつはいったい何のためにいるのでしょうか?
604
名前:
デフォルトの名無しさん
:05/02/04 22:30:06
やりたいことは
あるソフトに、メッセージ(とりあえず、マウス左ボタンダウン)を投げたいのです
ですが、その対象となるソフトが、グローバルフックでメッセージを受けて処理している場合、
そのソフトに対し、メッセージを投げるにはどうしたらいいのでしょうか?
わかるかたいらしたらお願いいたします
605
名前:
デフォルトの名無しさん
:05/02/04 22:33:48
>>603
sizeof(char) * nLen + 1は(sizeof(char) * nLen )+ 1と等しい
GetWindowTextLength(hEdit)はhEditに格納されている文字列の文字数が返り値になる
つまり一文字のバイト数*文字数+1てわけ
つうかコレ書いた奴間抜けだな
606
名前:
デフォルトの名無しさん
:05/02/04 22:36:07
>>603
本来はsizeof(LPTSTR) * nLen + 1じゃないか?それ。
この場合はUNICODEが定義されてるかどうかでLPTSTRのサイズが変わる。
607
名前:
デフォルトの名無しさん
:05/02/04 22:37:55
>>605
分かりました!
勘違いで迷路に迷ってたみたいです
nLenが既にもう完全なhEditのサイズかと思ってました
本当に間抜けな質問申し訳ありません
曇ってたのがすっきり晴れました
マジでありがとう
608
名前:
デフォルトの名無しさん
:05/02/04 22:47:50
sizeof(TCHAR) * (nLen + 1)
609
名前:
603
:05/02/04 22:56:45
申し訳ないもう1個出てきました
nLen = GetWindowTextLength(hEdit);←hEditの文字数が入る
のときのnLenが文字数なので sizeof(char)*nLen+1は理解できたのですが
dwSize = GetFile(hFile , NULL);←dwSizeにサイズが入る
このとき dwSizeは完全なサイズが入っているので
第2引数は dwSize+1 だけでいいと思うのですが
何故かsizeof(char)*dwSize+1となっているのですが
charが8バイトでdwSize+1が17バイトだとしたら
メモリーの無駄遣いしまくってしまってないでしょうか?
610
名前:
デフォルトの名無しさん
:05/02/04 23:05:04
>>606
LPTSTRのさいずはかわらねーよ
611
名前:
デフォルトの名無しさん
:05/02/04 23:06:10
>>609
あんた、釣りがへた、
典型的なハード知らないソフトウエアエンジニアー
612
名前:
603
:05/02/04 23:12:09
>>611
エンジニアなどたいした肩書きは無いですよ
独学で猫でもわかるを読んで勉強してるので
知り合いにCなどが出来る方がいないもので変な理解をすると
変更が効かずどんどん沼にはまっていってしまって・・・・
613
名前:
デフォルトの名無しさん
:05/02/04 23:13:08
>>609
> dwSize = GetFile(hFile , NULL);←dwSizeにサイズが入る
> このとき dwSizeは完全なサイズが入っているので
> 第2引数は dwSize+1 だけでいいと思うのですが
> 何故かsizeof(char)*dwSize+1となっているのですが
> charが8バイトでdwSize+1が17バイトだとしたら
> メモリーの無駄遣いしまくってしまってないでしょうか?
…どこを指しているのかワカラン
614
名前:
603
:05/02/04 23:19:33
>>613
申し訳ないですわかりにくかったです
HANDLE hFile;← CreatFileで既に作ってる
char *lpszBuf;
DWORD dwSize;
HGLOBAL hMen;
dwSize = GetFileSize(hFile, NULL);←hFileのサイズが入る
hMem = GlobalAlloc(GHND, sizeof(char) * dwSiza + 1);
lpszBuf = (char *)GlobalLock(hMen);
dwSize = GetFile(hFile , NULL);←dwSizeにサイズが入る
このとき dwSizeは完全なサイズが入っているので
第2引数は dwSize+1 だけでいいと思うのですが
何故かsizeof(char)*dwSize+1となっているのですが
charが8バイトでdwSize+1が17バイトだとしたら
メモリーの無駄遣いしまくってしまってないでしょうか?
まだわかりにくいと思うのですが宜しくおねがいします
615
名前:
デフォルトの名無しさん
:05/02/04 23:24:19
sizeof(char) は8じゃないよ
616
名前:
デフォルトの名無しさん
:05/02/04 23:24:34
sizeof(char)は1と決まっているので問題ない。意味もない。
617
名前:
603
:05/02/04 23:30:51
8ビットでした・・・・・
8ビットは1バイトですね
本当にはずかしい
テンパってテンパって・・・
くだらない質問に答えていただいてありがとうございます。
くだらなかったのにマジで悩んでました
618
名前:
デフォルトの名無しさん
:05/02/04 23:37:12
さてここでお約束の「1byteが8bitとは限らない」をお送りしません。
619
名前:
デフォルトの名無しさん
:05/02/05 00:52:54
将来考えれば、32バイト境界やればハードとソフトが一致する
620
名前:
デフォルトの名無しさん
:05/02/05 01:24:53
チーズビットって今でも売ってる?
621
名前:
デフォルトの名無しさん
:05/02/05 01:39:54
>>620
ttp://www.tscn.net/antenna/news/food/11/0.html
622
名前:
デフォルトの名無しさん
:05/02/05 01:42:36
厨臥区政が混ざってるな
623
名前:
デフォルトの名無しさん
:05/02/05 03:19:11
string.hのstrstrやstrchrと同じようなことをするWinAPI関数はありますか?
strlen=lstrlen、strcpy=lstrcpy、sprintf=wsprintfがあるぐらいだからそれもありそうなんだが。
624
名前:
デフォルトの名無しさん
:05/02/05 03:35:55
shlwapi.h の中にありますよ。
625
名前:
デフォルトの名無しさん
:05/02/05 03:42:27
HYU-
とかいうやつは、しゃらぽあ、あいこ、いらない、五月蠅い
626
名前:
デフォルトの名無しさん
:05/02/05 03:46:20
>>618
asciiはそうだ、8ビットこーどは西洋にはない
627
名前:
デフォルトの名無しさん
:05/02/05 03:48:01
>8
ビットこーどは西洋にはない
>8
ビットこーどは西洋にはない
>8
ビットこーどは西洋にはない
628
名前:
デフォルトの名無しさん
:05/02/05 03:49:26
>>624
ありますた。
どうもありがd。
629
名前:
デフォルトの名無しさん
:05/02/05 03:53:10
1オクテット
630
名前:
デフォルトの名無しさん
:05/02/05 04:36:12
ASCIIは7bit
631
名前:
デフォルトの名無しさん
:05/02/05 07:08:54
>>603
GlobalAllocなんて忘れろ。
クリップボードを扱うときしか使わない。
632
名前:
デフォルトの名無しさん
:05/02/05 07:10:53
>>631
理由は?
633
名前:
デフォルトの名無しさん
:05/02/05 07:14:01
>>632
16Bit時代の遺物
HeapAlloc使え
634
名前:
デフォルトの名無しさん
:05/02/05 07:20:24
>>633
さむ
635
名前:
デフォルトの名無しさん
:05/02/05 07:28:29
>クリップボードを扱うときしか使わない。
使うじゃん。
おまえもしかして、malloc で済む用事に
わざわざ VirtualAlloc だの CreateFileMapping だの使う手合いか?
636
名前:
デフォルトの名無しさん
:05/02/05 07:53:27
>>635
>>633
嫁
637
名前:
デフォルトの名無しさん
:05/02/05 08:00:33
>>636
意味わからん
638
名前:
デフォルトの名無しさん
:05/02/05 08:14:28
Globalはあまり使わないなぁ…
大抵自プロセス内だけのデータならLocalAllocで済ますんだが
639
名前:
デフォルトの名無しさん
:05/02/05 08:51:13
そういうのを裸で使う理由があればそうするだろうけど
固有の機能を必要としない場面でむやみに使うと
移植性おとすだけだろ
640
名前:
デフォルトの名無しさん
:05/02/05 08:56:40
>>638
Win32 APIでは、 ローカル ヒープとグローバル ヒープに違いはありません。
バカじゃねーの?
641
名前:
デフォルトの名無しさん
:05/02/05 09:02:35
>>635
malloc で済む用事にCreateFileMapping
具体的にmalloc で済む用事にCreateFileMappingが使える例を教えて下さい。
642
名前:
デフォルトの名無しさん
:05/02/05 09:13:18
HeapAlloc使え
643
名前:
デフォルトの名無しさん
:05/02/05 09:17:39
>>641
ファイルマッピングの使い方が知りたいなら MSDN でも嫁
ここでイチから教えてやるほどヒマじゃねえ
時間単価1万くらい出すなら別だが
644
名前:
デフォルトの名無しさん
:05/02/05 09:21:36
>>643
使い方は知ってますがmallocの代わりなんかに使える例を教えて下さい。
645
名前:
デフォルトの名無しさん
:05/02/05 09:31:46
はっきりいってmallocが一番効率がいい。
HeapAllocを何も考えずに直接使うのはただのバカ。
646
名前:
デフォルトの名無しさん
:05/02/05 09:42:36
>>643
確保したいサイズを指定してCreateFileMappingを呼び、
MapViewOfFileすればいいだけだろ?
mallocが使える全ての場所で、その代わりにできるが?
もちろん、mallocが使えるならmallocを使うに越したことは無い。
647
名前:
646
:05/02/05 09:43:47
レス番間違えた。
>>641
, 644
648
名前:
デフォルトの名無しさん
:05/02/05 09:43:49
VirtualAlloc
----柵----
malloc > HeapAlloc(GetProcessHeap()) >>>>(越えられない壁)>>>> Global/LocalAlloc
----別世界----
CreateHeap, IMalloc, Global/Localメモリハンドルが必要なとき
----別次元----
CreateFileMapping
649
名前:
デフォルトの名無しさん
:05/02/05 09:58:04
お前らレベル低すぎ。
バグばっかり作ってるんだろうな。
650
名前:
デフォルトの名無しさん
:05/02/05 10:04:49
>>649
はいはい。君の作ったコードも先輩がこっそり
直してくれてるんだろうね。
651
名前:
デフォルトの名無しさん
:05/02/05 10:09:13
alloca
-----神の壁-----
malloc, new
----一般人の壁------
HeapAlloc
----バカの壁--------
LocalAlloc, GlobalAlloc
652
名前:
デフォルトの名無しさん
:05/02/05 10:11:22
てかvector使えば自分で動的確保する必要なんてほぼ無いだろ。
動的バッファもvector<char>でいいし。
653
名前:
デフォルトの名無しさん
:05/02/05 10:14:12
質問
「あるウィンドウ」を表示させるとき、今のアクティブなウィンドウをディアクティブにしないで、
アクティブのままにしつつ、「あるウィンドウ」を表示させたい場合どうすればいいのでしょうか?
654
名前:
デフォルトの名無しさん
:05/02/05 10:19:39
あるウィンドウを表示させた後に今のウィンドウをアクティブにし直せばいいじゃん。
655
名前:
デフォルトの名無しさん
:05/02/05 10:29:06
ShowWindowにSW_SHOWNAてのがあるな
656
名前:
デフォルトの名無しさん
:05/02/05 11:06:40
>>654
もうちょっと質問者の意図を汲んでやれよ。
657
名前:
デフォルトの名無しさん
:05/02/05 13:15:15
今さあ、
WaitCommEvent();
つかってさあ、
スレッドでシリアルの受信バッファのイベント待って、
受信バッファのデータをchar変数にバッファさせようとしてるのよ。
ところが、一回受信してEV_RXCHARのイベントが上がったら、
上がりっぱなしで、charにたまりつづけてるんだけど、
どうすりゃいいのよ?
つうかさ、いまさら232Cかよ。
658
名前:
デフォルトの名無しさん
:05/02/05 13:16:51
>>657
Cisco製品を普段使ってるんですが、
その際、TeraTermを使用してるんです。
で、自作のターミナルを作ろうと思ってるんですが、
その際、資料として参考になるサイトってご存知得ないですか?
できれば、教えていただきたいのですが。
よろしくお願いします。
659
名前:
デフォルトの名無しさん
:05/02/05 13:19:18
クスコ
660
名前:
デフォルトの名無しさん
:05/02/05 14:29:15
IMEの漢字変換ポップアップウィンドウを、こちら側で表示させたい場合、どのAPIを呼び出せばいい?
例えば、「あいさつ」という文字列を変換させたいとして、
そのAPIに「あいさつ」という文字列を引数として渡すことで、漢字変換対象のリストを表示させるみたいな。
661
名前:
デフォルトの名無しさん
:05/02/05 14:31:22
>>657
>>658
5年くらい前まだ、プログラム始めたての頃のソースあった。
はじめたての頃のなので正しく出来てるかわからんしどうなってるのか忘れてるので怪しい情報になるが参考までに。
こんな流れでやってた。
CreateFile : ポートオープン:GENERIC_READ | GENERIC_WRITEでオーバーラップ使ってたのでFILE_FLAG_OVERLAPPEDあり。
SetCommMask : EV_RXCHARとか使用したいイベントのマスク設定
SetupComm : 通信バッファ設定
PurgeComm : PURGE_TXABORT | PURGE_RXABORT | PURGE_TXCLEAR | PURGE_RXCLEARとかでクリアして初期化しているらすぃ
SetCommTimeouts : タイムアウト時間設定
SetCommState : フロー制御とかの設定
別スレッドWaitCommEventでWaitして制御かえったら
if((dwEvtMask & EV_RXCHAR))とかでイベント確認して処理してまたWaitループ
緊急停止はEscapeCommFunctionでイベント立ててWaitぬけてクリア処理
書いてるうちになんとなく思い出してきたが、
上で書いた関数での設定色々あるけど一つ一つがすごく重要な設定だった気がする。
結構めんどくさかったような。
RS232Cのフロー制御の知識とか本が無いと意味不明だったきがする。
662
名前:
658
:05/02/05 14:37:50
>>661
さん
助かります。
それを参考にいろいろググりつつ、自作ターミナルを作ってみようと思います。
663
名前:
デフォルトの名無しさん
:05/02/05 14:56:24
>>657
無手順?
複数のスレッドで交代で切れ目なく受信バッファを読むとかダメ?
664
名前:
デフォルトの名無しさん
:05/02/05 17:11:40
>>662
SimpleTerm とかいうサンプルが MSDN にあったのではないか。
オレはこれを元に作った ComNifty まがいで nifty のパソコン通信していた。
なんとか7という口へ 56Kモデム経由だったと思う。
665
名前:
デフォルトの名無しさん
:05/02/05 17:26:15
TeraTermもソース公開なんだよなあ…
666
名前:
デフォルトの名無しさん
:05/02/05 18:13:57
人のソースを読もうとする気がしないのは言うまでも無いだろw
667
名前:
デフォルトの名無しさん
:05/02/05 21:14:30
どうせ弄るのなら、TeraTermよりPUTYYの方が良いだろう。
TeraTermの拡張インタフェースは、かなり捻じれている。
それを思えば、単体で動くPUTTYのソースを直接弄って
独自PUTTYに改変するのいい。
668
名前:
657
:05/02/05 23:48:20
>>663
イベントが上がりっぱなしなのがなんでなのかが
わかってないのよ、私。
受信バッファ読んだらイベント下がると思ってたんだけどな・・・
勝手な思い込みに近いけど。
669
名前:
デフォルトの名無しさん
:05/02/06 00:22:09
ウィンドウを常にアクティブにする方法ってありますか?
670
名前:
デフォルトの名無しさん
:05/02/06 00:33:22
Zオーダーが一番上とかならあるけどな
671
名前:
デフォルトの名無しさん
:05/02/06 00:36:52
>>668
受信バッファ小さすぎるとか
ReadFile()が追いついてないとか
672
名前:
デフォルトの名無しさん
:05/02/06 01:10:18
フックして、他のプロセスへのWM_ACTIVATEAPPを潰してはどうでしょう?
673
名前:
デフォルトの名無しさん
:05/02/06 01:18:07
>>668
FILE_FLAG_OVERLAPPED を指定した場合は IOがペンディングになってるかどうかをチェックしないと。
674
名前:
デフォルトの名無しさん
:05/02/06 03:49:26
ファイル名の変更はどうすれば良いのでしょうか?
Win32APIで出来ますか?
675
名前:
デフォルトの名無しさん
:05/02/06 03:51:49
できます。
676
名前:
デフォルトの名無しさん
:05/02/06 03:57:51
>>674
MoveFile()
rename()
677
名前:
デフォルトの名無しさん
:05/02/06 13:56:31
すみません。waveOutWrite()で聞きたいことあるんですが、
まずwaveOutWrite()でヘッダ送る(音データが格納されているバッファのアドレスも送られる)。
その後に音データバッファのデータを変更してもOKなんですか?
もちろん再生位置付近のところとかは、いじらないようにします。
678
名前:
デフォルトの名無しさん
:05/02/06 16:30:10
聞く前にやってみろ
679
名前:
677
:05/02/06 18:07:04
>>678
いや、やってみて普通にできたから聞いてみたんだが…
共有違反とかしてそうだから不安で聞いてみた。
680
名前:
デフォルトの名無しさん
:05/02/06 19:41:35
LoadImageで画像表示してます。
画像Aを背景にして、画像Bを上に表示したいのですが、画像Bの要らない部分を透明に出来ますか?
分かる方お願いします。
681
名前:
デフォルトの名無しさん
:05/02/06 19:48:54
MaskBlt
682
名前:
デフォルトの名無しさん
:05/02/06 22:09:37
>>680
冴子先生みたいになればいいんなら
↓
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnwui/html/layerwin.asp
683
名前:
デフォルトの名無しさん
:05/02/06 22:12:32
半角カナを全角カナへ変換するAPIはありませんでしょうか?
684
名前:
デフォルトの名無しさん
:05/02/06 23:03:45
ttp://www.google.co.jp/search?hl=ja&q=%E5%8D%8A%E8%A7%92+%E5%85%A8%E8%A7%92+%E5%A4%89%E6%8F%9B+api&lr=lang_ja
685
名前:
デフォルトの名無しさん
:05/02/07 04:01:37
CreateFile関数なんですが
C:\txt\a.txt だと読めないのに
C:\\txt\\a.txtだと読めるのはなぜですか?
_getcwdでデレクトリー調べているので
C:\txt としかゲット出来ないですけど
どうしたら良いんでしょうか?
686
名前:
デフォルトの名無しさん
:05/02/07 04:08:36
文字のエスケープ
687
名前:
デフォルトの名無しさん
:05/02/07 04:23:02
付け足す文字を
\\a,txtにしたら出来ました
どうも^^
688
名前:
デフォルトの名無しさん
:05/02/07 11:05:35
ファイル名まで変えてどうすんだよ
689
名前:
デフォルトの名無しさん
:05/02/07 12:53:16
エディットボックスのウインドウメッセージのWM_KEYDOWNで
Enterキーが押されたときに処理させたいのですが、
押すとビープ音が鳴ってしまいます。
これを鳴らさないようにするには、どうすればいいのですか?
ちなみにCreateのときにES_AUTOVSCROLLとES_MULTILINEを設定すると
鳴らなくなるんですが、処理後に改行してしまいます。
690
名前:
デフォルトの名無しさん
:05/02/07 14:27:38
>>689
耳を塞げ
691
名前:
デフォルトの名無しさん
:05/02/07 15:43:27
>>689
エディットボックスをサブクラス化してやっているって事でいいのかな?
だとしたらWM_KEYDOWNで処理した場合はCallWindowProcに渡さなければいいんでないか?
状況が良くわからないので答えようがないけど
692
名前:
689
:05/02/07 16:08:00
>>691
処理後return 0で返したけどだめ。
また、キーコードが入ってるwpを0にしてもだめでした
693
名前:
デフォルトの名無しさん
:05/02/07 16:42:02
>>685
C言語の超超基本的な事でWindowsAPI全然関係ないぞ・・・
694
名前:
デフォルトの名無しさん
:05/02/07 16:47:49
test1.obj : error LNK2019: 未解決の外部シンボル "long __stdcall WndProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WndProc@@YGJPAUHWND__@@IIJ@Z) が関数 _WinMain@16 で参照されました。
Debug/test1.exe : fatal error LNK1120: 外部参照 1 が未解決です。
と出るのですがどういう事なのでしょうか?
695
名前:
デフォルトの名無しさん
:05/02/07 16:52:30
>>694
関数WndProcが無いとおっしゃってます
696
名前:
デフォルトの名無しさん
:05/02/07 17:19:03
ソースくらい貼りつけろ
697
名前:
デフォルトの名無しさん
:05/02/07 17:24:50
>>696
そーっすね。
698
名前:
デフォルトの名無しさん
:05/02/07 17:29:02
>>695
ありがとうございます^^
書き方をミスってましたw
もう一つ質問があるのですが、画像表示を速くすると、画像がちらついてしまいます。
どうすればいいのでしょうか?
699
名前:
デフォルトの名無しさん
:05/02/07 17:32:10
>>698
背景を消去しないようにする
(WM_ERASEBKGNDをDefWindowProcに渡さない)
700
名前:
デフォルトの名無しさん
:05/02/07 17:34:26
スタートアップに登録されたアプリケーションが、
OSの起動時だけ、実行したいプログラムがあるとして、
OSの起動時か?そうでないかを知るには
どうしたら良いのでしょうか?
宜しくお願いします。
701
名前:
691
:05/02/07 17:39:21
>>689
>>692
WM_KEYDOWNじゃなくてWM_CHARにして
wpがVK_RETURNだったらCallしないって感じでどうだろう。
//サブクラス化したプロシージャ
LRESULT CALLBACK _SubWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch(uMsg)
{
case WM_CHAR:
if(wParam == VK_RETURN){
//処理
return 0;
}
}
return CallWindowProc();
}
702
名前:
デフォルトの名無しさん
:05/02/07 17:46:44
>>698
すいません。どのように記述すればいいのでしょうか??
703
名前:
デフォルトの名無しさん
:05/02/07 17:47:18
↑
>>699
です
704
名前:
デフォルトの名無しさん
:05/02/07 17:52:20
>>703
case WM_ERASEBKGND: return 0;
705
名前:
689
:05/02/07 17:54:15
>>701
WM_CHARにしたらできました
教えて頂いてありがとうございます
706
名前:
デフォルトの名無しさん
:05/02/07 18:05:39
LCMapStringって「ガ」を「ガ」に変換してくれますか?
707
名前:
デフォルトの名無しさん
:05/02/07 18:10:31
>>700
GlobalAddAtomじゃダメかな?
708
名前:
デフォルトの名無しさん
:05/02/07 18:11:50
>>706
やってみたら?
709
名前:
デフォルトの名無しさん
:05/02/07 18:25:02
>>708
やってみたら「ガ」を「ガ」になった。
すごいAPIだ
710
名前:
デフォルトの名無しさん
:05/02/07 18:34:04
日本語おかしくてもプログラミングはできるんですね。
711
名前:
デフォルトの名無しさん
:05/02/07 18:37:45
をかしくても良いぢゃない。日本語だもの。
712
名前:
デフォルトの名無しさん
:05/02/07 18:52:14
>>704
ありがとうございます。
出来たのですが、ちと、おかしくなってしまいます。
WM_KEYDOWNでキー入力をすると画像を描画するようにしてるので、押しっぱなしにすると描画され続けてしまいます。
WM_KEYUPだとはなしたときなので使いづらいです。
キー入力で押し放しでも1回の入力にする方法って有りますか?
713
名前:
デフォルトの名無しさん
:05/02/07 18:54:40
fRepeatでも見れば。
714
名前:
デフォルトの名無しさん
:05/02/07 19:06:46
おかしいのはあなたの頭。
715
名前:
デフォルトの名無しさん
:05/02/07 19:11:27
あるWindowに属するクライアント内にマウスカーソルがあるときは、WM_MOUSEMOVEでひろえばいいですが、
あるWindowに属するクライアント外にマウスカーソルがあるということがわかる、WMメッセージ(または何か別の方法)はありますか?
カーソルがクライアント内からクライアント外へ出たことを知りたいもので。
宜しくお願いします。
716
名前:
デフォルトの名無しさん
:05/02/07 19:11:47
>>712
2回目以降おなじコードなら無視すればいいじゃん
717
名前:
デフォルトの名無しさん
:05/02/07 19:32:27
猫とかに書いてある、通常のウィンドウを表示するプログラムがありますが、
それと同じようなタイプのウィンドウをもう1つ出して、
新しく出た方のウィンドウにフォーカスを移したいと思います。
これを専門用語で言うと、STATICなPOPUPウィンドウを作り、
それをサブクラス化するでいいんでしょうか。
検索する時のキーワードにさせていただきます。
718
名前:
デフォルトの名無しさん
:05/02/07 19:45:01
タイマでGetCursorPosでも発行しれ。
719
名前:
デフォルトの名無しさん
:05/02/07 19:48:23
>>715
1.マウスキャプチャして検知
2.WM_MOUSELEAVEを拾う(Win 98以降)
720
名前:
717
:05/02/07 19:55:07
>>717
モーグルダイアログが自分の探していた物っぽいです。
もう一度それを調べてみます。失礼します。
721
名前:
デフォルトの名無しさん
:05/02/07 20:00:59
お前は冬季五輪にでも出場する気か?
722
名前:
717
:05/02/07 20:02:04
私も質問した側で、答えていいか分かりませんが、
自分なら、WM_MOUSEMOVEが来る毎に、以下のような感じの関数を使い、
真なら、ウィンドウの中にマウスポインタがあるとします。
int CheckWindowCursorPos(HWND hWnd, POINT *point)
{
GetCursorPos(point);
if(!ScreenToClient(hWnd, point)) return 0;
return 1;
}
723
名前:
715
:05/02/07 20:05:03
>>719
マウスボタンを押さないで、検知したいので、それだと無理です。
>Winにおいては、WM_MOUSE_LEAVEは、WM_LBUTTON_DOWN後に TrackMouseEvent?();をTME_LEAVEを指定して呼び出した場合に一度だけ送信される。
でも、ありがとうございました。
724
名前:
717
:05/02/07 20:05:10
orz・・。モーダルダイアログです。
725
名前:
デフォルトの名無しさん
:05/02/07 20:05:28
WINDOW外れたらWM_MOUSEMOVEは来ないんだが・・・
WM_MOUSEMOVEが来るのは常にwindow内にあるときのみ
726
名前:
715
:05/02/07 20:07:13
>>725
ええ、おっしゃるとおりで。
で、クライアント領域を外れたら、通知されるメッセージがあると助かるのですが、
ないとなると、自作システムを変更せざるえません。
727
名前:
デフォルトの名無しさん
:05/02/07 20:11:59
すればいいじゃん。
728
名前:
717
:05/02/07 20:15:11
>>725
そうですね。間違えました。
自分も、マウスの位置によって、処理の動作を変えるとか
やっているんですが、ウィンドウの中での位置でした。すみません。
729
名前:
デフォルトの名無しさん
:05/02/07 20:15:30
キャプチャしまくれ
730
名前:
デフォルトの名無しさん
:05/02/07 20:18:55
TrackMouseEventじゃないの?
731
名前:
デフォルトの名無しさん
:05/02/07 20:19:03
テンキー押しっぱなしにしても1回の処理にするように出来ません・・・
2回目同じコードなら無視する方法も考えてみたけど分からなかったです・・・・
どうすればいいのでしょうか?
732
名前:
デフォルトの名無しさん
:05/02/07 20:20:57
がんばれ
733
名前:
デフォルトの名無しさん
:05/02/07 20:32:48
>When the mouse is captured, menu hotkeys and
>other keyboard accelerators do not work.
734
名前:
デフォルトの名無しさん
:05/02/07 20:34:12
>>731
WM_KEYDOWNの説明よく見れ
lParamの0-15ビットにリピートカウント(押しっぱなしによって何度もキーが押されるた回数)入ってるから
キーリピートでの入力じゃない場合はすればよい。
735
名前:
デフォルトの名無しさん
:05/02/07 20:59:00
>>734
どうもです^^
例など教えて頂けませんか?
736
名前:
デフォルトの名無しさん
:05/02/07 21:01:16
>>735
氏ね
737
名前:
デフォルトの名無しさん
:05/02/07 21:28:40
アプリケーションで、GetSysemColorで取り出せるシステム色の一覧が見れるフリーソフトってありますか?
あると便利なんですが。
Win32プログラミングで使いたいのです。
738
名前:
デフォルトの名無しさん
:05/02/07 21:31:31
「コントロールパネル」->「色の設定」
739
名前:
734
:05/02/07 21:47:52
>>731
>>735
すまんすまん、今良く見たら自分が勘違いしていた、
>>734
じゃできないわ。
だが、結局答えがWM_KEYDOWNの説明にそのまま書いてあったぞ。
lParamのビット30が直前のキー状態を保持してるので、その状態が離された状態なら初回と判断すればよい。
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch(uMsg){
case WM_KEYDOWN:
if( ((lParam >> 30) & 0x00000001) == 0){ // 初回押下なら
// 初回押下時のみの処理
}
break;
}
}
MFCならこんな感じかな?
afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags )
{
if( ((nFlags >> 15) & 0x00000001) == 0){ // 初回押下なら
// 初回押下時のみの処理
}
}
だがな
>>731
>>735
よ、なんていうか。
市ね
740
名前:
デフォルトの名無しさん
:05/02/07 21:52:45
スレッドハンドルの閉じ方について質問です。
_beginthreadexで作成したスレッドは
CloseHandleで閉じなければいけませんが、
スレッドが終了したら閉じるということを
やりたい場合、どう書くのがいいのでしょうか?
今はスレッド関数を抜けるreturn文の直前で、
OnEndThread()みたいな通知関数を呼んで、
その中でCloseHandle()を呼び出す方法にしています。
このOnEndThread()で、CloseHandle()を呼び出す前に、
スレッドが確実に終了してからCloseHandleしたほうがいいのでしょうか?
思いつくのは、Sleep()で適当に待つか、
WaitForSingleObject()にタイムアウトを設定して無限ループで
リトライをかける、ぐらいなのですが、こんなんでいいのでしょうか。
それとも気にしないでCloseHandleしていいのでしょうか?
741
名前:
デフォルトの名無しさん
:05/02/07 22:01:38
気にしないでCloseHandleしていい
742
名前:
デフォルトの名無しさん
:05/02/07 22:11:22
>>740
スレッドハンドルは使わないならスレッド作成直後に即CloseHandleしてもOK
743
名前:
デフォルトの名無しさん
:05/02/07 22:17:13
>>741
,742
単純、明快な回答ありがとうございます。
>スレッドハンドルは使わないならスレッド作成直後に即CloseHandleしてもOK
試してみて大丈夫だったんで不思議に思ってたんですが、
このことってMSDNとかに書いてあるでしょうか?
744
名前:
デフォルトの名無しさん
:05/02/07 22:41:05
>>742
まじで?
745
名前:
デフォルトの名無しさん
:05/02/07 22:48:52
スレッドハンドルが必要になるのはスレッドの終了を待機するときだけ。
746
名前:
デフォルトの名無しさん
:05/02/07 22:52:08
ニヤニヤ
747
名前:
デフォルトの名無しさん
:05/02/07 22:53:24
そっか。ハンドルって媒介だから、必要なければ閉じちゃっていいんだ。納得した。
748
名前:
デフォルトの名無しさん
:05/02/07 23:06:49
この調子だとCreateProcess()したときにプロセスハンドルもスレッドハンドルも閉じてないんだろうなぁ。
749
名前:
デフォルトの名無しさん
:05/02/07 23:07:33
向こう側で PulseEvent に来る時点で
ハンドルが閉じられてても動作保証あるのかって問いには
誰も答えられないのか
750
名前:
742
:05/02/07 23:09:35
CreateProccessのMSDN記述に
CloseHandle 関数を使って、プロセスのハンドルとメインスレッドのハンドルの両方を閉じなければなりません。
これらのハンドルが必要ない場合、プロセスを作成した直後にそれらのハンドルを閉じるのが最善です。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
とある。
■過去ログ置き場に戻る■
1-
前250
次250
最新50
DAT2HTML
0.33f Converted.