[表示 : 全て 最新50 1-99 2chのread.cgiへ]
Update time : 08/04 19:56 / Filesize : 19 KB / Number-of Response : 59
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Win32API質問箱 Build110



1 名前:デフォルトの名無しさん [2012/08/04(土) 11:18:03.75 ]
スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。

■過去スレ
Win32API質問箱 Build109
toro.2ch.net/test/read.cgi/tech/1341153543/

■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。
 英語版( msdn.microsoft.com/en-us/library/ )の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで

39 名前:デフォルトの名無しさん mailto:sage [2012/08/04(土) 15:11:43.24 ]
最小構成の仕方に問題があったのか元のソースに変更を適用したらまた元に戻るようになってしまいました
WM_INITDIALOG内でメッセージが発行される事は無くなったのですが

case IDC_RADIOBUTTON_FIND:
MessageBox(NULL, _T("Find"), _T("FindReplace"));
return (INT_PTR)TRUE;
case IDC_RADIOBUTTON_REPLACE:
MessageBox(NULL, _T("Replace"), _T("FindReplace"));
return (INT_PTR)TRUE;

このようにして確認してみた所
Ctrl+Hでダイアログ表示(置換がチェック)
→ダイアログをクリックしてアクティブに(問題無し)
→メインのウィンドウをアクティブにしてCtrl+F(検索がチェック)
→ダイアログをクリックしてアクティブに(IDC_RADIOBUTTON_REPLACEが17回ほど飛んでくる)
という状態になりました

40 名前:デフォルトの名無しさん mailto:sage [2012/08/04(土) 15:15:12.48 ]
ウィンドウプロシージャの方は初期状態(VC++2010プリコンパイル)に以下を追加
case WM_CREATE:
CreateDialog(NULL, IDD_USERICHEDIT_FINDREPLACE, hWnd, FindReplaceProc);
// VisibleはFALSE
break;
case WM_KEYDOWN:
switch(wParam) {
case 'F':
if(GetKeyState(VK_CONTROL) < 0) {
if(IsWindowVisible(rei.fri.hDlg) == 0) {
ShowWindow(rei.fri.hDlg, SW_SHOWNOACTIVATE);
}
CheckRadioButton(rei.fri.hDlg, IDC_RADIOBUTTON_FIND, IDC_RADIOBUTTON_REPLACE, IDC_RADIOBUTTON_FIND);
return 0;
}
break;
case 'H':
if(GetKeyState(VK_CONTROL) < 0) {
if(IsWindowVisible(rei.fri.hDlg) == 0) {
ShowWindow(rei.fri.hDlg, SW_SHOWNOACTIVATE);
}
CheckRadioButton(rei.fri.hDlg, IDC_RADIOBUTTON_FIND, IDC_RADIOBUTTON_REPLACE, IDC_RADIOBUTTON_REPLACE);
return 0;
}
break;
}
break;


41 名前:片山博文MZボット ◆0lBZNi.Q7evd [2012/08/04(土) 15:16:02.07 ]
>>39
WM_COMMANDメッセージで、LOWORD(wParam)とHIWORD(wParam)を
両方チェックしないと駄目だよ。

42 名前:デフォルトの名無しさん mailto:sage [2012/08/04(土) 15:16:41.35 ]
//ダイアログプロシージャ
INT_PTR CALLBACK FindReplaceProc(HWND hDlg, UINT unMessage, WPARAM wParam, LPARAM lParam)
{
INT wmId, wmEvent;

switch (unMessage) {
case WM_INITDIALOG:
rei.fri.hDlg = hDlg;
SetWindowPos(hDlg, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE);
return (INT_PTR)FALSE;
case WM_COMMAND:
wmId = LOWORD(wParam);
wmEvent = HIWORD(wParam);
switch(wmId) {
case 2: // 閉じるボタンで使用済み
ShowWindow(hDlg, SW_HIDE);
return (INT_PTR)TRUE;
case IDC_RADIOBUTTON_FIND:
MessageBox(hDlg, _T("Find"), _T("FindReplaceProc"), MB_OK);
return (INT_PTR)TRUE;
case IDC_RADIOBUTTON_REPLACE:
MessageBox(hDlg, _T("Replace"), _T("FindReplaceProc"), MB_OK);
return (INT_PTR)TRUE;
}
return (INT_PTR)TRUE;
}
return (INT_PTR)FALSE;
}
//グローバル変数
RICHEDITINFO rei = {0};


