■過去ログ置き場に戻る■ 1- 次250 最新50


[memo] "9999999999_00.html#R20" という感じで、URLの最後に "#RレスNo" を追加すると幸せになれます。

Win32API 質問箱 Build11
1 名前:980 ◆oqSJWu4Ch2 :03/05/11 20:15
スレ立てるまでもない、Win32APIについての質問はこちらへどうぞ。
やさしい お兄ちゃん 達が答えてくれるかも。
でも、質問する前に検索ぐらい汁!!
過去スレ・参考は>>2 ぐらいにあるといいな。

2 名前:980 ◆oqSJWu4Ch2 :03/05/11 20:16
● MSDN Online
http://www.microsoft.com/japan/msdn/default.asp
● 猫でもわかるプログラミング
http://www.kumei.ne.jp/c_lang/index.html

● 過去スレ
Win32API 質問箱 Build10
http://pc2.2ch.net/test/read.cgi/tech/1047819779/
Win32API 質問箱 Build9
http://pc2.2ch.net/test/read.cgi/tech/1044929160/
Win32API 質問箱 Build8
http://pc2.2ch.net/test/read.cgi/tech/1040964626/
Win32API 質問箱 Build7
http://pc3.2ch.net/test/read.cgi/tech/1036654893/
Win32API 質問箱 Build6
http://pc3.2ch.net/test/read.cgi/tech/1032548635/
Win32API 質問箱 Build5
http://pc3.2ch.net/test/read.cgi/tech/1028580373/
Win32API 質問箱 Build4
http://pc3.2ch.net/test/read.cgi/tech/1023361418/
Win32API 質問箱 Build3
http://pc.2ch.net/tech/kako/1006/10067/1006783012.html
Win32API【2】
http://pc.2ch.net/tech/kako/1006/10067/1006783012.html
Win32API 質問箱
http://pc.2ch.net/tech/kako/991/991576947.html


3 名前:デフォルトの名無しさん :03/05/11 20:19
乙カレー

4 名前:デフォルトの名無しさん :03/05/11 20:19


5 名前:デフォルトの名無しさん :03/05/11 20:40

  ヽ,,.'"                      ,           ゙、 【お洒落】女の子に大人気の東京急行【お洒落】
