Win32API 質問箱 Build5
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNGやさしいお兄さんたちが答えてくれるかも。
でも、最低限Web検索ぐらいはしてね。
前スレ
Win32API 質問箱
http://pc.2ch.net/tech/kako/991/991576947.html
Win32API【2】
http://pc.2ch.net/tech/kako/1006/10067/1006783012.html
Win32API 質問箱 Build3
http://pc.2ch.net/tech/kako/1006/10067/1006783012.html
Win32API 質問箱 Build4
http://pc3.2ch.net/test/read.cgi/tech/1023361418/
参考
MSDN Online
http://www.microsoft.com/japan/msdn/default.asp
猫でもわかるプログラミング
ttp://www.kumei.ne.jp/c_lang/index.html
0669デフォルトの名無しさん
NGNG斜め45度に傾いた直線型のペンを作りたいとか?
0670デフォルトの名無しさん
NGNG全てフックするなり、ログを取るなりできるデバッガ/ツールを御存知ないで
しょうか。
# いまのところ ollydbg と言うデバッガを使っているものの、DLL 内の
# エントリポイント全てにブレークポイントを設定するのは困難なので、
# もう少しいいデバッガ/ツールが欲しくなっています。
0671デフォルトの名無しさん
NGNGただいま戦闘中!!!
嫌いな人はこちらへ漏れなく串つき
http://live.2ch.net/test/read.cgi/festival/1029826982/l30
頭のいい人限定
0672グローバルIPの取得方法
NGNGIpconfigで書き出したテキストから読み込む方法と
試したのですが、あまりいい方法だと思いません。
みなさんどうしてます?
0673デフォルトの名無しさん
NGNG0674デフォルトの名無しさん
NGNGOCNとか犀ネットの専用線なら吐く。
吐かないのはADSLでマスカレードかかってる場合。
0675デフォルトの名無しさん
NGNG漏れは672じゃないが、
モデム直結なら、グローバルIPを吐くんじゃないの?
当方、ルータユーザーだから分からんが。
0676デフォルトの名無しさん
NGNGなお、ADSLのようにグローバルIPを変換しているような鯖は、
グローバルアドレスは実際の鯖のIPとは別なので、
あらかじめ外向けのホスト名を自分でセットしておく。
int setinetaddrbyname(struct sockaddr_in &addr, const char *s) {
struct hostent *hp;
if ((hp = gethostbyname(s)) == NULL) { // 引けない
return -1;
} else if (hp->h_addrtype != AF_INET) { // IPv6/NetWare?
return -1;
} else {
addr.sin_addr.S_un.S_un_b.s_b1 = hp->h_addr_list[0][0];
addr.sin_addr.S_un.S_un_b.s_b2 = hp->h_addr_list[0][1];
addr.sin_addr.S_un.S_un_b.s_b3 = hp->h_addr_list[0][2];
addr.sin_addr.S_un.S_un_b.s_b4 = hp->h_addr_list[0][3];
return 0;
}
}
0677使えねーPaintDesktop
NGNGActivDesktop のときに取れません.
方法はあります?
0678使えねーPaintDesktop
NGNG0679グローバルIPの取得方法
NGNGそうなんですよねぇ
うちはADSLモデム直なのでipconfigでもいいのですが
環境によって使えないのはどうかと思いまして
>>676
非常に申し訳ないのですが理解不能です^^;
676さんの書き込みをヒントになんとか頑張ってみます。
分からなかったときはまた書き込むと思いますが
そのときはよろしくお願いします。
ありがとうございましたー
0680デフォルトの名無しさん
NGNG>>669
>斜め45度に傾いた直線型のペンを作りたいとか?
そうです、ペンの形が45度傾いた物です、説明不足でした。
LineToで線を引いたときに、傾きと同じ角度の線をひくと細く、
傾きと垂直な方向に線を引くと太くなるようなペンを作りたいのです。
落書き機能を実現するためで、ペンの形を色々変えたいのですが、
丸と四角はPS_ENDCAP_ROUNDとかで実現できたのですが、斜めに傾いた
ものはつくれませんでした。
0681デフォルトの名無しさん
NGNG/ ←こういうやつ?
◆ 右下に引きずるとこうなって
/ 右上に引きずるとこうなるってやつだよな?
/
0682デフォルトの名無しさん
NGNGすが、自分の作ったプログラムのウィンドウ上ではSetCursor()API
を使用するだけで可能ですが、それ以外のウィンドウではウィンドウ
のシステムで設定されているカーソルになってしまいます。
どなたか、自分のプログラム以外のウィンドウ上のマウスカーソルの
変更方法を知っている方はいらっしゃいませんか。
0683_
NGNGで、[インストール]するとドライバが入るわけですが、
あれってどういう機構になっているんでしょうか?
なにかinfファイルを処理するコマンドに食わせているのか、
シェル?にそういう機構が組み込まれているのか。
インストーラからドライバを入れたいのだけど...。
どうしたらいいのか検討つきません。
どなたかご存知の方いらっしゃいませんか?
0684デフォルトの名無しさん
NGNG> うちはADSLモデム直なのでipconfigでもいいのですが
> 環境によって使えないのはどうかと思いまして
それは、しょうがない。そもそもルーター経由の場合は、ルーターのグローバル
アドレスの情報はルーターにしかないから取り様が無い。
ところで、何でグローバルアドレスを知りたいの ?
ついでに、一つのマシンに複数の IP アドレスが持てることは知ってるよね ?
0685デフォルトの名無しさん
NGNG> なにかinfファイルを処理するコマンドに食わせているのか、
> シェル?にそういう機構が組み込まれているのか。
explorer で関連付けされてるよ。うちのマシンだと...
C:\WINNT\System32\rundll32.exe setupapi,InstallHinfSection DefaultInstall 132 %1
となっている。
0686デフォルトの名無しさん
NGNG遅レスですみません。そうです、そういうペンです。APIで設定次第で
できるようなものではないですか? PS_ENDCAP_FLATというのがあったんですが
あれはペンの角度がラインの角度と勝手に垂直になってしまうのです。
0687_
NGNG例えば、席をはずしたいがスタンバイはしたくない場合に
使いたいと思っています。
google などで検索してもわかりませんでした。
0688デフォルトの名無しさん
NGNG角度から計算して線の太さを変えてみたらどうか、と思ってみるテスト。
あるいはPolygonで平行四辺形を描くとか。
0689デフォルトの名無しさん
NGNG> 自分のプログラム以外のウィンドウ上のマウスカーソルの変更
勝手にされたらウザいからやめれ
0690デフォルトの名無しさん
NGNGデスクトップキャプチャソフトとか作りたいんでないかい?
ドラッグで範囲指定できるような
0691デフォルトの名無しさん
NGNG何も問題ないわけだが
0692デフォルトの名無しさん
NGNGあ、そっか。普通に計算して描画させればいいですね。
なるほど、ペンを使うことばっかり考えてました、
0693デフォルトの名無しさん
NGNGマウスカーソルも変更されてるから>>690の言ってるような可能性もないわけではない。
0694デフォルトの名無しさん
NGNGマルチディスプレイ環境で、ディスプレイを指定して
(たとえばセカンダリ・ディスプレイに)Windowを
作るにはどうすればいいのでしょうか・・・
たとえば1024*768のディスプレイが2つ左右に並んでいる場合、
createWindowの引数でWindowの位置を(1300,200)とかに
すれば一応右側のディスプレイにWindowを作ることは出来ますが、
これだとディスプレイが上下にある場合に対応できない、等の
問題が生じてしまいます。必ずセカンダリディスプレイの中央に
Windowを生成したい、というときにはどうすればいいのでしょう??
0695デフォルトの名無しさん
NGNGEnumDisplayMonitors/GetMonitorInfo (98/2000以降ゆえ注意)
あたりでセカンダリディスプレイの座標系を調べて
そこにMoveするというのはどうかなあ
やったことないので実験結果プリーズ(はぁと)
0696デフォルトの名無しさん
NGNGEnumDisplayMonitors/GetMonitorInfo
0698デフォルトの名無しさん
NGNG>問題が生じてしまいます。必ずセカンダリディスプレイの中央に
>Windowを生成したい、というときにはどうすればいいのでしょう??
ユーザが二つのモニタを左右に配置しているか上下にしているか
コードで知ることはできるのだろうか?
コード上では、いつも左右に配置していると仮定するとよいのでは?
0699デフォルトの名無しさん
NGNGinfファイルの書式についてはPlatformSDKに簡単な説明があったはず。
ただ、深くまで知ろうとすればDDKが必要。
>>687
WindowMessage、SystemCommand(詳細忘れた。MSDN探せば直ぐ見つかる)
0700デフォルトの名無しさん
NGNG第一引数のインスタンスハンドルの値が不変であることは保証されてますか?
クラスのprivateメンバに組み込もうか
必要になる度に呼び出そうか悩み中
0701デフォルトの名無しさん
NGNG不変というのが変数(第一引数)の値のことを言ってるのか
実際のハンドルのことを言っているのかよくわからん。
ハンドルは不変だし、
変数の方もローカルな変数である以上、
自分で書き換えるような真似をしなければ不変。
0702デフォルトの名無しさん
NGNGというか、日本語間違えました
要はOSから割り当てられたアプリケーションのハンドルが
アプリケーションが終了するまで不変かどうか知りたかっただけです
ありがとう
0703デフォルトの名無しさん
NGNG>702=>700
で
>701へのレスでした
0704デフォルトの名無しさん
NGNGsocketで接続しデータを読み込む際
非同期で読み込みたいのですが
WSAAsyncSelec を利用するのはわかりましたが、
それ以外の方法はないのでしょうか?
(ウインドウを使わずにやりたい)
0705デフォルトの名無しさん
NGNGWSAEventSelect
0706デフォルトの名無しさん
NGNG0707デフォルトの名無しさん
NGNG0708デフォルトの名無しさん
NGNG0709デフォルトの名無しさん
NGNG書き換えたんですが、つまみをぐりぐりいじったときの描画が微妙です。
こういったことを紹介しているサイトなどはありますでしょうか?
0711デフォルトの名無しさん
NGNG自前でゴリゴリ書かないとダメですか?
0712デフォルトの名無しさん
NGNG自分で書くしかないのでは
0713デフォルトの名無しさん
NGNGいや、80文字目で、とか。。。
まぁ自分でやるのは別にいいんですけど、
そういうワードラップ用コールバックが指定できる関数ありませんでしたっけ?
0714694
NGNG>>696
>>698
ご返答ありがとうございました。
> やったことないので実験結果プリーズ(はぁと)
> ユーザが二つのモニタを左右に配置しているか上下にしているか
> コードで知ることはできるのだろうか?
> コード上では、いつも左右に配置していると仮定するとよいのでは?
こんな感じでマルチモニタの情報をもらえました。
(モニターを上下に配置したときの例)
(1つ目のディスプレイについて)
仮想モニタ上の位置(rect): (0, 0, 1600, 1024)
デバイス名: \\.\Display1\Unit0
(2つ目のディスプレイについて)
仮想モニタ上の位置(rect): (0, 1024, 1024, 1792)
デバイス名: \\.\Display1\Unit1
0715694
NGNGちなみに一つ目が1600*1024で二つ目が1024*768だった
時の例です。
0716デフォルトの名無しさん
NGNGソニータイマー関数はありますか?
0717デフォルトの名無しさん
NGNG画面に描画をしつづけると、10秒後ぐらいから描画がされないく
なってしまう現象があります。(内部での処理は正しく続く)
これってXPになってからの仕様なのでしょうか?
ちとすれ違いスマソ
0718デフォルトの名無しさん
NGNGOSに処理を返さないってどういう意味よ。
GetMessageやPeekMessageを呼ばないってこと?
もしそうなら、WM_PAINTの処理とは他のところで
直接描画してるってこと?
> 描画がされないくなってしまう現象があります。
> (内部での処理は正しく続く)
描画がされなくなるってどういう画面になるのよ。
正しく続くって、デバイスコンテキストの取得も
描画関数の戻り値も調べてみて成功しているってこと?
もっと具体的に説明しよう。
0719717
NGNG舌足らずですみません。
> GetMessageやPeekMessageを呼ばないってこと?
> もしそうなら、WM_PAINTの処理とは他のところで
そうです。
InvalidateRect(hWnd, &rc, TRUE);
UpdateWindow(hWnd);
で直接WM_PAINTを呼んでいます。
他のケースではモードレスでダイアログを立ち上げて
時間のかかる処理中で進捗状況を
SetDlgItemText(hWnd, IDM_CURRENT_STATUS, sTmp);
でループ中で書き換えています。
> 描画がされなくなるってどういう画面になるのよ。
画面が真っ白になってしまいます。
> 正しく続くって、デバイスコンテキストの取得も
戻り値は調べてなかったです。
これがおかしくなってたのかな?
ちと調べてみます。
0720デフォルトの名無しさん
NGNG>InvalidateRect(hWnd, &rc, TRUE);
>UpdateWindow(hWnd);
ループ中にメッセージ処理しなきゃ意味ないよね?
0722デフォルトの名無しさん
NGNGあ、それなら俺の環境(Win98SE)も似た現象が発生するよ。
Winを起動してからかなりの時間使った後に限ってだけど、
自前の画像ビューアとかIEとかで、大きな画像を表示させると、
描画されずにクライアント領域が全部真っ白(背景色)になる。
この時、小さい画像なら描画される。
(まるでシステムリソースが残っていないような感じ)
普通のメッセージループを使って、WM_PAINTでの応答で
BeginPaint
StretchDIBits
EndPaint
としているだけなんだけどね。
API関連の戻り値は全部成功を返してくるので、
アプリケーションレベルでは異常を認識できない。
1つのマシンだけで起きるので、ビデオカード(G400)の
ドライバに関連する問題かなって思って諦めてる。
>>720
ループなど必要なし。
自スレッドのウィンドウなら、
UpdateWindowを呼んだ時にWM_PAINTが送られてくる。
0723722
NGNG0724722
NGNG0725717
NGNGあ、Win98SEでも発生するんですか。
手持ちのマシンではThinkPad X24 のXPで発生するのと
客先のマシンで発生してます。(機種は不明)
自作のXPマシンでは問題ないのでやっぱりVGAのドライバに
依存するんでしょうかね。
(ただこちらでは起動後の時間には関係なく発生しますけど)
情報ありがとうございました。
客先には仕様だと言って逃げることにします。
0727デフォルトの名無しさん
NGNG(メーターの表示板みたいな形)んですが,何が原因でしょうか.
0728デフォルトの名無しさん
NGNGウィンドウからはみ出したとか・・・
0729デフォルトの名無しさん
NGNGクライアントのサイズ←→ウィンドウのサイズの差分だけ欠けてるとか。
0730デフォルトの名無しさん
NGNG0731デフォルトの名無しさん
NGNGウィンドウのサイズ変更もできない
ただ白い四角形が表示されるだけのウィンドウって作れますか?
0732デフォルトの名無しさん
NGNGもちろん。
0733デフォルトの名無しさん
NGNGVAIOシリーズにだけOEM供給されています
0734デフォルトの名無しさん
NGNGhttp://www.users.gr.jp/ml/archive/delphi/25766.asp
ここ見ると、
規約 順序 後始末
stdcall 右から左 関数
pascal 左から右 関数
cdecl 右から左 呼び出し側
と説明されてますが、
__pascalコールで呼び出す必要のあるWin32APIってありましたっけ。
一部(wsprintfなどは__cdecl)を除いて、__stdcallですよね?
windef.hを見てもPASCALは__stdcallと定義されてるし。
x86を前提とした場合は__pascalは使われないと考えて良いのでしょうか?
0735デフォルトの名無しさん
NGNG0736デフォルトの名無しさん
NGNG0737びひゃ〜ん ◆CplusNDg
NGNGstatic CWnd* PASCAL GetFocus( );
0738びひゃ〜ん ◆CplusNDg
NGNG「__pascal、__fortran、__syscall
の各呼び出し規約はサポートされなくなりました。」
と書いてある。>>734にあるようにPASCALはマクロだったのね。逝ってきます。
0739734
NGNGいや、ですから、そのPASCALの元定義は__stdcallになってます。
(windef.h参照)
0740デフォルトの名無しさん
NGNG741をよく読め。
> windef.hを見てもPASCALは__stdcallと定義されてるし。
0741734
NGNG>>738
あ、サポート外ってことでしたか。
これですっきりしました。
調べていただいた方々、ありがとうございまいた。
0745 ◆BkH732nY
NGNGサンプル等あったら教えて下さい。
0746デフォルトの名無しさん
NGNG構造体もなにもバイナリで渡すだけだと思うのだが。
0747デフォルトの名無しさん
NGNGやはりMAPIでしょうか?数行でできないでしょうか?
0748デフォルトの名無しさん
NGNGつーかそんな変なの使わずともsocketで数〜十数行だと思うが。
0749748
NGNG0750デフォルトの名無しさん
NGNG0751デフォルトの名無しさん
NGNGいや SMTP等をもってくるのが めんどくて
0752デフォルトの名無しさん
NGNGあと、数〜十数は言い過ぎ。
確かに、送信部分だけならそうなるけど、
q-printとかbase64エンコードも事実上必須だし。
0753デフォルトの名無しさん
NGNG送信だけならbase64だけでいい
あと必要なのはShift-JISからJISの処理だね
しかしbase64もShift-JIS->JISもSMTPとは関係ない
MIMEとSMTPをごっちゃにしないほうがいいよ
0754デフォルトの名無しさん
NGNG読めないのか?
0755デフォルトの名無しさん
NGNG0756デフォルトの名無しさん
NGNG送信ボタンは手で押せ。
0757デフォルトの名無しさん
NGNG敢えて言えば、バイトオーダーや型のサイズの違い(time_t が 32bit か 64bit か)
に気をつけよう、ってとこかね。
0758デフォルトの名無しさん
NGNGクライアントが終了すると、LIBのスレッドがクリーンナップを
経ずに強制終了してしまいます。
クライアント ==> DLL ==> LIB
DLL in
LIB in
クライアント in
クライアント out <<-- ここでLIBのスレッドが強制終了
LIB out
DLL out
スレッドを使っているLIBを安全にDLLから呼び出す方法はありますか?
もう一つ、クライアントでMFCを使っていると、LIBで確保しているメモリの
誤リーク検出をして、非常に鬱陶しいので、こっちもお願いします。
0759デフォルトの名無しさん
NGNG送信だけならMIME/base64自体不要だと思うが
0760デフォルトの名無しさん
NGNG待てばいいのでわ?
0761750
NGNG0762デフォルトの名無しさん
NGNG添付ファイルはど〜やんの?
0763デフォルトの名無しさん
NGNG送信前にすべてのデータは整っている
mimeも必要派:
>一番楽なのはどれですか?
こんな事を言っている奴が下準備を済ませているとは考えられない
0764デフォルトの名無しさん
NGNGSJIS垂れ流しだけはやめてほしい。
0765デフォルトの名無しさん
NGNGメールが切れるとサーバー設置した会社に苦情をつけるな、たぶん。
0766デフォルトの名無しさん
NGNGSMTPでUTF-7で送るのはどちらが
罪深い行為でしょうか?笑い、
0767758
NGNGPROCESS_DETACHの前にLIB内のスレッドが閉じられてしまうんです。
スレッドのメッセージキューにも、何の通知もないし、お手上げ状態です。
0768デフォルトの名無しさん
NGNG添付ファイルでSJIS生のテキストどころかバイナリファイルまで平気で
送られまくってるのにメール本文になるととたんに叩かれるのが
不思議でなりません。どちらもmultipartの一員なのに。
■ このスレッドは過去ログ倉庫に格納されています