43 名前:デフォルトの名無しさん mailto:sage [2012/08/04(土) 15:27:00.48 ]
>>41
wmEventがBN_CLICKEDの時にメッセージボックスが表示するようにしたのですが
相変わらず17回表示されてしまいました


44 名前:デフォルトの名無しさん [2012/08/04(土) 15:35:42.19 ]
>>39
ここはお前のブログじゃねえんだよ。

連投でゴミコード貼るな。

45 名前:片山博文MZボット ◆0lBZNi.Q7evd [2012/08/04(土) 15:42:29.55 ]
>>43 WM_KEYDOWNのリピートカウントをチェックして

46 名前:片山博文MZボット ◆0lBZNi.Q7evd [2012/08/04(土) 15:43:51.22 ]
>>45 間違えた。WM_KEYDOWNのlKeyDataのビット30をチェックして。

47 名前:片山博文MZボット ◆0lBZNi.Q7evd [2012/08/04(土) 15:51:49.24 ]
if (lParam & 0x40000000) { ... }



48 名前:デフォルトの名無しさん mailto:sage [2012/08/04(土) 16:42:32.60 ]
Ctrl+F or Hが押された時の動作をこのようにしたのですが
if((lParam & (LONG)pow((long double)2, 30)) == 0) {
if(IsWindowVisible(rei.fri.hDlg) == 0) {
ShowWindow(rei.fri.hDlg, SW_SHOWNOACTIVATE);
}
CheckRadioButton(rei.fri.hDlg, IDC_RADIOBUTTON_FIND, IDC_RADIOBUTTON_REPLACE, IDC_RADIOBUTTON_FIND);
}

>>39のようになりました
Ctrl+Hでダイアログ表示(置換がチェック)
→ダイアログをクリックしてアクティブに(メッセージボックス無し)
  ここで既に置換メッセージは完了してるはずなのに
→メインのウィンドウをアクティブにしてCtrl+F(検索チェック、メッセージボックス無し)
→ダイアログをクリックしてアクティブに(IDC_RADIOBUTTON_REPLACEが来てメッセージボックスが17回ほど表示)
  ここでメッセージが来るとしたらCtrl+Fなので検索メッセージのはずなのですが
  ここで置換メッセージが来るのです


49 名前:片山博文MZボット ◆0lBZNi.Q7evd mailto:sage [2012/08/04(土) 16:59:14.27 ]
>>48
ちょっと御手上げですね。。。ZIPファイルでください。
www.axfc.net/uploader/

※整数ではpowじゃなくて「<<」(シフト演算)を使う。

50 名前:デフォルトの名無しさん mailto:sage [2012/08/04(土) 17:55:26.60 ]
すみません遅くなりました
現象が再現できる最小構成です
ttp://www1.axfc.net/uploader/Sc/so/367595.zip&key=radiobutton
よろしくお願いします