:::::::;:::',i゙i、,_   ,.'  ,     ,   .,  ,  .:,.' .:    ',..             、 ゙、 上品・美麗な田園都市生活
. :/::::::}r'、 `゙ ,'  .,'  .: ,' ,,、-/‐,ッ、:::/..:;:  .. l l;:..;.         ',. ',
./:: :::/::. ヽ i  l .::l:,、r'゙ ::,.'i../,'.:::,'i.:::;,'. .:,':''7i'it、l!:. ,       i,. !
'.::::::/:l::::::..  l.   l. ::;r':i l .:::,' l  l:::,' !::,',' .::;': /,'/ !:l'l;::. i  ,' l:.  i  !!,'
::::::/::!:',::::::::::l.   ::',/i l:|. l::;;!、ェ、,,l:i l::,'.!:..::,,'::/ / l:i l:゙:.,' /:. l::  | j.l'
::::,'!::::'::゙、:::::::!   ::::i、l. 'l,,;ン',,、ぃ,゙ヾ l:l l::::/,ソ.r''"ヾl, l:::/ン゙l:::: l::: i /l'
:::j ',:::::::::::::::::!. ! :::::l、゙,,ilr' ,il゙ _,,!i.   'l l::/ '  ,r゙゙'i;.ヾlン''/: l:::: ,'l:: ,'j ./ l
::i. ゙、::::::::r''''!. ! :::::!'''゙li. l;:゙'illlr;::!   ゙    i:!、r:'l. ;シ./::: .!:,r!,':;/,',.'l j
:l   ゙、:::i゙''、゙!. ! ::::|.  ゙. 'r,ン::::ソ       l;: ''゙:;' ' ,':::: .r' /ツ::ジ j j
:|.    ヾ゙、 '、i. ! ::::!   ''‐゙゙'='゙-       . ゞ-'',、 i:::::: j '"!:i::  j .,'
:l     `゙' 、', i :;::l          r‐‐‐-,.  ̄`  .j:::: ,'  l:,i:  ,' /
';!       ',.i. ';:!,_          |   /      , ':::: ,'  ,ソ!: ,'./ おかあさま
,ヽ       ゙、, ';ヘ!ヽ、       ',. ,.'    ,、‐l:l::::: /  /.,' ,'/ ヴァイオリンのお稽古に逝って参ります
:!          ',.',',l,_  ゙'ヽ 、,,_.  ゙'" ,、 ‐'"  ,',i::: /   / ,.シ
':',         '、',゙、゙''ー- 、、、、゙゙i,゙''''"     /'i::/     /,.'
ヾ、     ,,、 - '゙::ヾ,ヽ:...:...:...:...:...:{          ,'/    ,ン゙
   ,、- '"゙~ヽ、:...:...:..::゙、:...:...:...:...:...:.lヽ、 _     /
. 、r''ヽ、     ヽ:...:...:...:...:...:...:...:...:...:...:.゙j ゙''‐ 、 '


6 名前:デフォルトの名無しさん :03/05/11 22:34
すみません、質問させてください。
AプロセスとBプロセスで同期を取るために、
AプロセスがBプロセスをwaitさせたいとします。
その場合、Aプロセス内でWin32APIのSuspendThread関数を用いて、
Bプロセスをwaitさせる例が、 
「Advanced Windows(Jeffrey Richter著・MicrosoftPress ASCII」
に記述されていました。
 この例の中ですでに起動されているスレッドのハンドルを取得するため、
OpenThread関数を用いたコーディングを行ってるのですが、
このOpenTread関数はWindows2000からのサポートのため、
WindowsNT4.0には対応していません。
 そこでWindowsNT上で、すでに起動されているプロセスをwaitさせるためには
どのような方法またはAPIが存在するでしょうか。
 ぜひお願いしますm(_ _)m

7 名前:デフォルトの名無しさん :03/05/11 22:38
WaitForSingleObject
その他

8 名前:デフォルトの名無しさん :03/05/11 22:51
>>6
まあ、不注意なんだろうけど...、マルチかよ !!

9 名前:デフォルトの名無しさん :03/05/11 22:52
OpenMutexで名前指定、とか。

10 名前:デフォルトの名無しさん :03/05/12 02:15
プロセスAからプロセスBにメモリーを確保してデータを読み書きするのに
WriteProcessMemory、ReadProcessMemoryを使うのは、うまくいくのですが、
下のプログラムで、確保したpBaseアドレスはプロセスBのリニアアドレスに
なります。
そこで、FS:[EAX]、GS:[EAX]のように、セレクタ修飾でプロセスAからアク
セスできるように、プロセスAのセレクタのアドレスに変換するAPIや、
その方法はあるのでしょうか。

HWND Wnd = FindWindowEx(NULL, 0, NULL, "XXX");
GetWindowThreadProcessId(Wnd, &dwPID);
HANDLE hProcess = OpenProcess(PROCESS_VM_OPERATION
| PROCESS_VM_READ
| PROCESS_VM_WRITE,
FALSE, dwPID);
DWORD pBase = (DWORD)VirtualAllocEx(hProcess, NULL, 10240,
MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE);


11 名前:デフォルトの名無しさん :03/05/12 06:49
あるウィンドウの状態(最大化、標準、最小化)を調べるAPIを訓えて( ゚д゚)ホスィ
ウィンドウハンドルは既知です。

12 名前:デフォルトの名無しさん :03/05/12 07:10
GetWindowPlacement

13 名前:デフォルトの名無しさん :03/05/12 12:18
>>6
NtOpenThread
非公開だが今後NT4のサービスパックが新たに出ることは
ないだろうから大丈夫だろう多分
>>10
「プロセスAのセレクタ」なんてものは存在しない
(IA64やAlphaやPPCやMIPSではどうなってると思ってるんだ?)
仮想メモリについてちゃんと勉強しろ

14 名前:デフォルトの名無しさん :03/05/12 12:41
>>12
( ゚д゚)アリガトウ

15 名前:デフォルトの名無しさん :03/05/12 21:07
>>10
メモリの共有が目的なら、
明示的に共有メモリを使ったほうがいいんじゃない?

それともデバッガ作ってるの?

16 名前:デフォルトの名無しさん :03/05/12 23:13
>>15
ReadProcessMemoryとWriteProcessMemory使うのが
マンドクセイから直接アクセスする裏技はないのかという
質問に見えた。

17 名前:デフォルトの名無しさん :03/05/13 01:37
MSDN Onlineって見辛いなー


18 名前:デフォルトの名無しさん :03/05/13 04:02
Microsoft Plans Windows API Cleanup
ttp://www.internetweek.com/breakingNews/showArticle.jhtml?articleID=9400498
>"Win32 has like 76,000 APIs, and they're taking it down to 8,000 with Longhorn technology,"
> said one source familiar with the plans.

あぼーん

19 名前:デフォルトの名無しさん :03/05/13 06:06
>>18
乱立関数をあぼーんしたいってのはわかるが
アップグレード品の売れ足くらい考えてやるだろ

20 名前:デフォルトの名無しさん :03/05/13 06:45
>>18
互換性があればどうでもいいわな。
(互換性なきゃLonghorn死滅だが。)

21 名前:デフォルトの名無しさん :03/05/13 10:36
互換性なくすんだったらWindowsの名前捨てろよな

22 名前:デフォルトの名無しさん :03/05/13 11:06
Win3.1との互換性について問い詰めたい。小一時間問い詰めたい。・・・・・・・・21を。

23 名前:デフォルトの名無しさん :03/05/13 12:38
マウスフックしてる間はマウスカーソルを独自のものに変更したいのですが、
どうすれば良いのでしょうか?

24 名前:デフォルトの名無しさん :03/05/13 12:52
>>22
一応3.1アプリは動くのでは?

25 名前:デフォルトの名無しさん :03/05/13 18:06
質問です….
配列で持っているYUV形式のカラー画像データをビットマップにしてウインドウに
表示するには,どうすればいいんでしょうか?
とりあえずRGBに変換して(これはOKです),その後なんですが.
(YUVのまま使えればその方がいいですけど)

検索してみても,ビットマップファイルをウインドウに表示するは見つかった
のですが,メモリ上のRGBデータを表示するのは見つけられませんですた・・・.

26 名前:デフォルトの名無しさん :03/05/13 18:13
SetPixel

27 名前:デフォルトの名無しさん :03/05/13 18:32
DIBを作って自分で変換するか、SetPixelで1ピクセルずつ描画だな。

28 名前:デフォルトの名無しさん :03/05/13 18:56
前者が普通だろな

29 名前:デフォルトの名無しさん :03/05/13 21:04
3.1のも一応動くことになってるぞ。
やったことないので分からんが。

30 名前:デフォルトの名無しさん :03/05/13 21:25
lstrcpy と StrCpy を一本化するとか、〜Ex系に統一するとか、そういうことでないの?

31 名前:デフォルトの名無しさん :03/05/13 21:37
複数のスレッドから、同じEnumWindowsを呼び出すとやばいですか?

32 名前:デフォルトの名無しさん :03/05/13 21:54
ぜんぜん

33 名前:デフォルトの名無しさん :03/05/13 22:11
MSには、2005年といわず、とっととロングホーン出してもらいたい。
で、瞬くうちに普及して欲しい。
そうなれば、WM_PAINT や Invalidate* + UpdateWindow のない
健全な世界になることだろう。




34 名前:デフォルトの名無しさん :03/05/13 22:27
>>33
どういうのが健全なの?
よくわからん。

35 名前:デフォルトの名無しさん :03/05/13 22:48
>>34
再描画が楽になったらいいなと思ってるんじゃないか?

ロングホーンがそうなるなんて聞いたことないが
DirectX9使うことを勘違いしてるのか

36 名前:デフォルトの名無しさん :03/05/13 23:22
>>35
要は1枚1枚単独のWindowを別のメモリ空間上に描画して行って
重ね合わせ等々はOSがやるってことでしょ?

互換性上、WM_PAINT(GDI)がなくなるとは思えないが
Windowの影になったりして再描画が必要になることは
実質なくなるんじゃない?


37 名前:デフォルトの名無しさん :03/05/13 23:50
どっちにしろ、WM_SIZEで再描画しないと、いけない訳だが…

38 名前:デフォルトの名無しさん :03/05/14 00:42
ものすごい勢いで再描画されるのかな。
「俺のマシンは デスクトップに電卓ソフトを1つ開いた状態で xxfpsでるよ!」
とか、そういう会話が世間で繰り広げられる・・・。


39 名前:デフォルトの名無しさん :03/05/14 00:58
Mac OS Xみたいになるのカー

40 名前:デフォルトの名無しさん :03/05/14 05:35
>>30
どのみち動かなくなるアプリ多発
互換モードまで付けてるメーカーの所業とも思えん

41 名前:デフォルトの名無しさん :03/05/14 08:25
8年前のバイナリがそのままが動いてるのって、Windowsぐらいじゃないか?

42 名前:デフォルトの名無しさん :03/05/14 08:49
68kのコードって動かないのん? @MacOSX

43 名前:デフォルトの名無しさん :03/05/14 13:03
コマンドライン引数を分割する関数って公開されていませんか?

44 名前:デフォルトの名無しさん :03/05/14 13:07
void cmdlinesprit(LPSTR CmdLin){
  int i=0, p=0, inflag=0;
#ifdef WIN32
  argc=0;
#else
  argc=1;
#endif
  for(;;){
    if (CmdLin[i]=='\0'){
      argv[argc]=(char*)malloc(i-p+1);
      if (argv[argc]==NULL) break;
      qu_strncpy(argv[argc],&CmdLin[p],i-p);
      break;
    }
    if (CmdLin[i]=='"' && (i==0 ||
      (CmdLin[i-1]!='\\' || _fnthctype(CmdLin, i-1)==CT_KJ2))) inflag=!inflag;
    if (inflag==0 && (CmdLin[i]=='/' || (CmdLin[i]==' ' && (argc==0 || CmdLin[p]=='/')))){
      argv[argc]=(char*)malloc(i-p+1);
      if (argv[argc]==NULL) break;
      qu_strncpy(argv[argc],&CmdLin[p],i-p);
      argc++;if (argc>=ARGCMAX-1) break;
      do{
        p=i;i++;
      }while (CmdLin[p]==' ');
    }else i++;
  }
  argc++;
}


45 名前:デフォルトの名無しさん :03/05/14 13:13
>>44
なんじゃこりゃ

46 名前:デフォルトの名無しさん :03/05/14 15:01
http://pc.watch.impress.co.jp/docs/2003/0514/mobile201.htm

>もちろんLonghornでも、レガシーのWin32 APIを用いたアプリケーションを動かす
>必要があるが、古いAPIで描画するアプリケーションは内部的に96dpiで処理。それ
>を任意のサイズに3Dグラフィックチップで拡大表示することにより対応する

(´_ゝ`) ふ〜ん

47 名前:デフォルトの名無しさん :03/05/14 15:45
HFONT hFont, hFontOld;
//...
hFontOld = SelectObject(hdc, hFont);
とやると型変換ができませんみたいなエラーになってしまいます。
もし解決法がわかる方がいらっしゃいましたらアドバイスお願いします。


48 名前:デフォルトの名無しさん :03/05/14 16:03
(HFONT)SelectObject(hdc, hFont);

49 名前:デフォルトの名無しさん :03/05/14 16:26
くだすれDelphi(超初心者向け)
http://pc2.2ch.net/test/read.cgi/tech/1051882835/
で質問したところ、

このスレで質問してみるといいということなので質問します。
http://pc2.2ch.net/test/read.cgi/tech/1051882835/484
>484 名前:デフォルトの名無しさん [] 投稿日:03/05/14 14:42
>他のアプリを操作するツールバーみたいなソフト作りたいんですが、
>直前にアクティブだったウィンドウを取得する方法教えてください。

50 名前:デフォルトの名無しさん :03/05/14 16:43
>>48
ありがとうございました。
SelectObject(hdc, (HFONT)hFont)とやっていた俺はオオヴァカなわけで…
色々調べていたところ、HFONT変数はひとつで
SelectObject(hdc, GetStockObject(SYS_FONT))ってのがあったのですが、
上記のhFont, hFontOldを使う方とどっちがいいのでしょうか?

51 名前:デフォルトの名無しさん :03/05/14 17:50
>>50
どっちがいいっちゅーか、hFontOld が何のためにあるかを理解したほうがよいと思われ。

52 名前:デフォルトの名無しさん :03/05/14 18:03
HFontOldは最後にデフォルトに戻すため とは違うのですか?
GetStockObjectでもデフォルトに戻せるのかと思ってたのですが…

53 名前:デフォルトの名無しさん :03/05/14 21:56
>>44
まだまだ修行が足りんぞ

↓こんなのでも見て勉強しる
ttp://www.ioccc.org/

54 名前:デフォルトの名無しさん :03/05/14 22:03
>>52
SelectObject(hdc, hFont);
//描画...
SelectObject(hdc, GetStockObject(SYS_FONT));
DeleteObject(hFont);

こういうことか。どっちの方がいいんだろうね(w

55 名前:デフォルトの名無しさん :03/05/14 23:25
HFONT hFont, hFontOld;

// -- hFont取得 --

hFontOld = (HFONT )SelectObject(hdc, (HGDIOBJ)hFont);

// -- 描画処理 --

SelectObject(hdc, (HGDIOBJ)hFontOld);

hdcが必ず以前にGetStockObject(SYS_FONT)を持っていたとも
限らない。ついでに言うと、漏れの環境ではキャストしなくても
エラーでないよ?エラーレベルが高いんでないかい?

56 名前:デフォルトの名無しさん :03/05/15 07:34
エラーレベルじゃなくて、STRICTでしょ。
っていうか、STRICTを指定しても(HGDIOBJ)はいらんでしょ。

57 名前:デフォルトの名無しさん :03/05/15 12:36
猫プロHP27章でCreateFont関数を簡単にするためSetMyFont関数を作成してますが、
その引数にHDCを含めているのはなぜでしょうか?
HDCなしでも一応エラーがでませんでしたが、何かあるのかと思い質問させてもらいました。

58 名前:デフォルトの名無しさん :03/05/15 12:38
             ∩
        ∧_∧   | |   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
       (  ´Д`)//  < 先生! 今年は犯珍優勝できそうでつか?
      /       /    |
     / /|    /      \  去年の今頃も調子良かったのですが。 ( ´,_ゝ`)プッ
  __| | .|    |         \
  \   ̄ ̄ ̄ ̄ ̄ ̄ ̄\     \_____________
  ||\             \
  ||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄
  ||  || ̄ ̄ ̄ ̄ ̄ ̄ ̄||
     .||              ||


59 名前:(;´Д`) :03/05/15 12:42
>>58
満身創痍の虚塵ファン、ミジメダネ

60 名前:デフォルトの名無しさん :03/05/15 13:25
逆から読んだらジンキョ(腎虚)ファンだしね
もうグダグダ

61 名前:デフォルトの名無しさん :03/05/15 13:59
>>57
なんだろう?
次章ではさらに引数減ってるね。

62 名前:デフォルトの名無しさん :03/05/15 14:43
>>57
>>61
漏れが推測するに、最初は
void DrawMyText(HDC hdc, int x, int y, LPSTR str, LPCTSTR face)
こんな感じだったのでは無いだろうか?
それを途中で、テキストの大きさも…角度も…色も…とか考えて
フォント作成用のSetMyFontに変えた。しかし、HDCを消し忘れた。

まぁ、単なる揚げ足取りだね。無くても何も問題無いよ。

63 名前:名無し@沢村 :03/05/15 16:56
>>57
ヌヒよ、フォントのポイント数をフォントの高さに変換するために用意していたと見た。

HFONT CreateMyFont(HDC hDC, int nPoint, LPCTSTR lpszFace);

64 名前:デフォルトの名無しさん :03/05/15 19:19
ウインドウをEnumWindowsで列挙して、ボタンをGetDlgItemで取得して
SendMessageでBM_CLICKを送ってボタンを押しているんだけど
時々アクセスバイオレーションになったり、何も言わず落ちたりする。
なにか原因考えられますか?

65 名前:デフォルトの名無しさん :03/05/15 20:03
>64
まずは IsWindow() かな?

66 名前:デフォルトの名無しさん :03/05/15 20:22
Win32APIの文字列を渡す関数でよく、文字列といっしょに
文字数を渡しますがこれって何の意味があるのでしょうか?

67 名前:デフォルトの名無しさん :03/05/15 20:38
バッファオーバーフロー対策


と思ってみるテスト

68 名前:66 :03/05/15 20:43
>>67
ありがとうございます。
os側はszで待つのでただのロスだとおもうのですが...

69 名前:デフォルトの名無しさん :03/05/15 20:49
部分文字列を指定し易いとか

70 名前:デフォルトの名無しさん :03/05/15 20:56
void hoge(char* szText)
{
  lstrcpy(szText, "1234567890");
}
:
:
char a[5];
hoge(a);

こんなふうだと困るから。

71 名前:デフォルトの名無しさん :03/05/15 20:57
Win32 APIが本当の文字列を使うようにすればよかったのにね。
おかげでバグてんこもり。

72 名前:デフォルトの名無しさん :03/05/15 20:58
>>66
少なく指定すれば任意に削ることが出来る
その程度のことすら思いつかないほど思考が堅いのなら
プログラムを作るのは諦めた方がいい

73 名前:デフォルトの名無しさん :03/05/15 21:00
TextOut みたいのじゃなくて LoadString みたいなののことを言ってるのかな。


74 名前:66 :03/05/15 21:02
>>73
いやまさにTextOut、DrawTextとかそんなのです。。。

75 名前:デフォルトの名無しさん :03/05/15 21:03
>>72
あんた。馬鹿。

76 名前:デフォルトの名無しさん :03/05/15 21:05
>>74
だから>>70が答え。

77 名前:デフォルトの名無しさん :03/05/15 21:07
>>76も馬鹿だな。

78 名前:デフォルトの名無しさん :03/05/15 21:08
>>77
なんでやねん。hoge関数がWin32APIだと思って。

79 名前:デフォルトの名無しさん :03/05/15 21:11
TextOut って文字列を他のバッファにコピーしてるの?

80 名前:66 :03/05/15 21:11
>>74
いや、であれば70さんの例は答えではないと思います。
73さんのLoadStringと同様にバッファのポインタを渡してそこに値を
もらう(itoaとかも)のであれば理解できます。
が、TextOutとかはWin32の規約でszで渡すと決まっている以上
文字数を指定するのは意味がないと思います。(むしろ72さんの指摘
が正しいかと...)

81 名前:66 :03/05/15 21:11

>>76ですた

82 名前:デフォルトの名無しさん :03/05/15 21:12
要するに文字列の中から先頭の一文字だけ
表示したい場合などに利用できるということ

83 名前:デフォルトの名無しさん :03/05/15 21:14
TextOutはszと決まっていない。馬鹿ばかりだな(藁

84 名前:デフォルトの名無しさん :03/05/15 21:15
>>80
TextOutに渡す文字列の終端は\0ある必要はないんだよ?
文字数渡さなかったらOSがどこまで表示していいかわからないじゃん?

85 名前:66 :03/05/15 21:16
>>83

86 名前:66 :03/05/15 21:17
>>83-84
MSDNにはLPCSTRとなってますが...

87 名前:デフォルトの名無しさん :03/05/15 21:18
すまん。>>84の訂正
×\0ある必要はない
○\0である必要はない

88 名前:デフォルトの名無しさん :03/05/15 21:19
>>86
MSDNに
>この文字列はゼロ文字 ('\0') で終わっている必要はありません。
となってますが...

89 名前:デフォルトの名無しさん :03/05/15 21:20
>>86
違う
WindowsのAPIの文字列系は基本的にLPCTSTRで

90 名前:66 :03/05/15 21:20
>>88
Pointer to a constant null-terminated string
of 8-bit Windows (ANSI) characters.
となってますが...

91 名前:_ :03/05/15 21:21
  ∋8ノノハ.∩  
   川o・-・)ノ <先生!こんなのがありました!
http://www.hiroyuki.zansu.com/moe/hankaku07.html
http://hiroyuki.zansu.com/moe/hankaku10.html
http://www.hiroyuki.zansu.com/moe/hankaku08.html
http://hiroyuki.zansu.com/moe/hankaku09.html
http://www.hiroyuki.zansu.com/moe/hankaku06.html
http://hiroyuki.zansu.com/moe/hankaku05.html
http://www.hiroyuki.zansu.com/moe/hankaku01.html
http://hiroyuki.zansu.com/moe/hankaku02.html
http://www.hiroyuki.zansu.com/moe/hankaku03.html
http://hiroyuki.zansu.com/moe/hankaku04.html

92 名前:デフォルトの名無しさん :03/05/15 21:22
Tって何か知ってるのかな?

93 名前:デフォルトの名無しさん :03/05/15 21:25
>>86
MSDNのはLPCTSTR。よく見てみ。

94 名前:66 :03/05/15 21:25
>>92
ワイド文字ですか?
szであることにはかわりないと思うのですが

95 名前:デフォルトの名無しさん :03/05/15 21:27
>>90
英語ヘルプにも
The string does not need to be zero-terminated,
と書いてある
\0を終端と見なさないため、文字列途中にわざと\0を入れて
それ以降も表示されるように文字数を設定すれば
\0より後ろの文字も描画される

96 名前:デフォルトの名無しさん :03/05/15 21:27
>>94
途中にも\0がでてくるから(略

97 名前:デフォルトの名無しさん :03/05/15 21:28
>>94
>ワイド文字ですか?
違う
こんなことを書いている時点でAPIの仕様どころか型の意味も分かっていない

98 名前:デフォルトの名無しさん :03/05/15 21:30
まぁまぁ。完全に何もわかってないから質問したんだろうし。

99 名前:デフォルトの名無しさん :03/05/15 21:31
なんの話しているのか知らないけど、strcpyとmemcpyの違いみたいなものでしょ?
\0を末尾として見れば便利だけど、文字列しか扱えなくなってしまう。

100 名前:66 :03/05/15 21:32
>>96
それは分かるのですが、それはTextOutA、TextOutWを使い分けで
対応できますよね。

>>97
教えてください。お願いします。

101 名前:デフォルトの名無しさん :03/05/15 21:32
まぁとりあえずMSDNでTextOutの解説読めってこった。

102 名前:99 :03/05/15 21:34
見当違いだったみたい(鬱)

103 名前:デフォルトの名無しさん :03/05/15 21:34
>>100
設定によって可変
型のヘルプくらい目を通せよ

104 名前:デフォルトの名無しさん :03/05/15 21:34
>この文字列はゼロ文字 ('\0') で終わっている必要はありません。

これ読んだのかな?

105 名前:デフォルトの名無しさん :03/05/15 21:36
>>103
それは解ってるんでないかい?それより TextOut がどうして
そんな仕様になってるかなんだが、俺は>>99で納得してしまった。
がしかし>>102でまた分からなくなった。

106 名前:66 :03/05/15 21:37
>>95
MSDNの英文のTextOutの解説を読むと確かにそうなっていました。
(MSDNが少し古いからでしょうか)
僕が完全に誤っていました。
レスをくださったみなさんお騒がせしました。m(__)m

107 名前:デフォルトの名無しさん :03/05/15 21:44
世の中には文字列が\0で終わらない言語があるからでないかい
AdaとかDとかそのへん。
そういう言語のことも考えるなら、本来全てのAPIで長さを渡すべきなんだろうけど、
やはりC優先で文字列そのものが重要なAPI以外は\0終端にしてると思ってた。
(VB、Delphiは言語がサービスで\0入れてくれるけど)

108 名前:デフォルトの名無しさん :03/05/15 21:50
Delphiは知らんが、VBの文字列は最後は\0が二つ連続すると決まっている。

109 名前:デフォルトの名無しさん :03/05/15 21:53
>>108
VBはBSTRなので\0終端ではないのでは?

110 名前:デフォルトの名無しさん :03/05/15 21:58
>>109
他の環境と連携させるときに>>66みたいな勘違いがバグを出すので
ウザイからわざわざ付けているだけ

111 名前:66 :03/05/15 22:08
↑すんませんね。

またのこのこ来ますた。
MSDNの2001年10月リリースを入れたのですが、日本語の解説も
「\0で終端する必要はない」となっていますた。
すみませんでした。。。



112 名前:デフォルトの名無しさん :03/05/15 22:19
矩形を描画したいのですが、Rectangleだと内部を塗られてしまいます。
ただの四角形を書きたいのですが、クリッピングとかするしか方法は
ないのでしょうか?

113 名前:デフォルトの名無しさん :03/05/15 22:22
>>112
ラインを4回引けばすむのにそうしない理由は何故ですか?
何か深い理由があるんですか?
是非教えてください

114 名前:デフォルトの名無しさん :03/05/15 22:23
NULL_BRUSH

115 名前:デフォルトの名無しさん :03/05/15 22:24
>>113
遅いかなと思いまして

116 名前:デフォルトの名無しさん :03/05/15 22:25
>>113
ラインを複数引けば必要ないRectangleがある理由を考えてみなさい。

117 名前:デフォルトの名無しさん :03/05/15 22:29
>>113
こういう、何も考えないでレスする馬鹿、どこにでもいるな。

118 名前:名無し@沢村 :03/05/15 22:35
ボタンを押したとき値を変数に代入して、ボタンを離したときそれを配列に書き込んで配列のインデックスをインクリメントしたいのです。
この処理はボタンを押したときか離したときどちらかにまとめてはされず、押したときと、離したときに別別にしなければ、どうしてもいけないのです。
でもそうすると、ボタンを早く押しすぎたり、離したときにマウスがボタンからずれてしまうと、配列の値がおかしくなってしまうのです…。
離したときにマウスがボタンがずれてしまうほうの問題は何とか解決したのですが、ボタンを早く押しすぎるときの解決法がどうしてもわからないのです。
ボタンを早く押しすぎても上手く値が配列に書き込めるようにするには、どうしたらいいのですか?

119 名前:デフォルトの名無しさん :03/05/15 22:38
>>118
ボタンコントロールをサブクラス化して
マウスのアップダウンメッセージを取得すればすむ

120 名前:112 :03/05/15 22:58
>>114
ヌルブラシっていうのがあるんですね。
グリッドを書いているのですが、セルごとにクリッピングをかけるのは
イヤだなと思っていたのでとても助かりました。
ありがとうございました。m(__)m

121 名前:デフォルトの名無しさん :03/05/15 23:10
win32apiを使わずにウインドーを出したり文字を出したりしたいのですが
どうやってやりますか?
マイクロソフトのAPIは使いたく無いので自分で考えたウインドーを出したいのです



122 名前:デフォルトの名無しさん :03/05/15 23:11
サグクラス化について質問があります。
wavが鳴らされたときにキャッチできるメッセージってあるのでしょうか?
よろしくお願いします。

123 名前:デフォルトの名無しさん :03/05/15 23:20
>>121
DOS で、自分で VRAM に直書きするか。
自分で OS + Window System 作れ。

124 名前:デフォルトの名無しさん :03/05/15 23:22
>>123
DOSで自分でVRAMに書くってどうやってかくんですか?
windowsで出来るんですか?


125 名前:デフォルトの名無しさん :03/05/15 23:27
windows上でウインドウを作りたかったらM$のAPI使え

126 名前:デフォルトの名無しさん :03/05/15 23:29
>>124
VRAMのアドレスは絶対値なので、場所さえわかれば簡単です

127 名前:デフォルトの名無しさん :03/05/15 23:30
winapiって本当に使いずらいですね
ユーザーインターフェースが少なすぎて
使い物になりませんよ
せめてユーザーにもウインドーが作れるようにして欲しいです
だからMSはアホなんですよ

128 名前:デフォルトの名無しさん :03/05/15 23:33
そうですね。

129 名前:デフォルトの名無しさん :03/05/15 23:38
>>127
結局、なにがやりたいんだ。
四角形でないウィンドウを作りたいんだったら
「リージョン ウィンドウ」でもキーにして検索しろ。

130 名前:デフォルトの名無しさん :03/05/15 23:54
リージョン ウィンドーってMSのウインドーじゃありませんか
見た目が変わってもウィンドーの中でやってることは同じだから意味が無いです

131 名前:デフォルトの名無しさん :03/05/15 23:56
そうですね。

132 名前:デフォルトの名無しさん :03/05/15 23:59
つーか、MSのウインドーは出すのがめんどくさすぎる
自分で作ったほうがまだまし

133 名前:デフォルトの名無しさん :03/05/16 00:02
はいはい。

134 名前:デフォルトの名無しさん :03/05/16 00:06
頼んでも無いのにウインドーにタイトルバーとか×とか_とか口つけるのマジ
勘弁してもらいたいもんです
何もしなければは真っ白な箱が出来るもんなのに、
一体どういう考えで作ってるのか不明すぎます
金儲けの事しか考えて無いからアホなんですよ

135 名前:デフォルトの名無しさん :03/05/16 00:08
つまんねぇよsageろ

136 名前:デフォルトの名無しさん :03/05/16 00:09
お前がつけろと言わん限り、タイトルバーも_□×もつけないが?

137 名前:名無し~3.EXE :03/05/16 00:11
ウインドウスタイルで思いっきり頼んでるはずなんだけど

138 名前:デフォルトの名無しさん :03/05/16 00:13
ウインドースタイルを使わなければ真っ白になりますか?
私が言ってるのはこの事を言ってるんですよ

139 名前:デフォルトの名無しさん :03/05/16 00:15
>>138
オイオイ

140 名前:デフォルトの名無しさん :03/05/16 00:15
そもそもAPI使いたくないのになんでこのスレで質問してんだろう

141 名前:デフォルトの名無しさん :03/05/16 00:18
釣り師警報発令中

142 名前:デフォルトの名無しさん :03/05/16 00:18
アナルを使わなければ気持ちよくSEX出来ますか?
私が言ってるのはこの事を言ってるんですよ

143 名前:デフォルトの名無しさん :03/05/16 00:19
足なんてただの飾りです。
偉い人たちにはそれがわからんのです。

144 名前:デフォルトの名無しさん :03/05/16 08:38
なんのために非クライアント領域がWindowsによって提供されてるのかわかってんのか

145 名前:デフォルトの名無しさん :03/05/16 10:07
GUIなんてただのおもちゃです。
消費者にはそれがわからんのです。


146 名前:デフォルトの名無しさん :03/05/16 10:09
人生なんて玩具です。
人間にはそれがわからんのです。

147 名前:デフォルトの名無しさん :03/05/16 10:20
遅レスだが。
>>100
LPC"T"STR の "T" は "Translate" ってことだよ。
UNICODE が #define されていれば LPCWSTR, そうでなければ LPCSTR に
VC++ が読み替えてくれる。

148 名前:147 :03/05/16 10:45
印刷に関して質問させて下さい。

EXCELファイルを右クリックして、自動印刷実行をしますと、
EXCELファイルを開いた際に設定した印刷設定、例えばトレイ・用紙サイズ
が反映されます。この手法は、SetPrinterでデフォルトのプリンターの設定
を変更することなく、各ファイル毎の印刷設定で印刷がなされています。

ではこの手法を実現するためにどのようなAPIとレジストリを用いているの
でしょうか?

EXECELと同じように新規アプリケーションでファイル毎にトレイ選択・用紙選択
などを行い、デフォルトのプリンタ設定を変えることなく済ませたい考えです。

(プリンターのデフォルトの設定を変更するやり方は各ドライバーごとの
DEVMODE構造体を扱う方法と認識しています。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers
直下のドライバー毎の設定が保存されています。)



149 名前:デフォルトの名無しさん :03/05/16 10:49
>>148
なんでおまいが147を騙ってるんだよ。

150 名前:148 :03/05/16 10:51
>>148
投稿する段階では、147のつもりでしたが投稿したら148に
なってました。済みませんです。

151 名前:148 :03/05/16 10:52
>>150

>>149
の間違えですすみません。視力が悪くて、、

152 名前:デフォルトの名無しさん :03/05/16 10:56
>>150-151
最初に書くときは名無しでいいと思うが・・・

153 名前:148 ◆Kg.N7J02zE :03/05/16 11:02
>>152
これからは気を付けます。

154 名前:デフォルトの名無しさん :03/05/16 11:03
>>148
OpenPrinter(), SetPrinter()でいけそうだが。

155 名前:148 ◆Kg.N7J02zE :03/05/16 11:05
>>154
SetPrinterはドライバーのデフォルトの設定を直接変更してしまう
ので、148の手法には使えないと認識しています。

156 名前:デフォルトの名無しさん :03/05/16 11:06
>>155
いや、印刷後もとの設定に戻せばいいだけでは?

157 名前:148 ◆Kg.N7J02zE :03/05/16 11:09
>>154
補足しますと、EXECELの場合ファイルを開いてプリンタのトレイを変更し、
用紙サイズを変更しても、プリンターのドライバーのデフォルトの設定は変わ
りません。・・・(1)
プリンターフォルダで設定できるのがドライバーのデフォルトの設
定です。(2)
SetPrinterは(2)の設定は変更しますが、(1)のような変更がきかないのです。

158 名前:148 ◆Kg.N7J02zE :03/05/16 11:11
>>156
同一プリンタドライバでの印刷を、同時に複数のユーザが
行った場合、ドライバのデフォルトの設定が変わってしまうと、
ユーザの思ったような印刷ができません。

159 名前:デフォルトの名無しさん :03/05/16 11:18
>>157
(1) OpenPrinter():ハンドル取得
(2) Getprinter():現在の設定を取得
(3) SetPriner():印刷設定
(4) 印刷実行
(5) SetPriner():(2)で取得した設定に戻す
(6) ClosePrinter():終わり
でダメなの?

160 名前:148 ◆Kg.N7J02zE :03/05/16 11:30
>>159
レスありがとうございます
(4)印刷実行の間に,他ユーザから Getprinterされてしまうと,
もとの設定には戻らないと思います.

161 名前:デフォルトの名無しさん :03/05/16 11:38
>(4)印刷実行の間に,他ユーザから Getprinterされてしまうと
他のユーザーが戻してくれるのを期待汁!てか、Open 〜 Close の間に
割り込むことはできるんか?ちょっと調べてくれや>148

162 名前:デフォルトの名無しさん :03/05/16 11:53
TextOut関数を使うよりDrawText,DrawTextExを使った方がいいのでしょうか?
TextOut関数について調べていたらDrawTextなるものを見つけて迷っています

163 名前:148 ◆Kg.N7J02zE :03/05/16 11:54
>>161
調べてみます.実は印刷用アプリが別で以下のような構成です.
ご指摘で問題点が見えて来ました.これが原因かもです.

(1) OpenPrinter():ハンドル取得
(2) Getprinter():現在の設定を取得
(3) SetPriner():印刷設定
(4) ClosePrinter():終わり

(5) 印刷用アプリで印刷実行

(6) OpenPrinter():ハンドル取得
(7) Getprinter():現在の設定を取得
(8) SetPriner():(2)で取得した設定に戻す
(8) ClosePrinter():終わり

164 名前:デフォルトの名無しさん :03/05/16 12:14
>>49
遅レス申し訳ないけど、GetNextWindowを使うとwindowのz-orderが取得できます。
最前面の一つ下のwindowが *概ね* 直前にアクティブです。。
最小化などでフォーカスを失った場合は直前のwindowが次のz-orderを持つとは
限りませんが、解法は私には分からないです。エロイ方はもっといい方法をお願いします。

165 名前:デフォルトの名無しさん :03/05/16 12:51
>>162 ExtTextOutというのもあるよ(と更に困惑させてみる)

166 名前:デフォルトの名無しさん :03/05/16 13:00
APIがイッパイあるってし・あ・わ・せ(はぁと





なわけねーだろゴルァ!

167 名前:デフォルトの名無しさん :03/05/16 13:30
WM_PAINT時にCreateWindowでWS_VISIBLE指定したり、
ShowWindowで表示させようとしたりしてるのですが、表示ができません。
無理なんでしょうか?

168 名前:_ :03/05/16 13:37
  ∧_∧   
 ( ・∀・)/< こんなのみつけたっち♪ 
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

169 名前:デフォルトの名無しさん :03/05/16 14:00
>>167
子ウィンドウをクリップしたいのなら親に WS_CLIPCHILDREN
スタイルを追加すればいいのだが、そういうことやりたいのとは
違うんかな

170 名前:66 :03/05/16 20:13
>>147
ありがとうございます。昨晩の66です。
LPCTSTRはUnicodeマクロが定義されているかどうかで
VCがASCII変数、Unicode変数に読み替えてくれるというこですよね。
それと同じ意味でTextOutもUnicodeのときはTextOutW、でないときは
TextOutAに読み替えられるから、いづれにせよOSは文字数を受け取ら
なくてもszを検知できるはずということを書いたのですが、
昨日はうやむやになってしまいました。間違っているのでしょうか?


171 名前:デフォルトの名無しさん :03/05/16 20:52
>>170
最後は0じゃなくていいってはじめからいってんだろ!

172 名前:デフォルトの名無しさん :03/05/16 20:53
win16apiのライブラリーとかヘルプのダウンロード出来るところ教えてください

173 名前:デフォルトの名無しさん :03/05/16 20:59
>>170
\0を終端とみなさないから文字数を入れてやらないと
どこまで表示していいか判断できなくなる
昨日から言われているのに未だに分かってないのか
久々に本当の馬鹿を見た

174 名前:デフォルトの名無しさん :03/05/16 22:15
>>167
問題点をはぐらかすような質問は止めれ。
どうせ WM_PAINT じゃなくても表示できんのだろ?

175 名前:デフォルトの名無しさん :03/05/17 01:30
GetThreadSelectorEntry ってどう使うんだ。(具体的に)
あまり情報がないんだが

176 名前:デフォルトの名無しさん :03/05/17 01:58
386のセグメントが分かってればすぐに使えると思うけど。

177 名前:デフォルトの名無しさん :03/05/17 02:11
>147
さらに遅レス。LPCTSTRって
Long Pointer Const To STRing
だと思ってた。

178 名前:デフォルトの名無しさん :03/05/17 02:40
TはTinyのT

179 名前:デフォルトの名無しさん :03/05/17 03:06
TはTinkoのT

180 名前:デフォルトの名無しさん :03/05/17 05:32
Q. What's the meaning of `T'?
A `T' means `Tamachan'.(He is the most popular animal in Japan.)
Reference:
ANSI Sec. 123.4; ISO Sec. 5.67

181 名前:デフォルトの名無しさん :03/05/17 06:27
>>174
は?意味がわからんのですが…
WM_CREATEではできたけど、WM_PAINT時に表示できなかったから聞いてるのですが?
日本語読めますよね?

ちなみにShowWindowでは表示できました。
CreateWindowでWS_VISIBLEをしても表示できない理由はまだわかってませんが。

182 名前:デフォルトの名無しさん :03/05/17 06:36
>>181
WM_PAINT のたびに CreateWindow() してるの?

183 名前:デフォルトの名無しさん :03/05/17 06:43
どういう仕様なのか分からんけど EndPaint() の後に書いても駄目だろうか。

184 名前:デフォルトの名無しさん :03/05/17 06:43
>>182
あ…そうなっちゃいますね…まずいヨカン

ではCreateWindow時に今後表示させる場所にWindowを全部非表示で作成しておいて
SW_SHOW, SW_HIDEで表示、非表示を切り替えるのがいいのでしょうか?

185 名前:デフォルトの名無しさん :03/05/17 06:44
○WM_CREATE
×CreateWindow

でした

186 名前:デフォルトの名無しさん :03/05/17 06:55
少なくとも WM_PAINT でウィンドウを作るなんてのはナンセンス。
サイズ変更枠をドラッグさせるだけでウィンドウが作られるなんて
考えるだけで。。

187 名前:デフォルトの名無しさん :03/05/17 06:58
>>186
ありがとうございました!
今後気をつけます。

188 名前:デフォルトの名無しさん :03/05/17 13:55
WM_PAINT時にウィンドウのリージョンを更新するような処理は禁止
WM_PAINT時にウィンドウのリージョンを更新するような処理は禁止
WM_PAINT時にウィンドウのリージョンを更新するような処理は禁止


189 名前:デフォルトの名無しさん :03/05/17 16:52
EndPaintじゃねーよなw
SetWindowRgnのことか?

190 名前:デフォルトの名無しさん :03/05/17 16:54
BeginPaintだろアフォ

191 名前:デフォルトの名無しさん :03/05/17 21:31
ところでHDCの取得には
BeginPaint()とGetDC()があるの?
使い分けってしてますか?

192 名前:デフォルトの名無しさん :03/05/17 21:36
用途分かれてる気がするケド

193 名前:デフォルトの名無しさん :03/05/17 21:36
>>191
BeginPaint()はWM_PAINTハンドラ内専用。
WM_PAINT内でGetDC()を使うと無効領域がクリアされないから
永遠にWM_PAINTを受け取ることになる。

194 名前:デフォルトの名無しさん :03/05/17 21:37
wm_paint内ではbeginpaint それ以外はgetdc

195 名前:デフォルトの名無しさん :03/05/17 22:30
TはTakeshiのT

196 名前:デフォルトの名無しさん :03/05/18 01:11
Typename

197 名前:名無し@沢村 :03/05/18 08:56
おまいらよwin32APIでプログラムをつくるのはいいが、レジスタやメモリには予約ビットというのがあるのを知っているか?
おまいらよ、予約ビットというのはプログラマが勝手に使ってはいけない領域だ。
おまいらよ、この予約ビットの存在を知らずにプログラミングすると、プログラムが暴走したりシステムがハングアップしたりして、大変危険だよ。
例えばmallocで1000バイトばかりメモリを確保した場合、その中に予約ビットが含まれていると、プログラムはどこもおかしくないのに、突然フリーズしてしまったという不思議な現象が起るのよ。
不正なメモリアクセスというやつだな。
この予約ビットというのはメモリのそこかしこに散りばまられているから、正常にメモリを確保するのは至難の技だぞ!!
プログラミングって大変だぞ、おまいらよ!!

198 名前:デフォルトの名無しさん :03/05/18 08:59
沢村よ、最初の頃の元気がないな。

> 例えばmallocで1000バイトばかりメモリを確保した場合、その中に予約ビットが含まれていると

確保したのに、
予約されてて使えないビットがあるというのはいかがなものか。

199 名前:デフォルトの名無しさん :03/05/18 09:23
WinSock2 使ってちょっとしたサーバプログラムを作ってる。

socket() → bind() → listen() の後に...
WSAAsyncSelect(Socket, Window, Accepted, FD_ACCEPT) ってやって、外部から接続に行くとちゃんと WindowProc() が呼ばれる。
で WindowProc() の中で accept() するんだけど、accept() が失敗したら MessageBox() でメッセージを出すようにしてた。
で、最初動かした時に accept() の引数が間違っててメッセージが出るのはいいんだけど、1つだけじゃなくいっぱいでて異常終了する。
デバッガで追っかけると、MessageBox() 呼んだ時に、WindowProc() が呼び出されて、もう一回 MessageBox() が呼ばれて...
で、最終的にスタックオーバーしている。

これって仕様なの ?

200 名前:デフォルトの名無しさん :03/05/18 10:08
スタックオーバーフローを防ぐのはプログラマの責任です

201 名前:デフォルトの名無しさん :03/05/18 10:27
>>199
WINAPIでの話しだけど、
WM_PAINTでMessageBox()を書くと、無限ループになる。
  (最終的には止まるが)
よく、winsockについては知らんが
MessageBoxが怪しいと感じる。
MessageBoxがでたら次はWM_PAINTでWindowProcが呼び出されている説は?

202 名前:デフォルトの名無しさん :03/05/18 10:44
>>201 あふぉ。>>186,>>188


203 名前:201 :03/05/18 12:16
>>202
前、デバッグでMessageBoxをWM_PAINTに書いて
びっくりするくらいMessageBoxがなかなか消えなかったので、
>>199さんがもし、知らないならと思って書いた。
>>186,>>188は知ってたよ。けど、書いた。念のため。


204 名前:デフォルトの名無しさん :03/05/18 13:47
>>201
プログラム上は、WM_PAINT とか (と言うか、Socket 関係以外) が来たらそのまま DefWindowProc に渡しているだけ。
ウィンドは作ってるけど、非表示だから WM_PAINT は来ていない。
タスクトレイ常駐させて、左クリックで表示するようにしているのでその時にはじめて WM_PAINT が来ていることも確認した。

どうも、accept で失敗しているので再度メッセージが飛んできているみたい...、でも誰も DispatchMessage() してないはずなんだが。
MessageBox() 内で DispatchMessage() されちゃうのかなぁ...。

>>202
荒れるからアフォと書くなよ。
ちょっと上にも出てたんだから WM_PAINT の件ぐらいはみんな理解してると思う。

205 名前:デフォルトの名無しさん :03/05/18 17:06
>>201
それはチミ、こういうことかね?

WM_PAINT → MessageBoxをウィンドウの上に出す → MessageBoxが消えると再描画発生
  ↑                                        ↓
  └―――――← ヽ(`Д´)ノ ウワァァン―←―――――――――――┘

206 名前:デフォルトの名無しさん :03/05/18 17:56
>204
>MessageBox() 内で Dispatch...
これは無いだろ。独自のモーダルループに入るはず。
こういう場合はデバッガじゃなくトレースした方が良かろう。
それとMessageBox()の親を自分(非表示の)にしてない?
呼んだ時は知らんが、閉じた時に無条件に親が生かされたと思うから、この場合はデスクトックなどにするべきじゃろう。

207 名前:デフォルトの名無しさん :03/05/18 18:00
はあ?上のメッセージボックス(や他のアプリ)が移動しただけでも、
Enable/Disableに関係無くWM_PAINTは来るでしょ。

208 名前:デフォルトの名無しさん :03/05/18 18:12
>>206
「独自のモーダルループ」は別にウィンドウを制限してないから
しっかりDispatchされる

209 名前:デフォルトの名無しさん :03/05/18 18:27
ウインドーの中に四角いウインドーじゃ無い箱作ってドラッグさせたり
その箱クリックしてメニュー出したり糸をくっつけてくるくる回したりしたいんだけど
一番効率的なやり方教えてください


210 名前:デフォルトの名無しさん :03/05/18 18:34
>>209
WS_PUPOPWINDOW
そうすればドラッグ、クリック時にメッセージ。
描画は自己責任。
メニューは自作。またはオーナードロー。
が多分一番楽。

211 名前:デフォルトの名無しさん :03/05/18 18:43
エディットコントロールを2つ並べて、
その境界線をドラッグで動かせるようにするにはどうすればいいですか?

212 名前:デフォルトの名無しさん :03/05/18 18:54
>>211
エディットコントロールを包括するフレームウインドウを作り、エディットビューを形成する

213 名前:デフォルトの名無しさん :03/05/18 19:42
>>206
> それとMessageBox()の親を自分(非表示の)にしてない?

MessageBox(0, ...) としてるから問題ないと思うんだけど。

>>207
EnableWindow() と混乱してない ?
ShowWindow(SH_SHOW or SH_HIDE) だよ。

>>208
ごめん理解できない。
MessageBox() 表示すると、システムが勝手に俺のウインドメッセージまで Dispatch しちゃうってことなの ?
メインループには戻ってないのに ?

214 名前:デフォルトの名無しさん :03/05/18 19:53
スワップファイルとページファイルはどのように違う物なのですか?
俺は今までずっと一緒だと思い込んでいたのですが、↓を読むと別物のよう。
ttp://www.microsoft.com/japan/developer/library/vccore/_core_.2f.swaprun.htm

どこで聞いたらいいか分からなかったけど、ここが最も近そうに思えたので、
ここに書き込みました。より適切なスレが他にありましたら誘導をお願いします。

215 名前:デフォルトの名無しさん :03/05/18 20:03
>>213
MessageBoxはシステムが勝手にユーザーのウインドウをDispatchするよ。
メッセージループしてなくてもMessageBoxが表示されてる間はしてるのと同じ状態になる。

多分MessageBoxで隠れた部分を再描画するためにWM_PAINTを呼び出す必要があるからなんだろうけど、
俺の場合はWM_PAINTとかじゃなく、WM_TIMERが呼び出されちゃってはまったからなぁ・・・

216 名前:デフォルトの名無しさん :03/05/18 20:09
>>214
9x系だとスワップファイル、NT系だとページファイル
じゃなかったっけな

217 名前:デフォルトの名無しさん :03/05/18 20:40
>>214
確かに、別物であるかのように呼び分けてるね。
誤訳かと思って米MSを確認したら、そちらでも呼び分けてた。
>>216
リンク先に「これはNT4.0の機能」とあるので、9x系は関係無いっぽい。

218 名前:デフォルトの名無しさん :03/05/18 20:41
ページファイルが仮想メモリのことでスワップファイルは実際に作られるファイルのこと

219 名前:じいさま :03/05/18 20:49
セグメント: 1つのベースアドレスにオフセットを加えてアクセスする主記憶装置の論理範囲
スワッピング: セグメント全体を2次記憶装置にバックアップ/リストアすること
ページング: セグメントの部分を一定のサイズを単位としてバックアップ/リストアすること

220 名前:デフォルトの名無しさん :03/05/18 21:29
>>215
なるほど確かに普通のアプリケーションでもダイアログボックスの後ろの領域の再描画はされてるから、WindowProc は呼び出されないとダメだね。
つーことは、WindowProc 内で MessageBox は使うのは要注意と言うことだな。

> 俺の場合はWM_PAINTとかじゃなく、WM_TIMERが呼び出されちゃってはまったからなぁ・・・

だねぇ、WM_PAINT とかならすぐ気付きそうなもんだけど、WM_TIMER とか Socket なんかだと関係なさそうだったから気付きにくいよね。

ありがと、1つ経験値が上がったよ。

221 名前:デフォルトの名無しさん :03/05/18 23:12
矩形内に文字列を出力するのにDrawText()を使っているのですが
エクセルのような「縮小して全体表示」をするのにフォントサイズを
0.1ポイントづつ減らしてループで矩形内に収まるかを計算しているの
ですが、これって専用のAPIで提供されているのでしょうか?

222 名前:デフォルトの名無しさん :03/05/18 23:17
Dispatchするというのは
日本語で言うとどんな意味ですか?

223 名前:デフォルトの名無しさん :03/05/18 23:18
>>222
殺す
もっと一般的な意味があったと思うけど・・・

224 名前:デフォルトの名無しさん :03/05/18 23:59
>>222-223
dispatch[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 固定する=固定から離れる→急ぐ)

225 名前:デフォルトの名無しさん :03/05/19 00:06
win2000です。
ファイルからビットマップを読み込んで印刷したいと思っています。
その途中の、LoadImageを使ってbmpを読み込むところで苦戦しています。
下のようなコードなのですが、どうやってもNULLしかかえってきません。
当然、ファイルは存在しています。。。
なにかミスしてます?

char *fname = "c:\\temp.bmp";
hbmp=(HBITMAP)LoadImage (
NULL,fname,IMAGE_BITMAP,
0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION);


226 名前:デフォルトの名無しさん :03/05/19 00:11
>>225
第一引数

227 名前:デフォルトの名無しさん :03/05/19 00:29
>>223
じゃあダブルディスパッチは心中?

228 名前:デフォルトの名無しさん :03/05/19 05:48
>>227
二重派遣だな(゚∀゚)



                                 (´Д⊂ ウウ…

229 名前:デフォルトの名無しさん :03/05/19 07:17
>>225
とりあえずFormatMessageしてみそ

230 名前:デフォルトの名無しさん :03/05/19 12:15
>>221
DrawTextで裏画面に描画、
StretchBltで裏のを表に縮小コピーの方がいいと思いますが。

231 名前:225 :03/05/19 12:18
ヘルプは何度も読んだのですが、第1引数は第6引数にLR_LOADFROMFILEを指定していれば無視されるようなことが書かれていたのでNULLにしていました。
一応GetModuleHandle( NULL )と(HINSTANCE)GetWindowLong(hWnd, GWL_HINSTANCE )で試しましたが同じでした。

FormatMessageでは、「この操作は正しく終了しました」と出ます。
もちろん、LoadImageではNULLが返ります。

誰か助けてー

232 名前:225 :03/05/19 12:42
DirectXのAPIで作成したBMPだったんだけど、そっちがおかしかったみたいです。
ペイントだと表示できるのに。
BMPのバージョンとかあるの?どうすりゃいいんだろう?(泣)


233 名前:デフォルトの名無しさん :03/05/19 12:56
>>225
もうちょっと長めのコードを書いてみそ。他の所に間違いがあるのかも。
コードが長いなら以下のところに書くといいよ。
http://do.sakura.ne.jp/%7Ejunkroom/cgi-bin/megabbs/lounge/index.html

234 名前:デフォルトの名無しさん :03/05/19 13:06
>>232
Yes。BMPには複数のバージョンがある。

235 名前:225 :03/05/19 13:39
>>233
LoadImageに失敗するコードを貼り付けておきます。
ペイントで適当に作った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()...
}

236 名前:233 :03/05/19 13:49
>>234
バージョンってどんな?16色、256色、1670万色の事?それとも他にある?
>>232>>235
ペイントで開くと言うことはプログラムでの開き方がおかしいと言うこと。
僕が使うのはCleateFileか標準Cだから、LoadImageは余り分からないけど
最後の引数をLR_CREATEDIBSECTION|LR_LOADFROMFILE|LR_DEFAULTSIZE
にすると動?

237 名前:デフォルトの名無しさん :03/05/19 14:37
ステータスバーのサイズ変更用グリップのサイズって固定なんでしょうか?
それともデスクトップの設定によって可変なんでしょうか?
可変ならばグリップサイズを取得するAPI、もしくは方法を教えてください。
今のところグリップ幅15程度にハードコーディングしてしまっています。

238 名前:デフォルトの名無しさん :03/05/19 16:28
接続されてるジョイパッドの情報を取得するAPI教えてください。
お願いします。

239 名前:デフォルトの名無しさん :03/05/19 17:02
>>238
http://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=
なぜこの程度も出来ない?
インターネット上にいくら情報があるといっても、使う奴が無能である限り宝の持ち腐れ

240 名前:デフォルトの名無しさん :03/05/19 17:21
>>239

掲示板で質問すれば、君みたいな親切くんが検索の仕方まで
教えてくれるからなあ。

241 名前:221 :03/05/19 20:00
>>230
そんな方法があるんでつね。
やってみます。ありがとう。。。

242 名前:デフォルトの名無しさん :03/05/19 20:04
windowsフォルダーの中の起動に必要な重要なファイルとかを
使っている人にばれないように消去する方法教えてください

243 名前:デフォルトの名無しさん :03/05/19 20:06
>>236
LoadImageはDDB型。
CreateFile,標準CはDIB型。
DirectXは知らんが、編集はDIB型がいい。
DIB使うなら検索でBMPフォーマットから知れ。

244 名前:デフォルトの名無しさん :03/05/19 20:14
>>242
削除プログラム作って、
レジストリのキー「RUN」に追加する。
書き方は他のを参照。
スタートアップに入れる方法をあるが、
ばれやすそうなんで、そっちオススメ

245 名前:デフォルトの名無しさん :03/05/19 20:34
マルチデスクトップ環境で、マウスカーソルがあるモニタの
左上のスクリーン座標かスクリーン座標系のRECTを取得したいのですが、
何かいい方法はありませんか?

POINT p;
MONITORINFOEX monInfo;
GetCursorPos(&p);
monInfo.cbSize =sizeof(monInfo);
GetMonitorInfo(MonitorFromPoint(p,MONITOR_DEFAULTTONEAREST), &monInfo);

として、
MONITORINFOEX構造体のrcMonitorでうまく取得できると思ったのですが、
実際作ってみるとうまくいってないみたいです。
よろしくお願いします。



246 名前:デフォルトの名無しさん :03/05/19 21:04
>>245
GetClientRectでデスクトップのハンドル使っても
駄目なのか?

247 名前:デフォルトの名無しさん :03/05/19 22:05
>>246
それだとクライアント座標系での取得になってしまうので、
左上の座標は必ず(0,0)になってしまうと思いますし、
モニタの座標ではなく、すべてのモニタを囲む長方形(VirtualDesktop)の
左上、右下の座標が取れるだけだと思うのですが間違ってますか?

スクリーン座標で
(0,0) (1600,0) (2400,0)
┌───┬──┐
│1    │2 │
│ ├──┘(2400,600)
└───┘
(0,1200)(1600,1200)
のようなモニタ配置だとして、「2」のモニタのスクリーン座標(1600,0)-(2400,600)が
ゲットしたいのです。なにかよい方法はないでしょうか・・・。


248 名前:デフォルトの名無しさん :03/05/19 22:07
激しくずれました。
すいません。

249 名前:デフォルトの名無しさん :03/05/19 22:19
>>248
レジストリにその情報がある可能性が高いと思われ。
あるかは知らんが。

250 名前:214 :03/05/19 22:39
>>216-219
ありがとうございます。おかげで理解できました。


■過去ログ置き場に戻る■ 1- 次250 最新50
DAT2HTML 0.33f Converted.