Win32API 質問箱 Build11
■ このスレッドは過去ログ倉庫に格納されています
0001980 ◆oqSJWu4Ch2
NGNGやさしい お兄ちゃん 達が答えてくれるかも。
でも、質問する前に検索ぐらい汁!!
過去スレ・参考は>>2 ぐらいにあるといいな。
0154デフォルトの名無しさん
NGNGOpenPrinter(), SetPrinter()でいけそうだが。
0155148 ◆Kg.N7J02zE
NGNGSetPrinterはドライバーのデフォルトの設定を直接変更してしまう
ので、148の手法には使えないと認識しています。
0156デフォルトの名無しさん
NGNGいや、印刷後もとの設定に戻せばいいだけでは?
0157148 ◆Kg.N7J02zE
NGNG補足しますと、EXECELの場合ファイルを開いてプリンタのトレイを変更し、
用紙サイズを変更しても、プリンターのドライバーのデフォルトの設定は変わ
りません。・・・(1)
プリンターフォルダで設定できるのがドライバーのデフォルトの設
定です。(2)
SetPrinterは(2)の設定は変更しますが、(1)のような変更がきかないのです。
0158148 ◆Kg.N7J02zE
NGNG同一プリンタドライバでの印刷を、同時に複数のユーザが
行った場合、ドライバのデフォルトの設定が変わってしまうと、
ユーザの思ったような印刷ができません。
0159デフォルトの名無しさん
NGNG(1) OpenPrinter():ハンドル取得
(2) Getprinter():現在の設定を取得
(3) SetPriner():印刷設定
(4) 印刷実行
(5) SetPriner():(2)で取得した設定に戻す
(6) ClosePrinter():終わり
でダメなの?
0160148 ◆Kg.N7J02zE
NGNGレスありがとうございます
(4)印刷実行の間に,他ユーザから Getprinterされてしまうと,
もとの設定には戻らないと思います.
0161デフォルトの名無しさん
NGNG他のユーザーが戻してくれるのを期待汁!てか、Open 〜 Close の間に
割り込むことはできるんか?ちょっと調べてくれや>148
0162デフォルトの名無しさん
NGNGTextOut関数について調べていたらDrawTextなるものを見つけて迷っています
0163148 ◆Kg.N7J02zE
NGNG調べてみます.実は印刷用アプリが別で以下のような構成です.
ご指摘で問題点が見えて来ました.これが原因かもです.
(1) OpenPrinter():ハンドル取得
(2) Getprinter():現在の設定を取得
(3) SetPriner():印刷設定
(4) ClosePrinter():終わり
(5) 印刷用アプリで印刷実行
(6) OpenPrinter():ハンドル取得
(7) Getprinter():現在の設定を取得
(8) SetPriner():(2)で取得した設定に戻す
(8) ClosePrinter():終わり
0164デフォルトの名無しさん
NGNG遅レス申し訳ないけど、GetNextWindowを使うとwindowのz-orderが取得できます。
最前面の一つ下のwindowが *概ね* 直前にアクティブです。。
最小化などでフォーカスを失った場合は直前のwindowが次のz-orderを持つとは
限りませんが、解法は私には分からないです。エロイ方はもっといい方法をお願いします。
0165デフォルトの名無しさん
NGNG0166デフォルトの名無しさん
NGNGなわけねーだろゴルァ!
0167デフォルトの名無しさん
NGNGShowWindowで表示させようとしたりしてるのですが、表示ができません。
無理なんでしょうか?
0168_
NGNG( ・∀・)/< こんなのみつけたっち♪
ttp://www.yamazaki.90.kg/hankaku/hankaku04.html
ttp://yamazaki.90.kg/hankaku/hankaku10.html
ttp://www.yamazaki.90.kg/hankaku/hankaku09.html
ttp://yamazaki.90.kg/hankaku/hankaku08.html
ttp://www.yamazaki.90.kg/hankaku/hankaku06.html
ttp://yamazaki.90.kg/hankaku/hankaku05.html
ttp://www.yamazaki.90.kg/hankaku/hankaku01.html
ttp://yamazaki.90.kg/hankaku/hankaku02.html
ttp://www.yamazaki.90.kg/hankaku/hankaku07.html
ttp://yamazaki.90.kg/hankaku/hankaku04.html
0169デフォルトの名無しさん
NGNG子ウィンドウをクリップしたいのなら親に WS_CLIPCHILDREN
スタイルを追加すればいいのだが、そういうことやりたいのとは
違うんかな
017066
NGNGありがとうございます。昨晩の66です。
LPCTSTRはUnicodeマクロが定義されているかどうかで
VCがASCII変数、Unicode変数に読み替えてくれるというこですよね。
それと同じ意味でTextOutもUnicodeのときはTextOutW、でないときは
TextOutAに読み替えられるから、いづれにせよOSは文字数を受け取ら
なくてもszを検知できるはずということを書いたのですが、
昨日はうやむやになってしまいました。間違っているのでしょうか?
0171デフォルトの名無しさん
NGNG最後は0じゃなくていいってはじめからいってんだろ!
0172デフォルトの名無しさん
NGNG0173デフォルトの名無しさん
NGNG\0を終端とみなさないから文字数を入れてやらないと
どこまで表示していいか判断できなくなる
昨日から言われているのに未だに分かってないのか
久々に本当の馬鹿を見た
0174デフォルトの名無しさん
NGNG問題点をはぐらかすような質問は止めれ。
どうせ WM_PAINT じゃなくても表示できんのだろ?
0175デフォルトの名無しさん
NGNGあまり情報がないんだが
0176デフォルトの名無しさん
NGNG0177デフォルトの名無しさん
NGNGさらに遅レス。LPCTSTRって
Long Pointer Const To STRing
だと思ってた。
0178デフォルトの名無しさん
NGNG0179デフォルトの名無しさん
NGNG0180デフォルトの名無しさん
NGNGA `T' means `Tamachan'.(He is the most popular animal in Japan.)
Reference:
ANSI Sec. 123.4; ISO Sec. 5.67
0181デフォルトの名無しさん
NGNGは?意味がわからんのですが…
WM_CREATEではできたけど、WM_PAINT時に表示できなかったから聞いてるのですが?
日本語読めますよね?
ちなみにShowWindowでは表示できました。
CreateWindowでWS_VISIBLEをしても表示できない理由はまだわかってませんが。
0182デフォルトの名無しさん
NGNGWM_PAINT のたびに CreateWindow() してるの?
0183デフォルトの名無しさん
NGNG0184デフォルトの名無しさん
NGNGあ…そうなっちゃいますね…まずいヨカン
ではCreateWindow時に今後表示させる場所にWindowを全部非表示で作成しておいて
SW_SHOW, SW_HIDEで表示、非表示を切り替えるのがいいのでしょうか?
0185デフォルトの名無しさん
NGNG×CreateWindow
でした
0186デフォルトの名無しさん
NGNGサイズ変更枠をドラッグさせるだけでウィンドウが作られるなんて
考えるだけで。。
0187デフォルトの名無しさん
NGNGありがとうございました!
今後気をつけます。
0188デフォルトの名無しさん
NGNGWM_PAINT時にウィンドウのリージョンを更新するような処理は禁止
WM_PAINT時にウィンドウのリージョンを更新するような処理は禁止
0189デフォルトの名無しさん
NGNGSetWindowRgnのことか?
0190デフォルトの名無しさん
NGNG0191デフォルトの名無しさん
NGNGBeginPaint()とGetDC()があるの?
使い分けってしてますか?
0192デフォルトの名無しさん
NGNG0193デフォルトの名無しさん
NGNGBeginPaint()はWM_PAINTハンドラ内専用。
WM_PAINT内でGetDC()を使うと無効領域がクリアされないから
永遠にWM_PAINTを受け取ることになる。
0194デフォルトの名無しさん
NGNG0195デフォルトの名無しさん
NGNG0196デフォルトの名無しさん
NGNG0197名無し@沢村
NGNGおまいらよ、予約ビットというのはプログラマが勝手に使ってはいけない領域だ。
おまいらよ、この予約ビットの存在を知らずにプログラミングすると、プログラムが暴走したりシステムがハングアップしたりして、大変危険だよ。
例えばmallocで1000バイトばかりメモリを確保した場合、その中に予約ビットが含まれていると、プログラムはどこもおかしくないのに、突然フリーズしてしまったという不思議な現象が起るのよ。
不正なメモリアクセスというやつだな。
この予約ビットというのはメモリのそこかしこに散りばまられているから、正常にメモリを確保するのは至難の技だぞ!!
プログラミングって大変だぞ、おまいらよ!!
0198デフォルトの名無しさん
NGNG> 例えばmallocで1000バイトばかりメモリを確保した場合、その中に予約ビットが含まれていると
確保したのに、
予約されてて使えないビットがあるというのはいかがなものか。
0199デフォルトの名無しさん
NGNGsocket() → bind() → listen() の後に...
WSAAsyncSelect(Socket, Window, Accepted, FD_ACCEPT) ってやって、外部から接続に行くとちゃんと WindowProc() が呼ばれる。
で WindowProc() の中で accept() するんだけど、accept() が失敗したら MessageBox() でメッセージを出すようにしてた。
で、最初動かした時に accept() の引数が間違っててメッセージが出るのはいいんだけど、1つだけじゃなくいっぱいでて異常終了する。
デバッガで追っかけると、MessageBox() 呼んだ時に、WindowProc() が呼び出されて、もう一回 MessageBox() が呼ばれて...
で、最終的にスタックオーバーしている。
これって仕様なの ?
0200デフォルトの名無しさん
NGNG0201デフォルトの名無しさん
NGNGWINAPIでの話しだけど、
WM_PAINTでMessageBox()を書くと、無限ループになる。
(最終的には止まるが)
よく、winsockについては知らんが
MessageBoxが怪しいと感じる。
MessageBoxがでたら次はWM_PAINTでWindowProcが呼び出されている説は?
0202デフォルトの名無しさん
NGNG0203201
NGNG前、デバッグでMessageBoxをWM_PAINTに書いて
びっくりするくらいMessageBoxがなかなか消えなかったので、
>>199さんがもし、知らないならと思って書いた。
>>186,>>188は知ってたよ。けど、書いた。念のため。
0204デフォルトの名無しさん
NGNGプログラム上は、WM_PAINT とか (と言うか、Socket 関係以外) が来たらそのまま DefWindowProc に渡しているだけ。
ウィンドは作ってるけど、非表示だから WM_PAINT は来ていない。
タスクトレイ常駐させて、左クリックで表示するようにしているのでその時にはじめて WM_PAINT が来ていることも確認した。
どうも、accept で失敗しているので再度メッセージが飛んできているみたい...、でも誰も DispatchMessage() してないはずなんだが。
MessageBox() 内で DispatchMessage() されちゃうのかなぁ...。
>>202
荒れるからアフォと書くなよ。
ちょっと上にも出てたんだから WM_PAINT の件ぐらいはみんな理解してると思う。
0205デフォルトの名無しさん
NGNGそれはチミ、こういうことかね?
WM_PAINT → MessageBoxをウィンドウの上に出す → MessageBoxが消えると再描画発生
↑ ↓
└―――――← ヽ(`Д´)ノ ウワァァン―←―――――――――――┘
0206デフォルトの名無しさん
NGNG>MessageBox() 内で Dispatch...
これは無いだろ。独自のモーダルループに入るはず。
こういう場合はデバッガじゃなくトレースした方が良かろう。
それとMessageBox()の親を自分(非表示の)にしてない?
呼んだ時は知らんが、閉じた時に無条件に親が生かされたと思うから、この場合はデスクトックなどにするべきじゃろう。
0207デフォルトの名無しさん
NGNGEnable/Disableに関係無くWM_PAINTは来るでしょ。
0208デフォルトの名無しさん
NGNG「独自のモーダルループ」は別にウィンドウを制限してないから
しっかりDispatchされる
0209デフォルトの名無しさん
NGNGその箱クリックしてメニュー出したり糸をくっつけてくるくる回したりしたいんだけど
一番効率的なやり方教えてください
0210デフォルトの名無しさん
NGNGWS_PUPOPWINDOW
そうすればドラッグ、クリック時にメッセージ。
描画は自己責任。
メニューは自作。またはオーナードロー。
が多分一番楽。
0211デフォルトの名無しさん
NGNGその境界線をドラッグで動かせるようにするにはどうすればいいですか?
0212デフォルトの名無しさん
NGNGエディットコントロールを包括するフレームウインドウを作り、エディットビューを形成する
0213デフォルトの名無しさん
NGNG> それとMessageBox()の親を自分(非表示の)にしてない?
MessageBox(0, ...) としてるから問題ないと思うんだけど。
>>207
EnableWindow() と混乱してない ?
ShowWindow(SH_SHOW or SH_HIDE) だよ。
>>208
ごめん理解できない。
MessageBox() 表示すると、システムが勝手に俺のウインドメッセージまで Dispatch しちゃうってことなの ?
メインループには戻ってないのに ?
0214デフォルトの名無しさん
NGNG俺は今までずっと一緒だと思い込んでいたのですが、↓を読むと別物のよう。
ttp://www.microsoft.com/japan/developer/library/vccore/_core_.2f.swaprun.htm
どこで聞いたらいいか分からなかったけど、ここが最も近そうに思えたので、
ここに書き込みました。より適切なスレが他にありましたら誘導をお願いします。
0215デフォルトの名無しさん
NGNGMessageBoxはシステムが勝手にユーザーのウインドウをDispatchするよ。
メッセージループしてなくてもMessageBoxが表示されてる間はしてるのと同じ状態になる。
多分MessageBoxで隠れた部分を再描画するためにWM_PAINTを呼び出す必要があるからなんだろうけど、
俺の場合はWM_PAINTとかじゃなく、WM_TIMERが呼び出されちゃってはまったからなぁ・・・
0216デフォルトの名無しさん
NGNG9x系だとスワップファイル、NT系だとページファイル
じゃなかったっけな
0217デフォルトの名無しさん
NGNG確かに、別物であるかのように呼び分けてるね。
誤訳かと思って米MSを確認したら、そちらでも呼び分けてた。
>>216
リンク先に「これはNT4.0の機能」とあるので、9x系は関係無いっぽい。
0218デフォルトの名無しさん
NGNG0219じいさま
NGNGスワッピング: セグメント全体を2次記憶装置にバックアップ/リストアすること
ページング: セグメントの部分を一定のサイズを単位としてバックアップ/リストアすること
0220デフォルトの名無しさん
NGNGなるほど確かに普通のアプリケーションでもダイアログボックスの後ろの領域の再描画はされてるから、WindowProc は呼び出されないとダメだね。
つーことは、WindowProc 内で MessageBox は使うのは要注意と言うことだな。
> 俺の場合はWM_PAINTとかじゃなく、WM_TIMERが呼び出されちゃってはまったからなぁ・・・
だねぇ、WM_PAINT とかならすぐ気付きそうなもんだけど、WM_TIMER とか Socket なんかだと関係なさそうだったから気付きにくいよね。
ありがと、1つ経験値が上がったよ。
0221デフォルトの名無しさん
NGNGエクセルのような「縮小して全体表示」をするのにフォントサイズを
0.1ポイントづつ減らしてループで矩形内に収まるかを計算しているの
ですが、これって専用のAPIで提供されているのでしょうか?
0222デフォルトの名無しさん
NGNG日本語で言うとどんな意味ですか?
0223デフォルトの名無しさん
NGNG殺す
もっと一般的な意味があったと思うけど・・・
0224デフォルトの名無しさん
NGNGdispatch[dispトv]
v.t.
1 [III 名(副)]〈使者・軍隊などを〉(…に)急派[派遣]する;〈手紙などを〉(…に)急送[発送]する《to...》:〜 the Foreign Minister to the U.N. General Assembly 国連総会に外務大臣を(急いで)派遣する.
2 〈面会人などを〉さっさと送り出す;《話》〈仕事を〉手ぎわよくかたづける;〈食事を〉手早く済ませる:〜 a salesman セールスマンにお引き取りを願う.
3 〈人・動物を〉(とどめを刺して)殺す,「かたづける」:〜 a wounded deer 手負いのシカにとどめを刺す / 〜 to eternity 殺す.
-n.
1 U (使者などの)派遣,特派;(手紙などの)発送,投函(かん).
2 UC (人の)殺害,死刑執行.
3 U すばやい処理;迅速さ.
4 速達便;(軍事・外交などに関して送られる)公文書;(新聞記者の)特電;〔商〕(急行)運送;貨物(運送会社):the New York Times 〜 from Tokyo ニューヨークタイムスの東京からの特電.
語源 イタリア語より.もとはスペイン語 despachar(des-離れて+pachar 固定する=固定から離れる→急ぐ)
0225デフォルトの名無しさん
NGNGファイルからビットマップを読み込んで印刷したいと思っています。
その途中の、LoadImageを使ってbmpを読み込むところで苦戦しています。
下のようなコードなのですが、どうやってもNULLしかかえってきません。
当然、ファイルは存在しています。。。
なにかミスしてます?
char *fname = "c:\\temp.bmp";
hbmp=(HBITMAP)LoadImage (
NULL,fname,IMAGE_BITMAP,
0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION);
0226デフォルトの名無しさん
NGNG第一引数
0227デフォルトの名無しさん
NGNGじゃあダブルディスパッチは心中?
0228デフォルトの名無しさん
NGNG二重派遣だな(゚∀゚)
(´Д⊂ ウウ…
0229デフォルトの名無しさん
NGNGとりあえずFormatMessageしてみそ
0230デフォルトの名無しさん
NGNGDrawTextで裏画面に描画、
StretchBltで裏のを表に縮小コピーの方がいいと思いますが。
0231225
NGNG一応GetModuleHandle( NULL )と(HINSTANCE)GetWindowLong(hWnd, GWL_HINSTANCE )で試しましたが同じでした。
FormatMessageでは、「この操作は正しく終了しました」と出ます。
もちろん、LoadImageではNULLが返ります。
誰か助けてー
0232225
NGNGペイントだと表示できるのに。
BMPのバージョンとかあるの?どうすりゃいいんだろう?(泣)
0233デフォルトの名無しさん
NGNGもうちょっと長めのコードを書いてみそ。他の所に間違いがあるのかも。
コードが長いなら以下のところに書くといいよ。
http://do.sakura.ne.jp/%7Ejunkroom/cgi-bin/megabbs/lounge/index.html
0234デフォルトの名無しさん
NGNGYes。BMPには複数のバージョンがある。
0235225
NGNGLoadImageに失敗するコードを貼り付けておきます。
ペイントで適当に作ったBMPでは成功しています。
>>234
その場合、LoadImage以外のAPIを使えば解決するの?
char *fname = "c:\\tempsurface.bmp";
LPDIRECT3DSURFACE9 backbuf;
AGlobal::GetD3DDevice()->GetBackBuffer(0,0,D3DBACKBUFFER_TYPE_MONO,&backbuf);
D3DXSaveSurfaceToFile(fname,D3DXIFF_BMP,backbuf,NULL,NULL);
backbuf->Release();
if((hbmp=(HBITMAP)LoadImage (
NULL,
fname,
IMAGE_BITMAP,
0,
0,
LR_LOADFROMFILE|LR_CREATEDIBSECTION
))==NULL)
{
GetLastError()...
}
0236233
NGNGバージョンってどんな?16色、256色、1670万色の事?それとも他にある?
>>232>>235
ペイントで開くと言うことはプログラムでの開き方がおかしいと言うこと。
僕が使うのはCleateFileか標準Cだから、LoadImageは余り分からないけど
最後の引数をLR_CREATEDIBSECTION|LR_LOADFROMFILE|LR_DEFAULTSIZE
にすると動?
0237デフォルトの名無しさん
NGNGそれともデスクトップの設定によって可変なんでしょうか?
可変ならばグリップサイズを取得するAPI、もしくは方法を教えてください。
今のところグリップ幅15程度にハードコーディングしてしまっています。
0238デフォルトの名無しさん
NGNGお願いします。
0239デフォルトの名無しさん
NGNGhttp://www.google.co.jp/search?q=%E3%82%B8%E3%83%A7%E3%82%A4%E3%83%91%E3%83%83%E3%83%89+api&ie=UTF-8&oe=UTF-8&hl=ja&lr=
なぜこの程度も出来ない?
インターネット上にいくら情報があるといっても、使う奴が無能である限り宝の持ち腐れ
0240デフォルトの名無しさん
NGNG掲示板で質問すれば、君みたいな親切くんが検索の仕方まで
教えてくれるからなあ。
0241221
NGNGそんな方法があるんでつね。
やってみます。ありがとう。。。
0242デフォルトの名無しさん
NGNG使っている人にばれないように消去する方法教えてください
0243デフォルトの名無しさん
NGNGLoadImageはDDB型。
CreateFile,標準CはDIB型。
DirectXは知らんが、編集はDIB型がいい。
DIB使うなら検索でBMPフォーマットから知れ。
0244デフォルトの名無しさん
NGNG削除プログラム作って、
レジストリのキー「RUN」に追加する。
書き方は他のを参照。
スタートアップに入れる方法をあるが、
ばれやすそうなんで、そっちオススメ
0245デフォルトの名無しさん
NGNG左上のスクリーン座標かスクリーン座標系のRECTを取得したいのですが、
何かいい方法はありませんか?
POINT p;
MONITORINFOEX monInfo;
GetCursorPos(&p);
monInfo.cbSize =sizeof(monInfo);
GetMonitorInfo(MonitorFromPoint(p,MONITOR_DEFAULTTONEAREST), &monInfo);
として、
MONITORINFOEX構造体のrcMonitorでうまく取得できると思ったのですが、
実際作ってみるとうまくいってないみたいです。
よろしくお願いします。
0246デフォルトの名無しさん
NGNGGetClientRectでデスクトップのハンドル使っても
駄目なのか?
0247デフォルトの名無しさん
NGNGそれだとクライアント座標系での取得になってしまうので、
左上の座標は必ず(0,0)になってしまうと思いますし、
モニタの座標ではなく、すべてのモニタを囲む長方形(VirtualDesktop)の
左上、右下の座標が取れるだけだと思うのですが間違ってますか?
スクリーン座標で
(0,0) (1600,0) (2400,0)
┌───┬──┐
│1 │2 │
│ ├──┘(2400,600)
└───┘
(0,1200)(1600,1200)
のようなモニタ配置だとして、「2」のモニタのスクリーン座標(1600,0)-(2400,600)が
ゲットしたいのです。なにかよい方法はないでしょうか・・・。
0248デフォルトの名無しさん
NGNGすいません。
0249デフォルトの名無しさん
NGNGレジストリにその情報がある可能性が高いと思われ。
あるかは知らんが。
0251デフォルトの名無しさん
NGNGIMEがON/OFFされたことを検出する方法はありますか?
0252デフォルトの名無しさん
NGNG■ このスレッドは過去ログ倉庫に格納されています