51 名前:片山博文MZボット ◆0lBZNi.Q7evd mailto:sage [2012/08/04(土) 18:03:15.01 ]
48行目:
while (GetMessage(&msg, NULL, 0, 0)) {
if (!IsDialogMessage(hDialogFindReplace, &msg)) {
if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
}


52 名前:片山博文MZボット ◆0lBZNi.Q7evd mailto:sage [2012/08/04(土) 18:04:50.61 ]
TranslateAcceleratorがあるなら、Ctrl+Fなどは、リソースで設定すると
いいよ。

53 名前:デフォルトの名無しさん mailto:sage [2012/08/04(土) 18:32:56.77 ]
完売ッッ!ソニー「初音ミク」Walkman 5時間で完売ッッ!
engawa.2ch.net/test/read.cgi/poverty/1344025450/

ソニー、“Walkman”の「初音ミクモデル」を限定発売キタ━━━━━━━(゚∀゚)━━━━━━━!!
engawa.2ch.net/test/read.cgi/poverty/1343964996/


ソニーは、“Wlakman Sシリーズ”に初音ミクの刻印を施した「初音ミク生誕5周年記念モデル」を直販サイトのソニーストアお
よび直販店のソニーストア銀座/名古屋/大阪にて限定販売する。本日8月3日よりエントリー登録の受付を開始しており、8
月中旬から1次販売、8月下旬から2次販売する。

対象モデルは「NW-S764」(12,800円/税込)と専用スピーカー付きの「NW-S764K」(15,800円/税込)。本体のみの「NW-
S764」は、初音ミクのコンセプトカラーであるブルーとブラックの2色、スピーカー付きモデルはブルーのみで展開し、各色
3939台ずつの限定販売となる。

本体背面にはピアノをモチーフとした描き下ろしの初音ミク刻印デザインを施しているほか、オリジナルの壁紙や、初音ミク
が初めて世に出た際のサンプル楽曲として挿入されていた『星のカケラ』のフルバージョンをプリインストール。
www.phileweb.com/news/d-av/201208/03/31313.html

www.phileweb.com/news/photo/d-av/313/31313/walkman39_all.jpg
www.phileweb.com/news/photo/d-av/313/31313/walkman39_up.jpg
www.phileweb.com/news/photo/d-av/313/31313/walkman39_wall.jpg
www.phileweb.com/news/photo/d-av/313/31313/walkman39_st.jpg

54 名前:片山博文MZボット ◆0lBZNi.Q7evd [2012/08/04(土) 18:44:00.33 ]
>>50 codepad.org/a9ZyeJxb

55 名前:デフォルトの名無しさん mailto:sage [2012/08/04(土) 18:49:15.64 ]
662:デフォルトの名無しさん :2012/01/09(月) 16:00:17.75 [sage]
ヲチのためだけにスレ立て続けてるゴミ
パーカおめとか面白いと思ったワードを連呼する池沼
高度情報に粘着してる陰険

56 名前:デフォルトの名無しさん mailto:sage [2012/08/04(土) 19:04:34.91 ]
経済的に困窮した日本人が右翼化、ネットで外国人排斥−米紙

米紙ニューヨーク・タイムズは29日、「日本社会の中・下層の青年たちは、自らの生活に対して失望・
落胆した感情を、インターネットなどを通じて外国人への排斥につなげている」と報じ、こうした日本人は
「ネット右翼とも呼ばれている」と伝えた。環球時報が報じた。

記事では、「2009年12月、十数人の日本人青年が、在日韓国人が通う小学校に集まり、拡声器で『
韓国のスパイ』などと叫ぶ事件があった」と紹介。続けて、一部の日本人青年のターゲットは韓国人や
中国人をはじめとするアジア人の他、キリスト教徒にも及びはじめていると報じた。

続けて記事では、ネット右翼の日本人の多くは若い男性で、給与額の低い仕事に従事しているとし、
ネット上で時間や場所を決めたうえで、外国人に向けたデモ活動を行っている紹介。

さらに記事は、社会学者の分析を引用したうえで、一部ではネット右翼を「新しいナチス」だと表現する
人もいるが、彼らは攻撃性もなく、現時点では暴力行為もないとした一方で、「彼らの目的は日本の
地位低下と自身の経済的困窮を表現することが目的」と報じた。
news.searchina.ne.jp/disp.cgi?y=2010&d=0831&f=national_0831_067.shtml


57 名前:デフォルトの名無しさん mailto:sage [2012/08/04(土) 19:34:18.04 ]
>>54
ありがとうございます
メッセージループの変更をしてみたのですが
相変わらずメッセージボックスが17回表示されてしまいます




58 名前:デフォルトの名無しさん mailto:sage [2012/08/04(土) 19:42:01.63 ]
>>54
すみませんbCheckingを見落としていました
このようにする必要があるという事はBN_CLICKEDが何回も来るのは仕様という事になるんですね

ダイアログプロシージャの方にこのコードを追加したら思い通りの動作になりました
case WM_ACTIVATE:
wmId = LOWORD(wParam);
wmEvent = HIWORD(wParam);
switch(wmId) {
case WA_CLICKACTIVE:
return (INT_PTR)TRUE;
}
return (INT_PTR)TRUE;
・非アクティブで表示
・非アクティブで最前面
・WM_INITDIALOGで戻り値FALSE
・WM_COMMANDでwmEvent分岐の重要性
・WM_KEYDOWNで複数回実行されるのを回避
この点もありがとうございました







[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](*・∀・)<19KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef