- 1 名前:デフォルトの名無しさん [2007/04/18(水) 01:54:51 ]
- スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんやお姉さんたちが答えてくれるかも。 過去スレ、関連リンクは>>2-5くらい。 ■注意 ・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。 ・日本語版MSDN Online Libraryは不完全です。英語版(msdn.microsoft.com/library/)の利用推奨。 ・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。 ・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで
- 596 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 16:17:18 ]
- >>595
ありがとうございます。 読み込めました。
- 597 名前:デフォルトの名無しさん [2007/05/02(水) 16:48:27 ]
- 初歩的な質問で申し訳ありません。
VC++でダイアログベースのプログラムの作成中です。 プロシージャ内でクラスを宣言して使用したいのですが、エラーになります。 たとえば以下のようなプログラムのがあるとします(Fooクラスが別途存在します) LRESULT CALLBACK DlgProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) { switch (msg) { case WM_INITDIALOG: Foo foo; return FALSE; case WM_HOGE: foo.hoge(); default: return FALSE; } return TRUE; } この場合、以下のエラーが出力されます 'foo' の初期化が 'case' ラベルによって行われませんでした。 調べた結果、WM_HOGE内でFooクラスの宣言がなされてない(初期化がされていない)のでエラーになっている、ということはわかりました。 ここで質問なのですが、Fooクラスの宣言というのは一般的にどこで行うべきなのでしょうか? プロシージャの最初のswitchの外で宣言してしまってもいいものなのでしょうか。
- 598 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 16:51:41 ]
- >>588
DriverとAttributesは以下で判断 @.ODBCドライバを落とし、インストールする。 dev.mysql.com/downloads/connector/odbc/3.51.html A.コンパネから“管理ツール”の“データソース(ODBC)”を開く。 B.ファイルDNSタブから[追加]ボタンを押す・ C.データソースMySQL ODBC 3.51 Driverを選択し、[次へ]を押す。 D.データソース名に"MAROYUKI"と入力し、[次へ]を押す。 E.とりあえず完了させる。 F.次にConnecter/ODBCダイアログが開くので、必要情報を代入し[OK]を押す。 G.\Program Files\Common Files\ODBC\Data SourcesフォルダにMAROYUKI.dsnができる。 H.MAROYUKI.dsnをテキストエディタで開き、lpszDriverとlpszAttributesに一致するか確認。
- 599 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 16:52:15 ]
- LRESULT CALLBACK DlgProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)
{ switch (msg) { case WM_INITDIALOG: { Foo foo; } return FALSE; case WM_HOGE: foo.hoge(); default: return FALSE; } return TRUE; } こうすればいいがー
- 600 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 16:54:30 ]
- >>594
こんなのSQLConfigDataSource()を呼ぶ所でattの512バイトがどうなってるのか見ればすぐわかるのにね。
- 601 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 16:54:37 ]
- しまった!
↓のcaseでfooつかっとるかこれ! んじゃ、外に定義でいいんじゃね?
- 602 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 16:55:07 ]
- >>599
それは、case WM_HOGE でfooが使えないべ >>597 switchの外でいいよ。 case WM_HOGE の時に Foo foo を通過してないまま foo を使うことになるべ。
- 603 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 17:00:29 ]
- フォールスルー考えてのことならいいんだが
期待しているのは static のような気がする
- 604 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 17:06:56 ]
- 要は、そのfooをどこでどう使いたいか、どういう仕様か、によりけりだな。
- 605 名前:597 [2007/05/02(水) 17:07:02 ]
- レスありがとうございます。
LRESULT CALLBACK DlgProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) { Foo foo; // ←switchの外で宣言 switch (msg) { case WM_INITDIALOG: return FALSE; case WM_HOGE: foo.hoge(); default: return FALSE; } return TRUE; } というプログラムで期待通りの動作を確認しました。 ありがとうございました。
- 606 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 17:07:48 ]
- うーむ、INIT_DIALOGはなんだったんだろうw
- 607 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 17:44:03 ]
- レンジのアイコンだから解凍で良いだろ
- 608 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 17:54:55 ]
- 蒸し返すなw
- 609 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 18:02:20 ]
- >>607
アホかい。 解凍と言う用語があったから、電子レンジのアイコンが作られたに決まっておろうが。 >>584 吉田じゃなくて吉崎だな。
- 610 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 18:11:15 ]
- 石化なんて表現もあったからなw
- 611 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 18:18:52 ]
- 俺:「ファイルの圧縮で、反対の言葉が解凍ってのはどうかと話題がでてるが、
姉ちゃんならどういう言葉が妥当だと思う? 姉:「うーん、レンジでチンして解凍みたいだから、解チンってのはどう?」 俺:( ゚д゚)ポカーン
- 612 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 18:21:16 ]
- つまらん
- 613 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 18:22:28 ]
- 圧縮の対義語は伸張やろが!
- 614 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 18:59:27 ]
- 圧縮解凍って言葉が昔から対になってんだから小さい事気にすんな
日本語して意味がおかしくて気に食わないならpack、unpackって言え
- 615 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 19:12:26 ]
- 圧縮/伸張、compress/decompressでFA。
- 616 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 19:39:26 ]
- >>614
おいおい、昔って言ったって、吉崎某が使い始めてから未だ20年経ってないぞ。 #あ、充分昔かw
- 617 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 19:45:45 ]
- DB関係の作った事ないし詳しくないからとんでもなく見当違いな事言ってるかもしれないけど教えてくれ。
APIでDB触れるのってODBCだけ?oo4oとかADOとかDAOとかAPIとして持ってないのか?
- 618 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 20:04:43 ]
- 符号化の結果縮むのが圧縮。
符号化の結果伸びるのが伸長。 復号化が解凍。 じゃないのか?
- 619 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 20:38:55 ]
- >>617
何を聞きたいのかよくわからん それらは最終的にODBC使うんじゃなかったっけ
- 620 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 21:04:09 ]
- エンコード/デコードで
- 621 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 21:39:49 ]
- >>616
実際にはもっと昔から使われていた。 それ以前にはスタンダードと言えるほど広まっているツールが なかったからLHA発祥という誤解が定着してしまっただけだ。
- 622 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 21:57:53 ]
- っYZ1
- 623 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 22:09:52 ]
- LHA は圧縮だけじゃなくて書庫の機能も持っているから、展開が妥当だと
- 624 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 22:37:24 ]
- >>619
そうだったのか。いや俺も実際何を聞きたいのかよくわからないんだがw つまりODBCAPI以外にDBを触れるAPIがあったら知りたかった
- 625 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 22:52:48 ]
- oo4oもADOもDAOも、みな関数と言う形ではAPIを持っていないと思う。
- 626 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 23:02:01 ]
- oo4oなつかしいなw
- 627 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 23:11:18 ]
- >>611
俺が「それはカユイちんこみたいだな」って言ってたって言っておけ あと「俺のチンコが痒いです」とも言っておけ
- 628 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 23:32:08 ]
- >>585
うぐいすパンとか?
- 629 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 23:35:39 ]
- うぐいすパンはうぐいす入ってるだろ
- 630 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 23:51:47 ]
- 東京ばな奈とか?
- 631 名前:デフォルトの名無しさん [2007/05/02(水) 23:58:26 ]
- JETはどうした
- 632 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 00:04:46 ]
- だからコンパイルエラーはWin32APIとはなんも関係ないっつーの
- 633 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 04:08:24 ]
- >605
static つけないと呼び出されるたびに初期化されるんじゃないの まあ動くならいいけど今後のこともあるし
- 634 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 04:19:50 ]
- static 必要っぽい気はするな。
WM_INITDIALOG で new してユーザ領域にそのポインタを置いて それを使うともっといいんじゃないかとは思うけど。 同時に複数起動する必要がないならいいけど。
- 635 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 04:28:26 ]
- WM_PAINT内で
BeginPaint〜EndPaintを二回以上やると 2回目からの描画内容が画面に出ないんですけど どうしてですか?
- 636 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 04:35:46 ]
- EndPaint で更新すべき領域をクリアしてしまうんじゃない?
- 637 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 08:17:23 ]
- フォアグラウンドのIMEの状態を調べてIME_CMODE_ROMANがない場合VK_KANAを有効にしたいのですが。
チェックするタイミングはキーフックとタイマーのどちらが良いでしょうか?
- 638 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 08:46:24 ]
- >>637
その解法は、両方どつぼりそうな予感。
- 639 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 08:49:04 ]
- 入力対象が確定していれば、
そいつのWM_SETFOCUSメッセージ時じゃだめか?
- 640 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 11:48:30 ]
- 状態が変化する前に、処理すればいいのに
- 641 名前:デフォルトの名無しさん [2007/05/03(木) 11:53:57 ]
- WM_PAINTのタイミングで描画しています
ウィンドウを大きくするときは再描画されるのですが小さくするときはされません どちらでも再描画されるようにするにはどうすればよいでしょうか?
- 642 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 12:08:16 ]
- >>641
もう少しくやしく。 もしかしたら、違う要因かも知れないから。
- 643 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 12:09:51 ]
- WS_HREDRAW/WS_VREDRAWとか?
- 644 名前:641 mailto:sage [2007/05/03(木) 12:28:08 ]
- >>642
最大化ボタンを押したりウィンドウの右下をドラッグしてウィンドウを大きくした場合、 それに連動してウィンドウ内の画像が書き換えられます。 そのときにcase WM_PAINT:を通過していることをMESSAGEBOXを表示させて確認しました 最大化から元に戻す場合やウィンドウの右下をドラッグしてウィンドウを小さくした場合、 ウィンドウ内は再描画されません (同様にMESSAGEBOXで確認しました)
- 645 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 12:28:47 ]
- >>643
MSDNやGoogleを検索しましたがなかなか情報がでてきません 関連資料あればお願いします
- 646 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 13:03:47 ]
- >>645
CS_HREDRAW CS_VREDRAW
- 647 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 13:08:19 ]
- >>644
WM_PAINT描画部さらせる?
- 648 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 13:14:26 ]
- >>647
LRESULT WINAPI MsgProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam ) { switch( msg ) { case WM_DESTROY: Cleanup(); PostQuitMessage( 0 ); return 0; case WM_PAINT: MessageBox(hWnd, "ok", "check", 0); Render(); ValidateRect( hWnd, NULL ); return 0; } return DefWindowProc( hWnd, msg, wParam, lParam ); }
- 649 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 13:26:03 ]
- エクスプローラの縮小版表示で独自の画像形式を表示させたいんだけど、
どうやったら出来ますか?
- 650 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 13:27:39 ]
- >>649
独自の画像形式とは? 自分が考えたオリジナルフォーマット?
- 651 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 13:32:41 ]
- >>648
ソースあげ
- 652 名前:649 mailto:sage [2007/05/03(木) 13:33:52 ]
- >>650
自分が考えたフォーマットもありますし、RLAなどの標準で表示されないフォーマットもあります。
- 653 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 13:34:55 ]
- >>649
IExtractImage を実装してレジストリに登録
- 654 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 13:41:28 ]
- >>649
>>653の補足 msdn.microsoft.com/msdnmag/issues/0600/w2kui2/
- 655 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 13:52:42 ]
- >>641
WM_SIZE で InvalidateRect すれば?
- 656 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 13:57:26 ]
- >>655
WM_PAINTをWM_SIZEに書き換えたところうまくいきました 相談にのっていただいた皆様本当にありがとうございました
- 657 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 14:03:31 ]
- WM_SIZE でレンダリングしたのか。
それっていいのか? というか、WM_PAINT は処理しないのか?
- 658 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 14:03:42 ]
- >>656
乙。 連休を楽しめ。
- 659 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 14:06:00 ]
- >>657
WM_SIZEでInvalidateRectをコールし、 WM_SIZE時の範囲を更新範囲に追加したんお
- 660 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 14:09:06 ]
- レンダリング?
- 661 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 14:14:02 ]
- >>659
おk。 >>660 >>648
- 662 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 14:18:35 ]
- レスどうも
>>639 入力中の英和混在入力のモード切替に対応したいので WM_SETFOCUSじゃ無理なんです。
- 663 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 14:44:44 ]
- >>637
>フォアグラウンドのIMEの状態を調べてIME_CMODE_ROMANがない場合 >VK_KANAを有効にしたいのですが。 >チェックするタイミングはキーフックとタイマーのどちらが良いでしょうか? >>662 >入力中の英和混在入力のモード切替に対応したいので >WM_SETFOCUSじゃ無理なんです。 エスパーじゃないんで要点を詳しく。 現状の具体的な問題点と、その解法にIMEをもってきた理由を特に。 (難解が平易に変わるかも)
- 664 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 15:00:16 ]
- >>661
どこがレンダリング?w
- 665 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 15:20:42 ]
- つ[辞書]
- 666 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 15:29:50 ]
- >>664
Render ってのが見えないのだろうか。
- 667 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 15:31:24 ]
- 【他動-14】 《コ》
〜をレンダリングする、 〔画像{がぞう}などのデータを〕実際{じっさい}に描画{びょうが}する、 〔三次元{さんじげん}のオブジェクトを〕二次元{にじげん}の画像{がぞう}にする ◆データを解釈・計算して視覚的に表示すること。 ・ Different browsers render HTML differently. ブラウザによって HTML のレンダリングは異なります。
- 668 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 15:37:01 ]
- 話の流れを読まずに、文字の綴りだけをあげつらった揚げ足取りなんだから
そんなに反応することないのに・・ ちょっと前にも、こういう質問とは本来関係ないことで脱線しなかったか?
- 669 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 15:38:32 ]
- おや、本当だ
Render()見落としてたわ・・・・
- 670 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 15:40:20 ]
- >>667
広義には与えられたデータを元に視覚表示すること全てレンダリングだけど 広く一般にレンダリングと言ったら3Dモデルのレンダリングのことを指すのが言葉の難しいところだ
- 671 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 15:44:47 ]
- HTML レンダリングもよく使うと思うけど。
- 672 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 15:45:57 ]
- >>663
簡単に言えば、 「窓使いの憂鬱」と言うソフトにカナロックON/OFFで キーマップを切り替える機能があるんですけど。 IMEの英和混在入力を使うとずれるんですねこれが。 原因は、IME_CMODE_ROMANとVK_KANAがシンクロしないからなんで、 グローバルフックかけて外部から梃入れしようかなと。
- 673 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 15:53:07 ]
- >>671
表示全てをレンダリングと言うよりは使うとは思うけど それも結局ソッチの道の人がほとんどだしさ まぁ、どうでもいいことだと思うけどw
- 674 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 16:30:38 ]
- アタシのことでけんかしないで!
- 675 名前:649 mailto:sage [2007/05/03(木) 16:31:19 ]
- >>653-654
サンクス これからやってみます
- 676 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 16:37:13 ]
- >>672
開発は終わってるんだな・・・ これソース公開してないかい?
- 677 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 16:42:37 ]
- >>672
sourceforge.net/project/showfiles.php?group_id=5403 ソースはここみたい。 ある程度処理を読んで解析した上で、対処した方がいいかもね。
- 678 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 17:00:08 ]
- hook.cpp
n.m_isKanaLockToggled = !!(GetKeyState(VK_KANA) & 1); これを HWND hWnd = GetForeGroundWindow(); ImmGetContext(hWnd); ImmGetConversionStatus(hImc, &dwc, &dws) n.m_isKanaLockToggled = (dwc & IME_CMODE_JAPANESE) && (dwc ^ IME_CMODE_ROMAN); ImmReleaseContext(hWnd, hImc); VS2003でないから試せないけど。
- 679 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 17:07:34 ]
- おーいXOR…
- 680 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 17:50:06 ]
- n.m_isKanaLockToggled = (dwc & IME_CMODE_JAPANESE) && (dwc & ~IME_CMODE_ROMAN);
- 681 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 17:54:23 ]
- &~でも^でもどっちでもよくね?
ダメな理由があるなら別だけど
- 682 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 18:27:44 ]
- っ どっちもだめ
- 683 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 18:54:37 ]
- >>681
XORとNOT&ANDが同じ動作とでも思ってるの?
- 684 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 18:55:51 ]
- CPUの中身は全部XORの組み合わせ
- 685 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 19:16:48 ]
- >>683
もちろんです
- 686 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 19:19:09 ]
- 00001000 ^ 11111111 = 11110111 TRUE
00001000 ^ 11110111 = 11111111 TRUE
- 687 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 19:20:14 ]
- >>685
これは すごい ゆとり
- 688 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 19:23:27 ]
- 10以外の位取りはゆとりで教育課程から消えたけど
ビット演算も学校で教えてたっけ?
- 689 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 19:29:01 ]
- ビット演算まではなかったと思う。
- 690 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 19:29:24 ]
- 学校で習ったかどうかなんて関係ない。
- 691 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 19:32:11 ]
- 工業乙
- 692 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 19:34:31 ]
- どっちかのbitが立ってることを確認するために
if(hoge & 0x000000C0) みたいな書き方出来ると思うのですが 両方のbitが立ってることを確認したければ if(hoge & 0x000000C0 == 0x000000C0) って書くしか方法ないですか?
- 693 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 19:42:07 ]
- hoge & 0x000000C0 & 0x000000C0がある
- 694 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 19:43:01 ]
- if((hoge & 0x000000C0) & 0x000000C0)
- 695 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 19:43:38 ]
- 全部不正解
- 696 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 19:44:36 ]
- 00001000 ^ 11111111 = 11110111 TRUE
00001000 ^ 11110111 = 11111111 TRUE を 00001000 &^ 11111111 = 00001000 &^ 11110111 = にするとどうなるの?
|

|