2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

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
ありがとうございます。おかげで理解できました。

251 :デフォルトの名無しさん:03/05/19 23:54
Windowsのデスクトップ上のどこかで
IMEがON/OFFされたことを検出する方法はありますか?


252 :デフォルトの名無しさん:03/05/19 23:55
ホイールマウスのホイールを無効にするにはどうしたら良いでしょうか?

253 :デフォルトの名無しさん:03/05/20 00:06
レジストリーを完全に破壊するにはどうやったら良いですか?
バックアップとかあるのも壊したいのです

254 :デフォルトの名無しさん:03/05/20 00:49
そのマシンの前に立つ。
次に

255 :デフォルトの名無しさん:03/05/20 00:50
  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >__Λ∩
  _/し' //. V`Д´)/
 (_フ彡        /  ←>>254

256 :デフォルトの名無しさん:03/05/20 01:03
>>252
ホイールのメッセージを無視するとか

257 :(;´Д`):03/05/20 01:10
>>243
LoadImageでDIBも問題なく開けますが・・・

258 :動画直リン:03/05/20 01:11
http://homepage.mac.com/hitomi18/

259 :デフォルトの名無しさん:03/05/20 01:16
LoadBitmap と勘違いしたんでしょ

260 :デフォルトの名無しさん:03/05/20 01:19
>>243 悲惨だな

261 :デフォルトの名無しさん:03/05/20 01:25
MSDN ライブラリ Visual Studio 6.0 には
Windows NT : LR_LOADFROMFILE はサポートされていません。
なんて事が書いてあるが
これってNT3.1の事だろうか…

262 :デフォルトの名無しさん:03/05/20 01:41
>>261
あまり気にするな

263 :デフォルトの名無しさん:03/05/20 01:45
>>245
GetMonitorInfoで駄目ならEnumDisplayMonitors使ってみたら?
あと、一応MonitorFromPointの戻り値を確認してみては?

264 :デフォルトの名無しさん:03/05/20 05:46
>>252
詳細オプションで検出しない、にする。

265 :デフォルトの名無しさん:03/05/20 08:11
AMDのOpteronで、Win32から
64ビットアプリケーションを作りたいんだが、アセンブラプログラムが必要?
C++Builderでできる?


266 :デフォルトの名無しさん:03/05/20 08:53
64bit対応の命令含んだプログラムを作ることと
64bitアプリを作ることは違うのだが理解しているのだろうか?
DOSプログラムで32bit命令を使ったからといって
32bitアプリを作ったことにはならないのだが
馬鹿そうだから理解していないんだろうな

267 :デフォルトの名無しさん:03/05/20 09:45
後ろにExって付いてるやつと付いてないやつはどっちがいいんですか?
効果はほぼ同じですよね?Exの方が優れているのでしょうか?

268 :デフォルトの名無しさん:03/05/20 09:48
>>267
ヘルプに書いてあるに何故読まない?
いくら盲目でも読み上げソフトぐらいあるだろう。

269 :デフォルトの名無しさん:03/05/20 10:16
ヘルプにはAPIのことについて書いてないです
Delphi6per

270 :デフォルトの名無しさん:03/05/20 10:27
>>269
何故MSDNのオンラインサイトを見ない?

271 :デフォルトの名無しさん:03/05/20 10:35
>>268 >>270
このまえから、どうでもいい質問(ネタ)かいて、
かまってもらおうとしている奴だから、相手しないほうがいいよ。


272 :デフォルトの名無しさん:03/05/20 11:09
このスレの存在意義がなくなるからです
自分で調べたんですけど、書いてあげようかなと思って^^;

273 :148 ◆Kg.N7J02zE :03/05/20 11:51
こんにちは,先日プリンタ設定の方法について質問した者です.
結局,OpenPrinterで開いてSetPrinterで設定しても,OpenPrinter
しているうちに他のクライアントがOpenPrinterしてSetPrinterできて
しまうことが分かりました.

(1) OpenPrinter():ハンドル取得
(2) Getprinter():現在の設定を取得
(3) SetPriner():印刷設定
(4) 印刷実行
(5) SetPriner():(2)で取得した設定に戻す
(6) ClosePrinter():終わり

の過程の途中で他クライアントから同じ過程を実行されてしまうことも
可能ということなんです。
プリンターの設定を変える過程で、他のクライアント
から同じPGで変更されてしまうと、プリンタ設定が元に戻らないという現象です。

識者の方、よろしければご教授下さい。

274 :デフォルトの名無しさん:03/05/20 12:35
>>273
ヘルプに書いてあるに何故読まない?
いくら盲目でも読み上げソフトぐらいあるだろう。

275 :デフォルトの名無しさん:03/05/20 12:37
>>273
てめーはプリンター使うなアホ

276 :デフォルトの名無しさん:03/05/20 15:16
ボタンがフォーカスを得たときの点線を描画されないようにしたいのですが、
オーナードロー使わずにできる方法があれば教えて頂けないでしょうか。

277 :デフォルトの名無しさん:03/05/20 18:35
k i e r o

278 :デフォルトの名無しさん:03/05/20 18:37
>>276
http://www.geocities.co.jp/MusicStar-Bass/6678/bero.html

279 :デフォルトの名無しさん:03/05/20 18:39
オーナードローしか方法は知らんが、どんなわけありでそんな奇妙な仕様にしたいのだ。

280 :デフォルトの名無しさん:03/05/20 18:54
>278
何だこれ! CD-ROMがイジェクトされたぞ。

281 :デフォルトの名無しさん:03/05/20 19:03
ほんとだ。
ブラクラの類だろうけど、面白そうだからクリックしちゃったよ。

282 :デフォルトの名無しさん:03/05/20 19:06
>>281
おいおい。これウィルスだぞ

283 :デフォルトの名無しさん:03/05/20 19:09
んなわけない。
ソース見ればわかる。
ただのVB厨のいたずらw

284 :276:03/05/20 19:25
>>279
ボタンが幾つか並んでいる状態でクリックを繰り返すと
点線が残って見た目がきれいでなかったので・・・
点線はとりあえずこのにしておきます。

スレの流れにばっちりはまった書き込みしてしまった
ようですみません。逝ってきます。


285 :デフォルトの名無しさん:03/05/20 21:22
set cdaudio door open

286 :デフォルトの名無しさん:03/05/20 23:10
アイドル処理ってどうやってますか?
メッセージループにPeekMessageを使うとCPU使用率が100%になってしまうので
100ミリ秒でタイマーセットしたんですが、他に常套手段てありますか?

287 :デフォルトの名無しさん:03/05/20 23:16
>>286
GetMessage() じゃ何か不満でもあるのか ?

288 :デフォルトの名無しさん:03/05/20 23:23
GetMessage使ったらメッセージが来るまでブロックされてアイドル処理もあったもんじゃない

289 :デフォルトの名無しさん:03/05/20 23:25
>>287
MSG msg;
while(GetMessage(&msg, NULL, 0, 0) > 0){
OnIdle(); // アイドル関数
TranslateMessage(&msg);
DispatchMessage(&msg);
}

こういうことでしょうか?
ペゾルド本5版(P235)にデッドタイムを利用するためにPeekMessageを使う方法が
あったのでてっきりPeekMessageを使うものだと思ってました。
GetMessageだとキューからメッセージを取り出すまで制御を返さないのですが
問題ないんでしょうか。

290 :デフォルトの名無しさん:03/05/20 23:41
>>287のメール欄見ると切なくなってくる


291 :デフォルトの名無しさん:03/05/20 23:48
ttp://www2.bbspink.com/test/read.cgi/erog/1050908540/l50
390あたりからどうぞ。
※低レベル注意

292 :あい:03/05/21 00:03
★グチョ濡れだけど見てくれる?★
オマンコを見たい人は画像をクリックして下さい

腿   \_  |  _/
彡彡彡
         ミミミミ クリトリス
          ミミミミ / ̄ ̄ ̄ ̄
         ノ σ ヽ 尿道
      / / ゜ヽ ̄ ̄ ̄ ̄
大陰唇  / //\\ \ 
 ̄  ̄    ( ( 膣 ) ── 小陰唇
       \ \\// /
         `   \/  '
\       *──肛門
  \_____/\_____/
http://jbbs.shitaraba.com/computer/2100/jsweb_1.html

293 :デフォルトの名無しさん:03/05/21 00:06
>>289
Peekしてメッセージが着てなかったら
Sleep(0);しる。

294 :デフォルトの名無しさん:03/05/21 00:06
>>291
アイドル処理とあんま関係ないような。

295 :デフォルトの名無しさん:03/05/21 00:11
ふつうWaitFor系使うだろ

296 :デフォルトの名無しさん:03/05/21 00:14
WaitFor系って待機は出来るけどアイドル処理挟めたっけ?

297 :デフォルトの名無しさん:03/05/21 00:19
みんな「CPU使用率が100%」にばかり目がいって「アイドル処理」を忘れてやしないか…

298 :デフォルトの名無しさん:03/05/21 00:24
>297
ヒントはでてるから無問題。

299 :デフォルトの名無しさん:03/05/21 00:25
WaitForMultipleObjectsExでタイムアウトに100ミリ秒セットすればいいんじゃないか?
MFCのようにメッセージ後に一気に走らせるタイプならそもそもPeek/GetMessageで十分だし。

300 :デフォルトの名無しさん:03/05/21 00:30
>>299
それなら別にGetMessageとタイマー使えばいいんでは

301 :デフォルトの名無しさん:03/05/21 00:31
ゲームならまだしも普通のWinアプリでメインスレッドにSleepやWaitForを入れるもん?

302 :デフォルトの名無しさん:03/05/21 00:31
>>300
同意

303 :デフォルトの名無しさん:03/05/21 00:35
ちなみにMFCのアイドル処理は特定のメッセージ後はアイドル関数を呼ばないようにしたり、フラグ使ったりして呼び出し回数を抑制してるっぽいね

304 :デフォルトの名無しさん:03/05/21 00:35
286はどういう処理がしたいんだ?
OnIdleは定期的に呼んで欲しいのか?
定期的に呼んで欲しいならSetTimerでも使った方がいいかと。

305 :デフォルトの名無しさん:03/05/21 00:42
>>304
MFCがアイドル時にしてるようなこと、例えばメニューやコントロールの更新ハンドラを
実行したいと思っています。
具体的にはリストビュー内のアイテム数をステータスバーに表示させるといったことです。

そのため、定期的に呼ばれる必要はありますが、精度はそれほど気にしません。
なので、今のところタイマーで100ミリ秒程度にしてるんですが、もっと良い方法や
常套手段があるのなら教えて欲しいと思い質問しました。

306 :デフォルトの名無しさん:03/05/21 00:59
>>305の用途だとSleep/WaitFor〜は使いませんよね?

307 :デフォルトの名無しさん:03/05/21 01:10
>>305
それならそうとはじめから書け。
あまり感心しないぞ。

308 :デフォルトの名無しさん:03/05/21 01:36
>>278
Set oWMP = CreateObject("WMPlayer.OCX.7" )
Set colCDROMs = oWMP.cdromCollection

if colCDROMs.Count >= 1 then
  For i = 0 to colCDROMs.Count - 1
    colCDROMs.Item(i).Eject
  Next
End If

ダサッ!For Each 使えよ。

309 :デフォルトの名無しさん:03/05/21 02:06
>>308
(´-`).。oO(…使えたかなぁ?)

なんか前やってみてダメだった記憶があるんだ

310 :デフォルトの名無しさん:03/05/21 02:32
>>305
PeekMessageでメッセージが無かったらOnIdleを呼んでからWaitMessageしる

311 :デフォルトの名無しさん:03/05/21 02:44
int CWinApp::Run(void)
{
 bool bIdle;
 long lCount;
 MSG Msg;

 bIdle = true;
 lCount = 0;



312 :デフォルトの名無しさん:03/05/21 02:44
 while(1){
  if (::PeekMessage(&Msg, NULL, 0, 0, PM_NOREMOVE)){
   if(!::GetMessage(&Msg, NULL, 0, 0))
    break;

   if(!this->PreTranslateMessage(&Msg)){
    ::TranslateMessage(&Msg);
    ::DispatchMessage(&Msg);
   }

   bIdle = true;
   lCount = 0;
  }
  else if(bIdle){
   if(!this->OnIdle(lCount))
    bIdle = FALSE;
   else
    ++lCount;
  }
  else
   ::WaitMessage();
 }

 return Msg.wParam;
}


313 :デフォルトの名無しさん:03/05/21 02:47
bool CWinApp::PreTranslateMessage(MSG *pMsg)
{
 return false; // trueを返すとディスパッチしない
}
bool CWinApp::OnIdle(LONG lCount)
{
  return false; // trueを返すと処理を続ける
}


314 :デフォルトの名無しさん:03/05/21 02:57
おっと間違い

>>if(!::GetMessage(&Msg, NULL, 0, 0))
>>break;
if(Msg.message == WM_QUIT)
 break;


315 :デフォルトの名無しさん:03/05/21 03:07
たびたび訂正

>>if(Msg.message == WM_QUIT)
>> break;

↑にすると動作がおかしくなる
↓のままでよかった

if(!::GetMessage(&Msg, NULL, 0, 0))
 break;


316 :デフォルトの名無しさん:03/05/21 05:33
みなさん、JPEGの保存てどうやってますか?
標準APIじゃでいないよね?ライブラリは何使ってる?

317 :名無し@沢村:03/05/21 05:42
libjpeg
GDI+

318 :316:03/05/21 06:03
http://www.smalleranimals.com/jpegfile.htm
のを試したんだけど、RGBのバッファから作成する方法が変な動作するんで
他のを使おうかと迷ってる。

DGI+は、↓にあるのを参考にやったら固まりまくったんで
抵抗あるっす。
http://user.ecc.u-tokyo.ac.jp/~rr26303/develop/gdiplus/gdiplus.html


319 :デフォルトの名無しさん:03/05/21 08:52
フォルダを選択するダイアログってありますが
そのダイアログにフォルダを作成するボタンつきのが
ありますよね。
あれってどうやったらできるのでしょうか?

320 :デフォルトの名無しさん:03/05/21 09:10
>>319
CreateWindowでボタンを直接作成、ダイアログをサブクラス化してメッセージを処理。

321 :デフォルトの名無しさん:03/05/21 09:23
>>274-275
設定の衝突を避ける方法は
MSDNにも載っていないことが分かってないDQN発見。

322 :319:03/05/21 11:10
>>320
なるほどー
やってみまつ

323 :デフォルトの名無しさん:03/05/21 12:42
>>316

VCL


324 :デフォルトの名無しさん:03/05/21 14:06
>>315
>動作がおかしくなる
PeekMessageのPM_NOREMOVEをPM_REMOVEにすればいいんでないかい

325 :305:03/05/21 14:54
>>310>>311
ありがとうございます。WaitMessageがキーのようですね。
それで検索したところhttp://msdn.microsoft.com/library/en-us/dnwui/html/msdn_getpeek.asp
のようなページもみつかりました。(ページの一番下の内容)
>>311さんのはMFC実装のようにアイドル処理をやめたりメッセージをディスパッチする前に
何かしたりと、より細かく制御できるというものですね?
自分の用途の場合は>>310さんの方法で十分かもしれませんのでこちらでいきたいと思います。

326 :デフォルトの名無しさん:03/05/21 17:43
広末涼子はアイドルか田舎

327 :デフォルトの名無しさん:03/05/21 18:10
>>326 ?

328 :デフォルトの名無しさん:03/05/21 18:42
>>311
一生懸命書いて憐れというかアホだな

329 :デフォルトの名無しさん:03/05/21 18:53
プリンタのspooler設定を自分でしなければいけないのはけっこう妙な仕様の気もするが
下位APIなら当然か…

>>325
WaitMessageのかわりに
MsgWaitForMultipleObjectsでタイムアウト値を指定すれば
ある程度定期的にOnIdleを実行できる
別にタイマでもいいけど

330 :デフォルトの名無しさん:03/05/21 21:39
editorの窓の中に行番号ふるにはどうしたら
いいですかね。
もしかしたら、別窓

331 :デフォルトの名無しさん:03/05/21 21:55
■ VisualC++(MFC限定)相談室 MFC7.dll■
http://pc2.2ch.net/test/read.cgi/tech/1047949606/l50

332 :デフォルトの名無しさん:03/05/21 22:36
ReadProcessMemoryの第2引数に渡す
ベースアドレスと言うのはどういうものなのでしょうか?

恥ずかしながら、とあるエロゲーのデータを個人的に
変えてみたくて色々調べたのですが、どうも良く分からなくて。
GameHackというシェアウェアの試用版で、目的の箇所の
アドレスっぽいのは分かったのですが、これをそのまま使っても取得できませんでした。
(「メモリロケーションへのアクセスが無効です」と出ます)

昔で言うオフセットとセグメントみたいなのが必要なのか、
あるいは0x400000辺りを引かなきゃとか・・・、
そのツールのアドレスが汎用的では無いのか・・・
自分なりに調べたのですが、さっぱりでして。

厨房エロパワー丸出しですが、本人至って真剣です。レス頂ければ幸いです。

333 :デフォルトの名無しさん:03/05/21 23:15
DWORD val;

val=1;
if(WSAIoctl(sock,SIO_RCVALL,&val,sizeof(val),NULL,0,&d,NULL,NULL)==SOCKET_ERROR){
 printf("WSAIoctlErr:%d\n" ,WSAGetLastError());
}

を実行するとWSAEINVAL(10022)が帰って来るんですが、何故でしょうか?
unsigned intでやっても同じエラーです。どなたかヒント頂けないでしょうか?

334 :デフォルトの名無しさん:03/05/21 23:23
>>333
アドミニ権限は?

335 :デフォルトの名無しさん:03/05/21 23:25
エロは最大のモチベーションなり

336 :デフォルトの名無しさん:03/05/21 23:36
>>334
レスthx
当然Administratorです。
WinXP/Win2000でテストしましたが、結果は同じです(´・ω・`)

337 :デフォルトの名無しさん:03/05/21 23:37
Windowのサイズ変更をある単位ごとに制限する方法がよく分かりません。
つまり、例えば枠を掴んで8pxごとにカクカクとサイズを変えるような…

338 :デフォルトの名無しさん:03/05/21 23:45
ウィンドウフックしてサイズ変更捕まえる。

339 :デフォルトの名無しさん:03/05/21 23:59
WM_WINDOWPOSCHANGINGで弄るとか。

340 :デフォルトの名無しさん:03/05/22 00:06
WM_SIZINGとか

341 :デフォルトの名無しさん:03/05/22 00:17
>>335
まったくです<(*´∀`)
帰ってまでPCに向かうのは久しぶり
しかし、やはりレス無いですねぇ…

>>337
340さんも仰ってますが、WM_SIZINGで
wParamの値(WMSZ_RIGHTとか)を調べて、
場合分けでサイズ変えてくのが良いかも

lParam(=LPRECT)の値を変えると、そのままウィンドウサイズになりまする

342 :デフォルトの名無しさん:03/05/22 01:46
>>332
普通に読みたいアドレスを渡すだけだよ。
他の引数に問題あるだけかと。
そのプロセスに対してアクセス権はあるの?

343 :デフォルトの名無しさん:03/05/22 06:28
>>342
いやはや、おつき合いありがとうございます。

PROCESS_ALL_ACCESSで開いてはいます。
しかし、見当違いの値が入ってるとかならともかく、
エラーがでるってことは、仰るとおり他がダメそうですねぇ。

普通のアドレスで良いと、分かっただけでも助かりました。
もう一度ハァハァしながら見直してみます。レスありがとうございました。

344 :デフォルトの名無しさん:03/05/22 13:31
そもそもアドレスが間違っているのではないかと…
あるいはnSizeがおかしいとか(0だとエラーになるのかな?)

345 :デフォルトの名無しさん:03/05/22 18:18
質問ですが、
InsertMenu等でシステムメニューを追加したのですが
その追加したメニューにサブメニューって作る事はできますか?

346 : :03/05/22 18:43
どうでもいい事なんだがテンプレの、その3へのリンクが間違ってるぞ。
Build5から代々Duild11まで気付かないのは、それだけ過去ログを見ない人が多いのか・・・
正しくは
http://pc.2ch.net/tech/kako/1017/10170/1017072275.html

で過去ログさらっと見たところ無かったので質問させてください。
名前付きmutexの名前一覧を取得する方法はありますか?
何か過去ログ見ると、SPYでmutexの文字列見つけて・・・っていうのが
あったので、SPYで出来るんならAPIがあると思うんですが。。。

347 : :03/05/22 18:48
>>345
CreatePopupMenu()でサブメニュー作る。
で InsertMenuItem() でメニューにサブメニューを追加、かな?

348 :デフォルトの名無しさん:03/05/22 19:00
メニューバーとツールバーの境界線を消す方法は無いですか?
メニューを付けずにツールバーだけを付けたウィンドウの場合、
あの境界線が見えてしまってかっこ悪いです。

349 :デフォルトの名無しさん:03/05/22 19:04
>>347
ありがとうございます。
早速試してみます。

350 :デフォルトの名無しさん:03/05/22 21:22
spy++のファインダーのアイコンですが、
ドラッグして他のウインドウの上にあわせたりできますよね
あれってどうやって実現してるんですか?


351 :デフォルトの名無しさん:03/05/22 21:46
>>350
多分だけど、ドラッグされたらカーソルをファインダーのアイコンに変えて
逐一WindowFromPointあたりの関数使ってターゲットされてるウインドウを取得して
そのウインドウにドラッグ判定させて枠表示・・・みたいな感じじゃないかなぁ
Spy++の中身見てみないと分からないが

352 :デフォルトの名無しさん:03/05/22 22:38
>>350
猫にそのものズバリが有ったりする

353 :デフォルトの名無しさん:03/05/23 15:42
Windows2000やXPでタスクトレイに吹き出し型のメッセージボックスって
出せますよね。
あれをやりたいのですが、参考になるサイトとかありませんでしょうか?

354 :デフォルトの名無しさん:03/05/23 16:22
http://msdn.microsoft.com/library/en-us/shellcc/platform/commctls/tooltip/usingtooltips.asp?frame=true
下のほうにあるよ。

355 :デフォルトの名無しさん:03/05/23 17:29
>>354
さんくす。やってみます。

356 :質問:03/05/24 01:18
質問です。
親窓に子窓をはりつけて、子窓のウィンドウプロシージャ内で
WM_KEYを待っているのですが送られてきません。親窓に送られて
いるようです。マウスイベントは子窓で受け取れているのですが、
キーイベントはどうしたら受け取れますか?

357 :名無し@沢村:03/05/24 02:22
>>356
SetFocus()

358 :デフォルトの名無しさん:03/05/25 15:35
FILE_FLAG_DELETE_ON_CLOSEって
後から取り消すことはできないのですか?

359 :デフォルトの名無しさん:03/05/25 21:43
ハードリンクしてもだめ?

360 :デフォルトの名無しさん:03/05/25 22:58
>>671, >>681
Digital Mars C++がメインでOpenWatcomも入れてる。

OpenWatcomはコンパイラの他にIDE, vi風エディタ(日本語非対応),
アセンブラ, obj逆アセンブラ, リソースエディタと一通りそろっている。

各コンパイラの詳細は専用スレで聞いた方が早い。

タダで使えるBorland C++ part2
http://pc2.2ch.net/test/read.cgi/tech/1030493157/l50
OpenWatcom C++
http://pc2.2ch.net/test/read.cgi/tech/1033433728/l50
"Code of the Nerds" Digital Mars C/C++
http://pc2.2ch.net/test/read.cgi/tech/1044210976/l50
MinGWを使おう
http://pc2.2ch.net/test/read.cgi/tech/1042611308/l50
GCCについて part2
http://pc2.2ch.net/test/read.cgi/tech/1046179115/l50
タダで最強!フリーC/C++コンパイラ
http://pc2.2ch.net/test/read.cgi/tech/1035882599/l50

361 :デフォルトの名無しさん:03/05/25 22:59
ぎゃあ、誤爆した・・・
スマソ。

362 :デフォルトの名無しさん:03/05/26 12:08
VisualC++のWin32 ApplicationでRECT,POINT,SIZEの構造体をグローバル変数
として使うのは無理なんでしょうか?(関数内では使えることを確認してます)
インクルードファイルがwindows.hだけではだめとか?

363 :デフォルトの名無しさん:03/05/26 12:53
>>362
できる。
なぜ、できないと思ったのかは知らんが・・・

364 :デフォルトの名無しさん:03/05/26 12:55
ソンナおかしなことはないと思う。

365 :デフォルトの名無しさん:03/05/26 13:38
ハンドル、デバイスコンテキスト
この二つの言葉の意味を教えてください。

366 :デフォルトの名無しさん:03/05/26 14:00
ハングルと出歯亀コンテストの別名です

367 :デフォルトの名無しさん:03/05/26 14:04
デバイスコンテキストのハンドルが必要になるファンクションとはどういったものですか

368 :デフォルトの名無しさん:03/05/26 14:14
描画関連色々

369 :デフォルトの名無しさん:03/05/26 14:15
デバイスコンテキストに対して何らかの操作を行うもの。

370 : :03/05/26 15:16
>>365
ハンドルってかなり抽象的だよね。何にでも使えるし。
ようするに、ある何かのデータ空間の1つのデータに対する一意なindexの事だよ。

371 :デフォルトの名無しさん:03/05/26 15:34
ハンドルっていうのは、車に付いてるハンドルと同じだよ
その車のハンドルが分かれば、その車を操作できるようになるよ

372 :デフォルトの名無しさん:03/05/26 15:49
netapi32.dllを動的リンクして
lngReturn = NetMessageBufferSend(NULL,address,fromname,(BYTE *)msg,sizeof(WCHAR) * lstrlenW(msg));
とした時にlngReturnの値がAPI本と合いません。
相手(送信先)が存在しない場合にlngReturn == 2273になるはずですが
225が帰ってきます。
何故でしょう?



373 :デフォルトの名無しさん:03/05/26 17:09
デバイスコンテキストハンドルのビギンペイントが
ゲットディーシーの意味など分かりやすく説明してください
ゲットディーシーが何をしてオブジェクトと構造体の関係なども教えてください
helpみろとか自分で調べろみたいな荒らしは放置でよろしくお願いします

374 :動画直リン:03/05/26 17:13
http://homepage.mac.com/hitomi18/

375 :デフォルトの名無しさん:03/05/26 17:23
>>373
ネタにひねりがない

376 :デフォルトの名無しさん:03/05/26 17:27
MessageBoxで表示されるウィンドウの右上の閉じるボタンを灰色(無効)にするにはどれを指定すればいいんでしょうか

377 : :03/05/26 17:36
>>373
なるほど、高度な釣りとはこうやるのか。
質問の回答ではないけどマジレスすると、
「何が分からないのか分かってから質問を書く」
「何から何まで全ていっぺんに教えてもらおうとする」
事はしない方がいいと思うよ。社会でもネットでも。

378 : :03/05/26 17:37
「何が分からないのか分かってから質問を書く」

「何が分からないのか分かってないのに質問を書く」

379 :デフォルトの名無しさん:03/05/26 17:41
http://www.kenmon.net/

これってアリ?



380 :デフォルトの名無しさん:03/05/26 18:02
>>373
簡単に言うとHDCを値を返すもの。
あとの1H5Wは自分で調べろ。
Google逝け。
 >>377-378の言うとおりだ



381 : :03/05/26 18:03
ビットマップのフォーマットを考えた奴は誰ですか?
爆弾を投げつけたいです。

382 :デフォルトの名無しさん:03/05/26 18:07
>>381
どうぞ

383 :デフォルトの名無しさん:03/05/26 18:17
>>379−383

384 :362:03/05/26 19:10
POINT giko = {2, 2};
だとうまくいきました.

POINT mona;
giko.x = 2;
giko.y = 2;
だとerror C2501,C2371が出るのは正常なんでしょうか?

385 :デフォルトの名無しさん:03/05/26 19:20
>>384
gikoなのかmonaなのかはっきりせい。…というのはどーでもいいが、
グローバルでは変数/関数の"宣言"以外のことはできない。
> giko.x = 2;
> giko.y = 2;
代入とか禁止。

386 :デフォルトの名無しさん:03/05/26 19:21
MessageBoxで表示されるウィンドウの右上の閉じるボタンを灰色(無効)にするにはどれを指定すればいいんでしょうか

387 :362:03/05/26 19:25
>385
なるほど.ありがとうございますた.
#monaはgikoの間違いでした.スマソ

388 :デフォルトの名無しさん:03/05/26 20:39
>>379
誤爆なんかな?
でも、
・例えば検問を知らずにシートベルトしない
・検問をしているのを知っているので、せめてその間はシートベルトする
では、どちらが本当に正しいのか。

389 :デフォルトの名無しさん:03/05/26 20:43
VC.NET みたいなインターフェースって
どんな風に実装されているの?ポインタだけでもいいんで教えてください。

390 :デフォルトの名無しさん:03/05/26 22:25
質問おながいします。m(__)m
ウィンドウのクライアント領域を任意に操作することは
できるのでしょうか?
例えばコントロールで上下左右に10ピクセルの非クライアント領域
を設けてそこはPGから触れないようにしたいのですが。。。

391 :デフォルトの名無しさん:03/05/26 22:44
>>390
描画の制限だけならSelectClipRgn

392 :390:03/05/26 22:48
>>391
レスありがとうございます。
PGにはあくまで左上を原点として描画させたいので、できれば
リージョンではなくクライアント領域を変更したいのですが。。。


393 :デフォルトの名無しさん:03/05/26 23:00
>>392
WM_NCシリーズで色々するんじゃなかったかな。
とりあえずクライアント領域のサイズ変えるのはWM_NCCALCSIZE。

394 :デフォルトの名無しさん:03/05/26 23:06
>>392
それではSetViewportExtEx とか SetWindowExtEx とか。

395 :394:03/05/26 23:10
394を訂正
SetViewportOrgEx か SetWindowOrgEx

396 :390:03/05/26 23:21
>>393
スゴイ!APIではなくてWMなのですね。MSDNでも日本語訳のSDKドキュメント
がなく全く知りませんでした。

>>394-395
クライアント領域を触らずに実現する方法もあるんですネ。
PGはクライアント、非クライアントを区別せず、ただDCに
描画するだけなので、十分にいけそうです。

両方の方法で試してみたいと思います。
レスをくださった皆さんどうもありがとうございました。m(__)m

397 :デフォルトの名無しさん:03/05/26 23:23
ネットのバイト見つけた。バナー収入登録したら1000円くれるってさ。
http://members.goo.ne.jp/home/madcap0  

398 :デフォルトの名無しさん:03/05/26 23:27
>>396
WM(Window Message)はAPIに送るメッセージ(定数)。てか、釣られちゃった?

399 :デフォルトの名無しさん:03/05/26 23:29
>>398
?

400 :390:03/05/26 23:35
>>398
いえ、僕の書き方が紛らわしかったです。
クライアント領域に十分なウィンドウサイズを計算する
AdjustWindowRect()みたいな関数があるので、クライアント領域
サイズを変更するSetWindowRect()、SetClientRect()みたいな関数
もあるのかと思ったもので。。。


401 :372:03/05/27 00:53
372ですが、どなたもおわかりになりませぬか、残念
失礼しました<m(__)m>

402 :デフォルトの名無しさん:03/05/27 01:22
「ご迷惑をおかけして申し訳ありません」のエラーウィンドウを意図的に出すことってできますか?

403 :デフォルトの名無しさん:03/05/27 01:32
>>402
RaiseException

404 :デフォルトの名無しさん:03/05/27 01:59
ありがとうございます。さっそく調べてやってみます

405 :デフォルトの名無しさん:03/05/27 03:14
コマンドプロンプトに文字列を表示するにはどうすればよいのでしょうか。

HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
if(hConsole != INVALID_HANDLE_VALUE){
 TCHAR szMessage[] = "hello";
 DWORD dwWritten;
 WriteFile(hConsole, szMessage, lstrlen(szMessage), &dwWritten, NULL);
}

このようなプログラムをコマンドプロンプトから実行しても、dwWrittenは0で
何も表示されませんでした。

406 :デフォルトの名無しさん:03/05/27 03:45
subsystemはconsoleでないといかんよ。

407 :405:03/05/27 05:40
>>406
てことは普通にexeをダブルクリックするとGUIアプリ、DOS窓から起動するとコンソールアプリ、
といったようなプログラムは不可能ということですか・・・ガクリ

408 :デフォルトの名無しさん:03/05/27 06:22
ふつうに起動すると、GUIアプリ、
DOS窓から起動すると、「別のDOS窓を開く」コンソールアプリは
可能かもしらんが。

409 :デフォルトの名無しさん:03/05/27 18:41
他のスレから誘導されてやってきました。
よろしくおながいします。

DOS窓が起動しないコンソールアプリを作りたいのですが、
可能でしょうか。可能でしたら、ぜひやり方を知りたいのですが…。
VC++6.0です。

410 :デフォルトの名無しさん:03/05/27 18:57
MFC-MLにも同じような質問が来た罠

411 :デフォルトの名無しさん:03/05/27 19:01
>>409
AppWizardで「ダイアログアプリケーション」のスケルトンを作成し、CxxxApp::InitInstanceの
dlg.DoModal()付近をばっさり削除。

412 :デフォルトの名無しさん:03/05/27 19:22
hBitmap = LoadBitmap(hInst, "MYBMP");

猫でもわかるプログラミングでこのように使われていたのですが、
どうもこれではビットマップのハンドルが得られないみたいなんです。
何が間違ってるんでしょうか、どなたかアドバイスをお願いします。m(_ _)m

413 :デフォルトの名無しさん:03/05/27 19:36
>>412
http://www.microsoft.com/japan/developer/library/jpgdipf/_win32_loadbitmap.htm

"MYBMP"はリソース名
IDB_BITMAP1はリソースID、おわかりか?

しかし何ゆえ"IDB_BITMAP1"を"MYBMP"に変更したんだ?
それじゃ的確なレスは得られないぞ。

414 :412:03/05/27 19:45
失礼、猫でもわかるプログラミングさんの記載をそのまま書いてしまいました。
しかしIDB_BITMAP1にしてもうまくいかないです……どうしてでしょうか。

hBitmap = LoadBitmap(hInst, "IDB_BITMAP1");

415 :デフォルトの名無しさん:03/05/27 19:48
>>414
お前少しは読め。

416 :デフォルトの名無しさん:03/05/27 19:48
>>414
引数の意味がわかってないと思われ。

417 :デフォルトの名無しさん:03/05/27 19:52
>>414
413のリンク先のパラメータのとこ見てみ。

418 :デフォルトの名無しさん:03/05/27 19:58
>>414
エラーコードくらい調べろ。

419 :デフォルトの名無しさん:03/05/27 20:05
現在、小型のweb用の小型アクティブXを作成しています。
現在は、IPictureを用いて画像を読み込んでいます。

要件
1.IE5.01以降がインストールされているwindowsマシン上で動作すること。
2.PNGをHDCに書き込めること。
3.サイズが極力小さいこと(20kB位)。
4.できれば、IPictureのものは拡大縮小するとジャギーが目立つので目立たないよ
うにしたい。
5.jpeg、gifも表示したい。

以上のことをするには、windows内の機能を使うしかないと思っています。
IEはPNGを表示することが可能ですので、IEコンポーネントを使えばできそうなので
すが、、、。

なにか、ご存知の方いらっしゃいましたら、ご教授ください。
よろしくお願いします。


420 :デフォルトの名無しさん:03/05/27 20:07
CloseHandle(>>414);

421 :デフォルトの名無しさん:03/05/27 23:40
>>407
XPならAttachConsoleでできるかも

422 : :03/05/28 00:20
>>407
現在の状態がコンソールかGUIかが分かれば、
それに合わせて別々のexeを起動させればいいんだけどな。
そういうAPIあるのかな。

423 :デフォルトの名無しさん:03/05/28 00:30
判断するプログラムはどっちで(console/windows)つくるの?

424 :デフォルトの名無しさん:03/05/28 06:02
フォアグラウンドウィンドウがコマンドプロンプトならば、CUIを起動
そうでなければGUIを起動で良いんじゃないの?
Launch.exe:起動時のフォアグランドウィンドウによってGUI.exe或いは
GUI.EXEを起動して終了するプログラム
CUI.EXE:CUIベースのプログラム
GUI.EXE:GUIベースのプログラム
COMMON.DLL:CUI.EXE,GUI.EXEで共通に使う

425 :デフォルトの名無しさん:03/05/28 06:33
それじゃあ解決にならないよ。問題の先送り。

1.Launch.exeがsubsystem:consoleのばあい。
1.1.cmd.exeから起動した場合 ..OK
1.2.explorerから起動した場合
  Launch.exeの起動準備として、コマンドプロンプトが出現する..NG

2.Launch.exeがsubsystem:windowsのばあい
2.1.cmd.exeから起動した場合
  launch.exeの起動準備として、現在のコマンドプロンプトと切り離される..NG
2.2.explorerから起動した場合 ..OK

426 :吉岡美穂:03/05/28 08:13
>>419
GDI+なんかどうかしら。
gdiplus.dllは1600kB以上あるけど。

427 :デフォルトの名無しさん:03/05/28 08:26
>>414

禿げしくガイシュツ

428 :デフォルトの名無しさん:03/05/28 09:30
>>426

GDI+は上司にだめといわれてしまいました。
IEは、IMGUTIL.DLLと、PNGFILT.DLLを使っていることはわかったのですが、
情報が公開されていないので、Dependency Warkerでこんな関数があるのかぁ。
ってところまでしか調べられませんでした。
PNGFILT.DLLもどっかのサイトでみたら,
zlibを使っているようなことは書いてありました。
MSがサポートしていないのであれば、やめたほうがよいといわれたので、
とりあえず、普通に、zlibとlibpngを入れて、エンコード部分は
削ろうかなぁと考えています。



429 :デフォルトの名無しさん:03/05/28 09:37
>>419

ATLのCImageにpng/jpg/gif読み書き機能が一通りあったはず。
拡大縮小は、HDCとってGDIでやれば良い(SetStretchBltModeを
忘れずに)。


430 :デフォルトの名無しさん:03/05/28 09:44
429
CImageはGDI+だが。

431 :409:03/05/28 10:51
>>411
上手く行きました。
ありがとうございました。
助かりました。

432 :デフォルトの名無しさん:03/05/28 10:55
>>425
subsystem:windowsで作って、コマンドプロンプトから起動されたことさえ判別できれば、
AttachConsoleで親のコマンドプロンプトに再接続できる。

433 :デフォルトの名無しさん:03/05/28 10:59
XPならね・・・

434 :デフォルトの名無しさん:03/05/28 11:19
HelloWorldアプリケーションを作って
WM_CREATE:で以下の処理をしたのですが、バルーンツールチップが
表示されません。どこがまずいのでしょうか?

InitCommonControls();
hwndToolTips = CreateWindow(TOOLTIPS_CLASS,
NULL,
WS_POPUP | TTS_NOPREFIX | TTS_BALLOON,
0, 0,
0, 0,
NULL, NULL,
hInst,
NULL);
if (hwndToolTips)
{
// Do the standard ToolTip coding.
TOOLINFO ti;

ti.cbSize = sizeof(ti);
ti.uFlags = TTF_TRANSPARENT | TTF_CENTERTIP;
ti.hwnd = hWnd;
ti.uId = 0;
ti.hinst = NULL;
ti.lpszText = "TEST";

GetClientRect(hWnd, &ti.rect);
SendMessage(hwndToolTips, TTM_ADDTOOL, 0, (LPARAM) &ti );
SendMessage(hWnd, TB_SETTOOLTIPS, (WPARAM)hwndToolTips, 0);
}


435 :デフォルトの名無しさん:03/05/28 12:11
>>432
再接続はできるけど
cmd.exeはすでにプロンプトに戻ってるから何か不具合あるかも

436 :デフォルトの名無しさん:03/05/28 12:20
cmd.exeが仮にWaitForInputIdleしてくれてたら、
タイムアウト前に接続できればうまいことやってくれるんじゃ?

…今度試してみよ

437 :山崎渉:03/05/28 12:27
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      山崎渉

438 :デフォルトの名無しさん:03/05/28 13:51
タスクトレイアイコンのウィンドウハンドルはどうやって取得したらよいでしょう?

439 :デフォルトの名無しさん:03/05/28 14:00
_age

440 :デフォルトの名無しさん:03/05/28 14:22
VisualC++6.0のSDKをバージョンアップしたいのですが、どこからダウンロードすればよいでしょうか?
ひょっとして既にサポート外でしょうか?


441 :デフォルトの名無しさん:03/05/28 14:55
ttp://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm


442 :デフォルトの名無しさん:03/05/28 22:36
3Dはどうやって表示するの?

443 :デフォルトの名無しさん:03/05/28 22:37
赤と青のフィルムが必須。

444 :デフォルトの名無しさん:03/05/28 22:38
いくら山盛りのWinAPIでもそこまで面倒見てくれません

445 :デフォルトの名無しさん:03/05/28 22:40
>>442

DIBSectionさえ作れば、後はGDIなりフレームバッファ直接操作なりで
何でも自由に描画・表示できるよ。


446 :デフォルトの名無しさん:03/05/28 22:56
システムフックしたツール作ってるのですが、
常駐していた状態で他のアプリケーションがでフリーズするとOS巻き込んで落ちてしまいます。
何か対策はありませんか?

システムフックは
アクティブウィンドウの変更を通知してるだけです。


447 :>>446:03/05/29 09:29
まず全裸になり、自分の尻を両手でバンバン叩きながら白目をむき
「びっくりするほどユートピア!びっくりするほどユートピア!」
とハイトーンで連呼しながらベットを昇り降りする
これを10分程続ければOK!

448 :デフォルトの名無しさん:03/05/29 10:30
スミマセン質問です
IEの選択文字の取得をしたいのですが
WM_GETTEXTが使えません。(当然なのかな…?)
クリップボード経由は可能ですがなるべく直接APIでたたきたいとおもっています。

449 :デフォルトの名無しさん:03/05/29 10:33
>>448

>>447

450 :デフォルトの名無しさん:03/05/29 10:34
>>442
擬似的に立体的に見えるように、輝度を上下させる(光の当り、影)。
2Dだろうが、3Dだろうが、所詮は点の集まり。だが、表示するまでの
計算がものすごく大変。

451 :デフォルトの名無しさん:03/05/29 12:17
なんで誰もDirect3Dって答えてあげないの?

452 :デフォルトの名無しさん:03/05/29 12:52
>>446
漏れもフックで悩んでる。
SetWindowsHookExでフックしてるんだけど
VCのデバッグモードに移行すると固まってしまう。
デバッグ時にはフックしないで開発してるんだけど
なんか、根本的な対策は無いのかな?

453 :デフォルトの名無しさん:03/05/29 16:10
>>442
Direct3D

454 :デフォルトの名無しさん:03/05/29 16:20
ほんとに教えて下さい(泣
デバイスコンテキストの説明っていうか概念ていうか・・
淡々と説明しすぎ!そういう言葉を使えばいいってのは理解したけど、
頭で想像できないんだYO!
ハンドルはなんとなーくわかってきたんだけどね・・・

455 :デフォルトの名無しさん:03/05/29 16:32
才能無い、やめろ

456 :デフォルトの名無しさん:03/05/29 16:42
才能とかじゃなくて、
検索したらいっぱい出てくるような気がするんだけど。
デバイスコンテキストの説明

457 :デフォルトの名無しさん:03/05/29 16:46
>>454
このへん、買って読め

プログラミングWindows第5版〈上〉〈下〉
http://www.amazon.co.jp/exec/obidos/ASIN/4756136001/qid%3D1054194286/250-6035787-5681835
http://www.amazon.co.jp/exec/obidos/ASIN/475613601X/qid%3D1054194329/250-6035787-5681835

458 :デフォルトの名無しさん:03/05/29 17:04
>>457
おまいが買って、教えてくれよ

459 :デフォルトの名無しさん:03/05/29 17:21
みんな飯代をうかせて本を買って勉強してるのだよ。
ネットを引けば分かる程度のこともする気力がないのかチミは

460 :デフォルトの名無しさん:03/05/29 17:24
まあ、入門者にはプログラミングWindows第5版〈上〉は本気でオススメ。
最近だとWebだけでも結構知識を得られるものだが、それでもなお一読をすすめる。
値段以上の収穫は>>461が保証してくれる。


461 :デフォルトの名無しさん:03/05/29 17:25
三年保証は別料金になりますが?

462 :デフォルトの名無しさん:03/05/29 17:52
もちろん金利・手数料はジャパネット負担ですよね?

463 :デフォルトの名無しさん:03/05/29 19:02
プログラミングWindows第5版〈上〉
タケ−し、古いし、読み図例
図書館で十分

464 :デフォルトの名無しさん:03/05/29 19:47
>>446,452
漏れも同じ事で悩んでる。フックはDLLにして使う場合が多いけど
今、WH_JOURNALRECORDでアプリの中に実装してるんだけど
ブレークポイントとか指定してデバッグモードに入ると落ちる(固まる)

でも、ここには、この問題を解決できる人がいない罠(w

465 :デフォルトの名無しさん:03/05/29 19:48
YOU IS FOOL

466 :デフォルトの名無しさん:03/05/29 19:52
>>464
あきらめてリモートデバッグしる。

467 :デフォルトの名無しさん:03/05/29 20:29
>>465
そのネタなつかしい

468 :デフォルトの名無しさん:03/05/29 20:30
YOU IS FOOD

469 :デフォルトの名無しさん:03/05/29 20:31
>>467
You is a big fool man.だったっけ?>>元ネタ

470 :デフォルトの名無しさん:03/05/29 21:47
>>442
OpenGL


471 :デフォルトの名無しさん:03/05/29 22:42
>>470
DirectXは?

472 :デフォルトの名無しさん:03/05/29 23:07
>>471
ガイシュツだからひねったんだろ

473 :デフォルトの名無しさん:03/05/29 23:14
Shell_NotifyIcon で Win2000(Shell 5.0) 以降なら
バルーンのメッセージ取れるって MSDN に書いてるけど、

試したところ WM_CONTEXTMENU, NIN_SELECT, NIN_KEYSELECT は取れるが
NIN_BALLOONSHOW とかは XP(Shell 6.0) 以降じゃないと取れません。
何かやり方あるんでしょうか?

msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/functions/shell_notifyicon.asp

474 :デフォルトの名無しさん:03/05/29 23:32
>>473
まず全裸になり、自分の尻を両手でバンバン叩きながら白目をむき
「びっくりするほどユートピア!びっくりするほどユートピア!」
とハイトーンで連呼しながらベットを昇り降りする
これを10分程続ければOK!

475 :デフォルトの名無しさん:03/05/29 23:34
>>474
これって実際にやったことある奴は何人ぐらいいるんだろうね。

476 :デフォルトの名無しさん:03/05/29 23:51
>>473
そこに書いてあるNIM_SETVERSIONとかいうのはどうよ


477 :デフォルトの名無しさん:03/05/30 01:45
スクリーンセーバーが終了したり、モニタが省電モードから戻ったりしたことを知るには
どうすればよいですか?


478 :デフォルトの名無しさん:03/05/30 06:14
最近の、このスレって
低レベルな質問->ぐぐれ or 本読め
中レベルな質問->まず全裸になり(以下略)
高レベルな質問->無視
って方向だね。
ム板の中で漏れでも住人になれる数少ないスレだよ。

479 :デフォルトの名無しさん:03/05/30 09:58
┐(´ー`)┌

480 :デフォルトの名無しさん:03/05/30 10:28
>>477
まず全裸になり、自分の尻を両手でバンバン叩きながら白目をむき
「びっくりするほどユートピア!びっくりするほどユートピア!」
とハイトーンで連呼しながらベットを昇り降りする
これを10分程続ければOK!

481 :デフォルトの名無しさん:03/05/30 12:08
遅レス申し訳ないです。ネット繋げなかったもんで。
で、参照してくださって書籍はすでに持っています。上・下両方ね。
でもわかんなくない?サイトも、たんたんとデバイスなんたらかんたらハンドルとは〜〜
とか書いてあるけど、全然頭で浮かび上がらない。どんな風にCPUが働いてOSが教えてくれるのかとか
みんな頭で絵を浮かびながらコーディングしてない?俺はそうしてるんだけど
で、マジでわかんないんすよ(泣
ご指導お願いします

482 :JOJOの奇妙なAPI:03/05/30 12:35
第1回:ウィンドウハンドル(1)
講師:吉良吉影

フウウウウウウ〜〜〜
わたしは…子供のころ…チャールズ ペゾルド の「プログラミングWindows第5版」って
ありますよね…あの本…Laoxザコン館で見たときですね。

あの「オブジェクト」が必ず持ってる識別子・・・「ウィンドウハンドル」…
あれ…初めて見た時…なんていうか…その…下品なんですが…
フフ…勃起…しちゃいましてね…
「ウィンドウハンドル」のとこだけ切り抜いてしばらく…部屋にかざってました。

(第1回終了)

483 :デフォルトの名無しさん:03/05/30 12:55
>>481
>どんな風にCPUが働いてOSが教えてくれるのかとか

そんなことを考える必要がなくていいようになってる。
今は、
「  考  え  る  な  」

最初にCをやったときに、
とりあえず「#include <stdio.h>」を書いとけ、と言われたろ?
それと一緒だ。

484 :デフォルトの名無しさん:03/05/30 13:07
>>464
グローバルフックを止めたらすべてのアプリに影響が及ぶんだから、無理だと思うのが普通でしょ。


485 :win32APIミッドナイト:03/05/30 13:22
講師:ACE後藤

>>481
windowsのウィンドウハンドルは識別子ですヨ
これからも全てのオブジェクトを指定するのはハンドルです
JAVA使ってる奴からみればハンドルなんて意味ないですヨ
でもやっぱりwin32API使う以上は必要だと思ってるワケです

各オブジェクトを確実に指定できる型でありたい
ただ ただそれだけですヨ――――

ハンドルはあってあたり前
それを特殊と思わない心なんですヨ

プログラム中どこで参照しても破綻はナイと思ってるんです
windowsというアンダーグランドな世界で
オブジェクトを指定できる型でいたいんですヨ

486 :デフォルトの名無しさん:03/05/30 14:28
>>483
さんくす。他のレスくれたみなさんもありがとー。
そうういことにしときます。すいませんでした〜

487 :デフォルトの名無しさん:03/05/30 15:01
ついに発覚、2chでレスを消す方法。
解析により、ついに管理人コマンド割り出しに成功した模様。
鯖が認識するとそのスレッドナンバーがあぼーんされる。

以下方法。
名前に『山崎渉』、メールに『ds8g15EG8h1r9R9g9d7E』。←暗号化されたパスワード
本文に、
command dell レスナンバー(ここに消したいレスナンバー記入)
end

こう記入して書き込み。
山崎って言う人はどうやらcgiなんかの管理人さんの本名らしい。
おそらく早急な対策が打たれると思うので、消したいレスがある人は急げ。

488 :473:03/05/30 15:07
>>476
レスありがとう。
NIM_SETVERSION 設定してるんですが
WinMe (5.50.4134.100) なら可能だったので
やっぱり shell32.dll のバージョンが足りない様です
5.0.3502.6144 なのに...

489 :山­崎渉:03/05/30 15:10
command dell 487
end

490 :デフォルトの名無しさん:03/05/30 21:49
>>487
dellだって。学がないね。激藁


491 :デフォルトの名無しさん:03/05/30 22:27
突っ込みどころが違う。絶対に違う。

492 :デフォルトの名無しさん:03/05/30 23:10
質問おながいします。m(__)m
Excel等でMDIの最小化、アイコン化ボタンがメニューバーにくっついて
いますが、これってどうやって実現しているのでしょうか?

493 :デフォルトの名無しさん:03/05/30 23:19
http://life.fam.cx/



494 :デフォルトの名無しさん:03/05/31 01:06
>>490
「DELete Line」の略なんだよ。多分。


495 :デフォルトの名無しさん:03/05/31 01:11
GetGlyphOutlineでアンチェリのかかったビットマップフォントを取得したはいいんですが、
その後に文字をうまくアンチェリをかけて描画することができません

これって1ビットづつチマチマ調べて描くしかないんでしょうか?
できれば例なんかいただけると嬉しいです

496 :デフォルトの名無しさん:03/05/31 02:06
>>492
? MDIの仕様に文句言いたいって事?
あそこ以外のどこに描けと...

497 :デフォルトの名無しさん:03/05/31 11:28
>>496
どうやったらそんな解釈が・・・

498 :デフォルトの名無しさん:03/05/31 11:44
>>495
テクスチャに転送してレンダリングすれば自動

499 :デフォルトの名無しさん:03/05/31 21:11
ツールバーのボタンを自力で描画したいのですが、方法がわかりません。
ボタンのウィンドウハンドルも取れないみたいですし、
どうやったらオーナードローができるのでしょうか。

500 :デフォルトの名無しさん:03/05/31 23:52
SDKプログラミングでMFCのCArrayに相当する物は用意されていないのでしょうか?

501 :デフォルトの名無しさん:03/06/01 00:50
>>499
>>500
まず全裸になり、自分の尻を両手でバンバン叩きながら白目をむき
「びっくりするほどユートピア!びっくりするほどユートピア!」
とハイトーンで連呼しながらベットを昇り降りする
これを10分程続ければOK!


502 :吉岡美穂:03/06/01 01:49
>>500
ないこともないわ

503 :デフォルトの名無しさん:03/06/01 02:11
普通C++ならSTLコンテナ使うけどあれはAPIとは何の関係もないよな。

504 :デフォルトの名無しさん:03/06/01 03:34
VARIANTの配列使うやつなかったっけ。

まあ、普通はstd::vectorだな

505 :デフォルトの名無しさん:03/06/01 21:43
VC++のCreateWindowExでリストボックスのスタイルを
dwStyle:
WS_CHILD | WS_VISIBLE | WS_HSCROLL | WS_VSCROLL | WS_TABSTOP | LBS_NOTIFY
dwExStyle:
WS_EX_CLIENTEDGE
で作成したんですがスクロールが遅いです。
MSDNライブラリの「キーワード」みたいな
高速にスクロールするリストボックスはどの指定で行うのですか?

506 :デフォルトの名無しさん:03/06/02 02:26
コンソールアプリからウインアプリSDKに移ってプログラムを組んでいるのですが、
ウインアプリだと、文字のサイズが一定でないので困っています。同じにする方法
を教えてください。

507 :名無し@沢村:03/06/02 02:44
>>506
HFONT

508 :デフォルトの名無しさん:03/06/02 02:45
>>506
フォントにはプロショーナルフォントと等幅フォントの二種類があるのじゃよ。
↓続き

509 :デフォルトの名無しさん:03/06/02 02:47
>506
どう困っているのよ?

510 :デフォルトの名無しさん:03/06/02 02:58
DLLの中の関数が提供するダイアログボックスをタスクモーダルにする

(MessageBoxでMB_TASKMODALが指定された状態と同様の効果を得る)には

どのようにしたらよいですか?


511 :デフォルトの名無しさん:03/06/02 03:13
お答えありがとうございます。

>>507
それで調べて見ると、猫の所にいけました。どこを変えれば出来るかは
分かりませんが。
>>508
TrueTipeのことですか?フォント自体にそれが決まっているのか、フォント
には関係なく、属性として与えるのかわからないです。
>>509
うまく説明できませんが、背景の色を変えた文字を使用していて、その位置
に同じバイト数の文字列を持ってきた時、コンソールなら前のがきれいに
消えて新しく表示されますが、サイズが変わって特に後のほうが小さい時は
前野が消えずに残ってしまいます。

512 :デフォルトの名無しさん:03/06/02 03:36
>>511
ま、Windowsプログラミングの基礎からやっていけや

513 :デフォルトの名無しさん:03/06/02 03:40
>>511
たとえば
「MS Pゴシック」とかがプロポーショナルフォントで、文字ごとに幅が違うの。
「MS ゴシック」は等幅フォントで、文字の幅が全部同じ。

514 :デフォルトの名無しさん:03/06/02 03:54
>>512
はい。がんがります。
>>513
CreateフォントでMS ゴシックにしてもダメでした。他のパラメータが
違うのでしょうか。
hFont = CreateFont(32,//フォント高さ
32,//文字幅
0,//テキストの角度
0,//ベースラインとx軸との角度
FW_REGULAR,//フォントの重さ(太さ)
FALSE,//イタリック体
FALSE,//アンダーライン
FALSE,//打ち消し線
SHIFTJIS_CHARSET,//文字セット
OUT_DEFAULT_PRECIS,//出力精度
CLIP_DEFAULT_PRECIS,//クリッピング精度
PROOF_QUALITY,//出力品質
FIXED_PITCH | FF_MODERN,//ピッチとファミリー
"MS ゴシック");//書体名

515 :デフォルトの名無しさん:03/06/02 03:57
>コンソールなら前のがきれいに 消えて新しく表示されますが、
>サイズが変わって特に後のほうが小さい時は
>前野が消えずに残ってしまいます。

これってプロポーショナル云々じゃなくて前回の描画領域を背景で塗りつぶせってことじゃないの?


516 :デフォルトの名無しさん:03/06/02 04:04
「サイズが変わって」の意味がどうも分からない感じ。
フォントサイズが変わる、なの?

517 :デフォルトの名無しさん:03/06/02 04:06
例えば100ポイントの文字を表示して、その上に10ポイントの文字を重ねて表示すると、
先に表示した100ポイントの文字が後ろからはみ出て見えてしまう、ということでは?

518 :デフォルトの名無しさん:03/06/02 04:14
>>515
そうです。それを解決したいのもありますが、とにかく同じサイズに表示
したいんです。他の問題点としては文字列サイズを指定したものを縦に並
べて表示していく時、ベこぼこになってしまいます。

519 :デフォルトの名無しさん:03/06/02 04:20
>>516
コンソールのはABCDEを表示、改行、abcdeと表示するとCとcは同じ位置に
表示されますよね。ただ、ウインの方は、かなりずれます。インターネット
でも同じですが。それを利用して面白いAAができたと言う利点もありますが。
ABCDE
abcde
>>517
そうです。1文字32ピクセルの"ABCDE"の上に、同サイズの"abcde"を上書き
すると、コンソールではabcdeのみ表示されますが、ウインだとabcdEと
なります。

520 :デフォルトの名無しさん:03/06/02 04:21
DrawTextで矩形を指定じゃないか

521 :デフォルトの名無しさん:03/06/02 04:25
>>519
それ見る限り、ちゃんとMSゴシックが表示されてないんじゃないかと

522 :デフォルトの名無しさん:03/06/02 04:30
あぁわかった。>>514の書体名、「MS」は全角じゃないとダメだよ。

523 :デフォルトの名無しさん:03/06/02 04:30
>>520
問題はそれではありませんでした。次に書きますが。
>>521
やってしまっていました。SelectObjectを入れ忘れていました。入れたら
出来ました。すいません。本当にごめんなさい。答えてくださったみなさま、
どうもありがとうございました。逝って来ます。

524 :デフォルトの名無しさん:03/06/02 04:32
>>522
それは大丈夫みたいです。スペースを入れまくったりしても大丈夫でした。

525 :デフォルトの名無しさん:03/06/02 04:35
システム登録済みの固定幅フォントを使うと簡単
HFONT hFont = (HFONT) GetStockObject(SYSTEM_FIXED_FONT);
HFONT hFontOld = (HFONT) SelectObject(hDC, hFont);
TextOut(〜);
SelectObject(hDC, hFontOld);


526 :デフォルトの名無しさん:03/06/02 04:45
>>525
おおっいいですね。簡単にできます。ありがとうございました。

527 :510:03/06/02 09:42
>>510
自己レスっす。
手でガリガリ書くしかないようです。
EnumThreadWindows()でウィンドウ一覧を獲得し、
自分以外のウィンドウをEnableWindow(FALSE)して解決しました。


528 :デフォルトの名無しさん:03/06/02 13:09
Windows画面(どのアプリでも)で
押されたキーボードのキーが何が押されたか監視し、
そのキーが押されたときに他のキーが押されたと認識されるやり方が解る方いますでしょうか?
よければ教えてください。

例:F12キーが押された場合CTRL+Numberキーが押された事にする。
という感じです。

529 :デフォルトの名無しさん:03/06/02 14:04
>>528
SetWindowsHookExでWH_KEYBOARDを引っかける。

530 :デフォルトの名無しさん:03/06/02 14:35
質問させてください。
任意のアプリケーションが呼び出すWin32APIを監視(?)して、
自分で作成したDLL内の関数にすりかえる方法ってあるでしょうか?
自作DLLの注入は出来ても、Win32APIを偽装することは無理なんでしょうか?

531 :529:03/06/02 14:49
>>529
訂正。
WH_KEYBOARD_LLじゃないとダメかも。

532 :名無し@沢村:03/06/02 15:25
エクセルのようなワークシートをつくるWin32APIはどれですか?

533 :デフォルトの名無しさん:03/06/02 15:31
>>532
MoveTo
LineTo
など

534 :名無し@沢村:03/06/02 18:31
>>533
MoveToとLineToの升目の中に文字や計算式を入力するWin32APIは?


535 :デフォルトの名無しさん:03/06/02 18:34
>>534
APIつーかエディットコントロールでも貼り付ければ?

536 :デフォルトの名無しさん:03/06/02 18:43
沢村の質問キタ━━━━━━(゚∀゚)━━━━━━ !!

537 :名無し@沢村:03/06/02 18:49
>>535
MoveToとLineToの間の升目の数だけエディットコントロールを貼り付けるのか?
膨大な数のエディットコントロールができるな…

538 :名無し@村沢:03/06/02 18:59
>>537
ハローワールドの次の作品作っているのかな?
期待してるよん。

539 :デフォルトの名無しさん:03/06/02 19:22
すみません、質問があります。
プロセスの使用メモリを小さくする、最も一般的な方法を教えてください。
単にウィンドウを開くだけのプログラムでも、
2MB近く消費しているようなのですが…。

540 :デフォルトの名無しさん:03/06/02 19:38
>>539
・スタートアップコードを自分で書く
・スタックを極限まで減らす

541 :デフォルトの名無しさん:03/06/02 20:07
>>539
ウインドウを作成し表示したらいったん最小化して戻す

542 :539:03/06/02 21:04
早速のお返事をどうもありがとうございます。
>>540
スタートアップコードはいじったことがありませんでした。勉強してみます。
スタックを減らすというのは、具体的には何をすればいいんでしょう…。
>>541
画面表示状態によって使用メモリが変化するんですね。これは知りませんでした。
よく考えてみると、使用メモリが小さいプロセスというのは、
ウィンドウが表示されていないものばかりでした。
タスクマネージャを見ると使用メモリが小さなものがあったので、特別な方法が
あるものと思い込んでしまったのですが、私の早とちりだったかもしれません。

543 :デフォルトの名無しさん:03/06/02 22:55
見えないダイアログを作成しようとして

case WM_INITDIALOG: {
ShowWindow(hWnd, SW_HIDE);

のようにしていますが消えてくれません。
Windowを表示しないようにするにはどうしたらいいですか。


544 : :03/06/02 23:05
Windowsの音量を調整(ボリューム)するAPIってわかりますか?

545 :デフォルトの名無しさん:03/06/02 23:07
>>532
リストビューコントロールにLVS_EDITLABELSのスタイルを指定すると
エディット可能になるよ。
LVS_EX_GRIDLINESも指定するとグリッド線が描かれる。

>>543
ダイアログがメインウィンドウだと非表示にしようとしても、勝手に表示
された記憶がある。そうでないなら、普通に消せたかと。

546 :505:03/06/02 23:53
くっ、やはり高速リストボックスは無理なのか!?

>>543
その後、UpdataWindow( hWnd );
かな?(w
スペル間違えてたらスマソ

547 :530:03/06/03 01:24
ここで聞いたのは間違いだったようです。


548 :Win32SDK勉強中 ◆Win32BkCJ. :03/06/03 01:24
>>546
うん、間違えてる。
UpdateWindowだね

549 :デフォルトの名無しさん:03/06/03 02:18
>>543
それ、俺も昔悩まされた

DoModal()ではなくCreate()を使ってウィンドウ作成すれば表示されない
表示するときはShowWindowする

それとそのウィンドウ閉じたときは
OnCancel()は呼ばれずWM_DESTROYが送られる
その後DestroyWindow()してメモリ解放


550 :デフォルトの名無しさん:03/06/03 04:00
>>547=530
APIフックなんてググればすぐに出てくると思うが?

551 :デフォルトの名無しさん:03/06/03 05:44
>>537
いま編集対象になってる升にだけあればいいんでは。
升ごとにテキストバッファを持っとかないといけないけど。

552 :名無し@沢村:03/06/03 10:12
>>530
「Advanced Windows」買え

553 :デフォルトの名無しさん:03/06/03 10:12
>>552
Windows 2000 Advanced Server?

554 :名無し@沢村:03/06/03 10:15
>>553


555 :デフォルトの名無しさん:03/06/03 10:35
>>552
Advanced には載ってない

556 :デフォルトの名無しさん:03/06/03 11:06
「画面上の座標(x, y)で左クリック」という処理をプログラム適に実行するには、
どうすればよいでしょうか?
デスクトップのハンドルを取得して、WM_LBUTTONDOWNメッセージを
SendMessageで送信してみたのですが、上手くいきません。
おおざっぱでいいので教えてください。よろしくおねがいします。

557 :デフォルトの名無しさん:03/06/03 11:07
>>543
http://pc2.2ch.net/test/read.cgi/tech/1047949606/l50

で似たような質問があった。答えもあった。

558 :デフォルトの名無しさん:03/06/03 11:11
>>556
デスクトップではなくて、メッセージを送りたいウインドウのハンドルを取得しないとダメなんじゃない?

559 :直リン:03/06/03 11:13
http://homepage.mac.com/yuuka20/

560 :デフォルトの名無しさん:03/06/03 11:13
>>556
mouse_event

561 :デフォルトの名無しさん:03/06/03 11:37
>>556 よく質問の意味が分からないのですが、位置指定なら。
const int y=100,x=100;
case WM_LBUTTONDOWN:
if(LOWORD(lParam)!=x||HIWORD(lParam)!=y)break;
hdc=GetDC(hWnd);
TextOut(hdc,x,y,"指定した位置を押しました",24);
ReleaseDC(hWnd,hdc);
break;

562 :530:03/06/03 12:12
>>552
改訂第4版に追記されてたんですね。
以前の版を持ってるんで、買いたくないんですけど・・・。
どなたかソース貼って貰えませんか?

563 :デフォルトの名無しさん:03/06/03 12:26
>>562
DLLの注入までできているなら
後はインポートテーブルを書きかえるだけじゃないか
GetProcAddressの返り値の加工も必要かもしれないが

564 :530:03/06/03 12:45
>>563
インポートテーブルの書きかえですか。
なるほど。ありがとうございます。
それくらいならAdvancedWindows買わなくてもなんとか出来そうです。
AdvancedWindowsでも同様の方法が記述されているんでしょうかね?

565 :デフォルトの名無しさん:03/06/03 18:44
タイトルの所にFPS表示させるのって
相当オーバーヘッド大きい?


566 :デフォルトの名無しさん:03/06/03 19:04
>>505
そのスタイルだけ見てわかるかw
項目が1万くらいあるっていうなら仮想リストボックス、
5億ぐらいあるんだったら仮想リストビューにしとけ

567 :デフォルトの名無しさん:03/06/03 19:17
一応。
ttp://www.codeguru.com/system/apihook.html

568 :デフォルトの名無しさん:03/06/04 02:29
>>530

ttp://www.geocities.co.jp/SiliconValley-Oakland/7565/

あと、
ttp://www.geocities.co.jp/Playtown-Domino/8282/

とかか?まぁ、クラックガンガレ


569 :デフォルトの名無しさん:03/06/04 11:42
ツリービューのノードがドラッグ中というメッセージをとらえるには
どうやったらよいのでしょうか?

570 :530:03/06/04 16:24
563>>567>>568
ありがとうございます。おかげさまで解決しました。

>>568
このように利用されているんですね。
ちなみに私はクラックではなくお仕事で使います。w

571 :デフォルトの名無しさん:03/06/04 16:54
>530
そのAPIを提供しているDLLをこういうの http://www.dependencywalker.com/ とかを
使って特定し、そのDLLに被さるDLLを作って乗っ取ればOKでは?

572 :デフォルトの名無しさん:03/06/04 18:20
質問です。
VB6 SP5
Win2000
Exe起動直後にALT+F4を押し、そこで起きるイベント(QueryUnload)時に
GetMenuItemInfoを使って閉じるメニューの情報を取得しているのですが、
うまく情報を取得することができないです。
一度メニューバーをクリックした後にALT+F4をするとうまく取得できるのですが。
起動直後にうまく情報を取得するにはどうしたら良いでしょうか?

'×ボタンのメニュー情報を取得
With Mnu
.cbSize = Len(Mnu)
.dwTypeData = String(80, 0)
.cch = Len(.dwTypeData)
.fMask = MnuM_STATE
.wID = SC_CLOSE
lngRet = GetMenuItemInfo(hMenu, .wID, False, Mnu)
End With

573 :デフォルトの名無しさん:03/06/04 22:50
>>542
SetProcessWorkingSetSize
最小化されたときはDefWindowProcか何かがこれを呼んでる

574 : :03/06/04 23:36
mixer系APIを使って、ボリュームを調整したいのですが詳しく解説しているページとかありませんか?
言語はVC++6.0でMFCのウィザードを使ってます。

575 :539:03/06/05 00:17
>>573
おお、どうもありがとうございます。
でも、これが使えるのってNT系だけみたいですね…。

576 :デフォルトの名無しさん:03/06/05 03:59
自分で作ったウィンドウの表示/非表示が変更されたことを知るにはどうすればよいのでしょう。
WM_SHOWWINDOW では表示/非表示が変更されようとしているタイミングで送られてくるので少しタイミングが早すぎます。
WM_SHOWWINDOW を DeWindowProc 関数に通した後でも変更はまだ反映されていないようです。
御存知の方どうか宜しくお願いします。


577 :デフォルトの名無しさん:03/06/05 06:49
>>576
SPYでメッセージを追え

578 :528:03/06/05 13:46
>529さま
たいへん遅くなりましたが、ご回答ありがとうございますm(_ _)m

579 :デフォルトの名無しさん:03/06/05 19:16
>>576
少し早いと思ったら、何か適当なメッセージを自分にPostしとくのはどうか

580 :デフォルトの名無しさん:03/06/05 22:47
>>576
表示ならWM_PAINTとか
でもLonghornでだめぽになりそうな予感

581 :デフォルトの名無しさん:03/06/05 23:20
>>576
WM_WINDOWPOSCHANGED
でWINDOWPOSのflagみればいい気もするが。

582 :デフォルトの名無しさん:03/06/05 23:27
ここでいいのか不安ですが質問させていただきます
WindowsでEXE単体で動くちょっとしたツールを作りました
ただちょっとだけセーブデータを保存したくなったんですが、datファイルなどをつくりたくありません
exeファイルのお尻に勝手にデータをくっつけて平気でしょうか

保存する(exeの最後にくっつける)データはおそらく文字列です

583 :デフォルトの名無しさん:03/06/05 23:32
>>577-581
ありがとうございます。
>>577 氏の発言にしたがいSPYでメッセージを追っていたところ
WM_WINDOWPOSCHANGED が目的に適したメッセージのように思えましたので
WM_WINDOWPOSCHANGED を処理する方向で実装することにしました。
こんなにもたくさんのレスどうもありがとうございました。

584 :デフォルトの名無しさん:03/06/05 23:41
>>574
ページとかは知らないけど多分mixer系APIを使う。
mixerOpenとかmixerGetLineInfoとか。

585 :584:03/06/05 23:47
と思ったらそこから先を知りたかったのね…、スマン
これくらいしか分かりません。

えーと。Windowsにはn個(大抵はサウンドカードの枚数)の
ミキサーデバイスがあって、各mixerデバイス毎にm個
(サウンドカードの種類による)のミキサーラインがあって、
とかいう概念が基本かな。

どのミキサーラインがWAVEなのかCDなのかLineInなのかというのが
サウンドカードの種類によって違ったりするので、
きっちりやるなら色んな環境でテストしないといけないとか。

586 :デフォルトの名無しさん:03/06/06 02:12
>582
答える前にdatファイルを作りたくない理由を聞きたいと思うのはオレだけかな?

587 :デフォルトの名無しさん:03/06/06 02:19
いじられたくないとか・・・

予めくっつけておいて、そこを書きかえればいいんじゃないかな。
とかいいつつできないけど。

588 :デフォルトの名無しさん:03/06/06 02:50
CreateDIBSectionでビットマップのビットへのアドレスは分かったんですけど、
ピクセルのRGBを取り出す方法が分かりません。
24bitで。

589 :586:03/06/06 02:52
偉そうに書いたけど自分も解らないです。
でも個人用に作るとしてもリビルドしたら、それまでのが消えちゃうよなぁ。
普通に考えるとマズイと思うんだが...

590 :デフォルトの名無しさん:03/06/06 04:16
平気かどうか以前に自分自身を書き換えられるの?
実行中のexeはシステムが開いていて書き込みオープンできないでしょ
>>588
24ビット.bmpのヘッダを除いた部分と同じ

591 :デフォルトの名無しさん:03/06/06 06:23
∩( ・ω・)∩モニュアゲ

592 :デフォルトの名無しさん:03/06/06 07:26
>>588

「DIBSection」で愚愚ればサンプルが見つかると思うが?


593 :デフォルトの名無しさん:03/06/06 07:51
>>586-587
本当に「ちょっとしたツール」なので、ファイルが2個になるのが嫌なだけです
ぶちゃけ「ドラッグインしたファイルを、リストとしてtxtに吐き出すツール」なのですが
出力先の設定を保存しておきたいのです

594 :デフォルトの名無しさん:03/06/06 08:08
レジストリは嫌いなん?

595 :デフォルトの名無しさん:03/06/06 08:34
普通はiniファイルかレジストリだよなー

596 :デフォルトの名無しさん:03/06/06 08:57
レジストリにせよiniにせよ、アンインストーラつきでないソフトで使うのはアレだが。
つことで、ちょっとしたツールには余計向かない気がするな。

597 :デフォルトの名無しさん:03/06/06 09:07
>>596
じゃあ、何がいいの?

598 :デフォルトの名無しさん:03/06/06 09:14
>>596
ツール自体に設定情報の削除機能を入れておけばいいだけの話
アンインストーラーなど必要ない

599 :デフォルトの名無しさん:03/06/06 09:18
じゃあ、NTFS限定やけど、NTFSストリームにでも保存したら?

600 :デフォルトの名無しさん:03/06/06 09:19
iniファイルだったら専用APIで読み書きできるし、datよりいいと思います。


601 :名無し@沢村:03/06/06 09:45
最近の流行はXMLだな

602 :_:03/06/06 09:45
http://homepage.mac.com/hiroyuki43/moe/hankaku06.html

603 :デフォルトの名無しさん:03/06/06 11:02
>>593
おいらだったらレジストリだな
インストーラやアンインストールは簡便に WSH で作っちゃえばよろし

604 :名無し@沢村:03/06/06 11:14
>>593
おまいがネット上にサーバを立ち上げて、全ユーザの設定情報を一括管理しろ。

605 :デフォルトの名無しさん:03/06/06 11:43
>>593
exeA(本体)のリソースにexeB(Aをいじくってから自殺)を仕込んどく。
exeAの終了時にTempにセーブデータとexeBを切り離し、exeA終了。
exeBはexeAの終了(ファイル書き込みが可能になる)を待って
セーブデータの内容をexeAに書き込み、セーブデータを削除してから
exeBは自殺。

どーよ?

606 :デフォルトの名無しさん:03/06/06 11:48
>>605
どう考えてもiniファイルの方が簡便。

607 :デフォルトの名無しさん:03/06/06 12:13
そういうケースなら ini ファイルだろ。
インストーラのないソフトでレジストリは勘弁してくれ。
ここらへんは個人の好みなのかもしれないが。


608 :デフォルトの名無しさん:03/06/06 12:29
>>607
おなじく。ちょっとしたツールなら迷うことなくINI。
レジストリはいくつもソフトを作ってて
しかもそれが関連してあるときしか意味が無い。

Aというソフトがインストールされていたら実行できるとかね。

ちなみにOSをよく再インストールするので
しょうもないレジストリの使い方をするソフトは
使わないようにしてる。

609 :605:03/06/06 12:36
>>606
いや、俺もそう思うけど、593の要望に遵ったまで。

610 :デフォルトの名無しさん:03/06/06 12:37
( ・ω・)∩<先生。604は何が言いたいのかわからないです。

611 :デフォルトの名無しさん:03/06/06 12:39
>>610
知障?

612 :デフォルトの名無しさん:03/06/06 12:49
>>609
593の要望は
>ファイルが2個になるのが嫌なだけです
なので、>>609はその要望を満たしていないと思うがどうか。

613 :デフォルトの名無しさん:03/06/06 12:52
設定はBIOSに保存
どうよ?

614 :デフォルトの名無しさん:03/06/06 12:55
さらに、exeBがexeAを呼び出して、
exeAはexeB終了と同時にこれを削除し
exeAは、安心して終了

615 :デフォルトの名無しさん:03/06/06 13:19
レジストリ人気ないですなぁ
オイラはちょっとしたツールにも MRU リストが欲しいからすぐ
CRecentFileList 、ファイル名以外の設定を保存したい時はそれを
派生させたクラスを使う
すると必然的にレジストリに書き込むことになるわけで

.NET の実装見てると、DLL のシェアとレジストリって実はMSも後悔
しるようにも見えるが、オイラは↑で特に困った経験はないなぁ


616 :デフォルトの名無しさん:03/06/06 13:22
>>615
開発者が困るんじゃなくてユーザが困るって話だろう。

617 :デフォルトの名無しさん:03/06/06 13:38
だからツールに使ったレジストリの消去機能を入れておけばいいんだって

618 :デフォルトの名無しさん:03/06/06 14:15
>>615
CRecentFileList使うときでもレジストリじゃなくてiniに保存できますよ。
CWinApp::InitInistance()で何かいじくればよかったはず。

619 :デフォルトの名無しさん:03/06/06 14:28
M$はWin32以降レジストリの使用を推奨しているけど、本来レジストリは
COMやOCXのためのもので一般のアプリが使うのは良いとは思わない。
(シェルはバシバシ使ってるけど)
基本的には.ini形式だろな。これが何だかんだ言って一番安全。
レジストリの場合、こわれたら他のアプリも道連れ。
.INIファイルを秘密の奥深いフォルダーに隠しておく。すべてhidden属性
にセット。同時に100個位、多数ダミーを作る。一回毎にファイル名を
変える。他人にいじられないようにする方法なんていくらでもあるだしょ。

620 :デフォルトの名無しさん:03/06/06 14:33
>>619
> .INIファイルを秘密の奥深いフォルダーに隠しておく。すべてhidden属性
> にセット。同時に100個位、多数ダミーを作る。一回毎にファイル名を
> 変える。他人にいじられないようにする方法なんていくらでもあるだしょ。

アフォということでいいですか ? > ALL

621 :デフォルトの名無しさん:03/06/06 14:41
レジストリファイルの構造わかりますか?

622 :デフォルトの名無しさん:03/06/06 15:55
>>620
同意。
593はファイルを増やしたくないと言っているのに100個もファイル増やしてどうするよ?
それに論点は「設定を何処にどのように記録するか」であって「如何にしてファイルの改竄を防ぐか」ではない。

623 :デフォルトの名無しさん:03/06/06 16:00
>>621
Windowsのバージョンによって違う。(95系、NT系では記録されるファイルから違う)
違いを吸収する為にWindows APIがある。

624 :デフォルトの名無しさん:03/06/06 16:02
>>620
いいよ。

625 :デフォルトの名無しさん:03/06/06 16:13
>>619
俺のマシン以外ならそれもあり。

626 :デフォルトの名無しさん:03/06/06 16:26
一番最初に「暗号化」を思いつかない時点で>>619は(略

627 :デフォルトの名無しさん:03/06/06 16:34
ていうか「いじられたくない」なんて誰も言ってねえし。

628 :デフォルトの名無しさん:03/06/06 16:44
暗号化と一言で言っても実際やってみればわかるが、非常に面倒で
後々必ず後悔する。真に有効な設定ファイルがどこにあるかさえ
アプリが知っていれば、設定ファイル方式にするのが良いと思われる。
ダミーを作る作らないは自由。作るのは万が一消された場合のバックアップ
の意味が大きいだろうね。
ただ意外に絶対に消されないような安全なフォルダーを発見するのが難し
い。

629 :解決補完マン ◆eW8C0JkO9w :03/06/06 16:47
>>626で(略された部分

「天才に違いない。」

630 :デフォルトの名無しさん:03/06/06 17:07
>>628
元の論点から外れるが、俺には暗号化の方が圧倒的に簡単に思える。
619のやり方ではプログラムはどうやって正しいファイルを知る事が出来るんだ?
ダミーが無数にあり、ファイル名が不定なんだぞ。

大体データの改変はユーザの自己責任で行われるもので
「絶対に消されないような安全なフォルダー」等を意識するのはおかしい。
それに暗号化が必要な情報は消されても全然困らない。
困るのは情報が漏れる事であり、そんなファイルを一般的な形式で記録するのは
危険極まりない。

631 :デフォルトの名無しさん:03/06/06 17:09
暗号化ってXORするだけで効果ある?

632 :デフォルトの名無しさん:03/06/06 17:16
ビット反転だけで十分

633 :デフォルトの名無しさん:03/06/06 17:33
>>631
昔レインガルドというネットゲーがあったが
ローカルに保存するファイルにそれをやっていて
速攻でクラックされていた

634 :デフォルトの名無しさん:03/06/06 17:36
>>631
632も言っているが、効果はある。
プログラミング出来る位の人間には解かれるかもしれないが、絶対に解けない暗号は
在り得ないので、データの重要性に応じて暗号化方式を変えるしかない。
タンスに隠すか、隠し金庫に保管するかで例えると、ビット反転はタンスに隠すかな。



635 :デフォルトの名無しさん:03/06/06 17:38
>>628
>ただ意外に絶対に消されないような安全なフォルダーを発見するのが難し
>い。

NTFS限定だけどSystem Volume Informationとか。

636 :デフォルトの名無しさん:03/06/06 18:03
皆の衆、これ使え。
http://www.ntl.co.jp/2/product/plugin/

637 :デフォルトの名無しさん:03/06/06 18:05
IPアドレスからホスト名って取得できますか?

638 :デフォルトの名無しさん:03/06/06 18:07
>>637
GetHostName()を使いなされ。

639 :デフォルトの名無しさん:03/06/06 18:10
>>619=>>629
恥の上塗り。

640 :デフォルトの名無しさん:03/06/06 18:17
629はただのネタだろ
つまらんけど

641 :デフォルトの名無しさん:03/06/06 18:17
>>637
gethostbyaddrかWSAAsyncGetHostByAddr。

642 :デフォルトの名無しさん:03/06/06 19:01
つか、レジストリ使うソフトを公開するのは止めろよな。
個人で使ってろ。

643 :デフォルトの名無しさん:03/06/06 19:43
レジストリーを使わないソフトって安いっぽいから俺は
レジストリーを使うソフトしか使いたく無いよ
レジストリーの使い方の分からない初心者がINIを使え

644 :デフォルトの名無しさん:03/06/06 20:13
変な奴

645 :デフォルトの名無しさん:03/06/06 20:35
設定をバックアップしやすいから.iniがいい。

646 :デフォルトの名無しさん:03/06/06 20:37
もう完全にスレ違いだな

647 :デフォルトの名無しさん:03/06/06 20:41
こんばんは。
さっそくですが、ファイルが変更されたのを通知してもらうような
API はありますでしょうか?
数秒ごとにファイルが変更されたかチェックするのではなく
変更を OS から知らせてもらうようなイメージです。
よろしくお願いします。

648 :デフォルトの名無しさん:03/06/06 20:43
>>605
「ちょっとしたツール」でそこまでやるのって
本末転倒というか目的のために手段を選ばないというか
手段が目的化してるというか

649 :デフォルトの名無しさん:03/06/06 20:44
>>647
FindFirstChangeNotification
ReadDirectoryChangesW
でぐぐれ

650 :デフォルトの名無しさん:03/06/06 20:47
実行可能ファイル書き換えると
ウィルスチェッカーに文句言われる可能性があるし
実行可能ファイルを読み出し専用の場所におけないし
あまりいいことないと思う

651 :デフォルトの名無しさん:03/06/06 22:13
>>649
ありがとうごじあます。
さっそくぐぐります。
とりあえずお礼だけ先に^^

652 :デフォルトの名無しさん:03/06/06 23:03
現在 SwitchDesktop でデスクトップ切り替えをするツールを作っています
はじめのデスクトップをA、新しいデスクトップをBとしたとき
デスクトップをAからBに切り替えても消えないウィンドウを作るには
どうしたら良いのでしょうか?
SetWindowPosでできそうな気がしたんだけどできない...

653 :605:03/06/06 23:14
>>648
>本末転倒というか目的のために手段を選ばないというか
>手段が目的化してるというか
なんか普段の自分の事言われてるみたい…
自分への戒めとします。ありがd

654 :デフォルトの名無しさん:03/06/06 23:33
Hook ってクラス化できるの?
他のコールバック関数みたいに
パラメータ渡せないっぽいし



655 :593:03/06/07 01:15
皆様、たくさんのレスありがとうございます
大変勉強になりました

INI→ファイルが2つになる
レジストリ→嫌いな人が多い。ちょっとしたアプリ程度でレジいじくるなー
複雑な方法→複雑(;´д`)

なかなかままならないものですね
素直に毎回うたせるかな・・・

656 :デフォルトの名無しさん:03/06/07 01:36
>>655
「ドラッグインしたファイルを、リストとしてtxtに吐き出すツール」

ショートカットにドラッグする。
本体はtxtと一緒に別のフォルダに置く。

657 :デフォルトの名無しさん:03/06/07 04:14
Win32コンソールのアプリケーションを作っています。
で、興味本位でウィンドウを隠して、インジケータに
アイコンを登録してみました。ここまではいいのですが
うまく登録メッセージを受け取ることができません。
サブクラス化もできないし、メッセージのフックも
インストールまではできるのですが結局呼ばれないようです。

だれか、いい方法知りませんか?

658 :デフォルトの名無しさん:03/06/07 09:11
>657
意味が分からん
・登録メッセージとは何か
・何のサブクラス化なのか
・何を対象にしたメッセージのフックか
ちゃんと書いてくれ
つかインジケータってタスクトレイのことか?

659 :デフォルトの名無しさん:03/06/07 09:47
しかも、コンソールアプリケーションでか?
できんの?

660 :デフォルトの名無しさん:03/06/07 10:13
質問の仕方が悪かった
HOOKした時に
SetWindowsHookExの引数に渡した、
HOOKPROC あるでしょ

あのコールバック関数内で、
GetWindowLongみたいに、
ユーザー側で指定した
パラメータ受け取ることって出来ますか?

661 :デフォルトの名無しさん:03/06/07 11:11
         ∧_∧    / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
        (´∀` )  < 教えておながい
        (    ),,,,,  \____________
     / ̄ ̄ ̄ ̄ ̄/|
    ∧ ∧     / /|
  /_(  ,,)__/ / ┌──────
 || ̄/  | ̄ ̄||/  < ヤダ 
 ||, (___/   ||    └──────
  /


662 :デフォルトの名無しさん:03/06/07 11:27
>660
GetWindowLongだったら、ウィンドウハンドルを取れていればできると思うが

663 :657:03/06/07 14:20
なんか適当に書きすぎたみたいで・・・スマソ

やっていることは

コンソールのウィンドウハンドル取得

ShowWindowでSW_HIDEを使って隠す

Shell_NotifyIconでタスクバーにアイコン登録
んで、このときにマウス関連のメッセージを受けるために
WM_APPあたりをNOTIFYICONDATA構造体の
uCallbackMessageにセットしておく

ここからが問題で
ウィンドウプロシージャは自前じゃないので
コンソールのウィンドウハンドルからサブクラス化して
メッセージをもらおうとしたけどだめ。サブクラス化できない。
(SPY++で見てもだめっぽい)

んじゃ、SetWindowsHookEx + WH_GETMESSAGEで
メッセージをフックしてみようと。今度はインストールはできるけど、
フックプロシージャを呼んでもらえないみたい。

んで、なんか他にいい方法思いつく人いませんか?

ってことなんですが、うまくできた人とかいます?(長文スマソ

664 :デフォルトの名無しさん:03/06/07 14:24
>>663
隠しウィンドウを一個クリエイトしとけばいいんでないの?
しらんけど。

665 :デフォルトの名無しさん:03/06/07 16:20
>フックプロシージャを呼んでもらえないみたい。
DLLにフックプロージャを置いてるか?

666 :デフォルトの名無しさん:03/06/07 17:14
>>655
ちなみにその手のデータを置くべきフォルダの、Microsoftによるお勧めは
shfolder.dll内のSHGetFolderPathを使ってフォルダを取得せよ、ってことになってる。
CSIDL_APPDATAかCSIDL_LOCAL_APPDATAでしょうな。

>663
>664の方法に一票。

667 :657:03/06/07 18:35
いろいろレスサンクス
>664
>666
実はすでに隠しウィンドウのほうで実装は済んでるんだけど
コンソールでできないかなぁといろいろ試してみたかったんです。
もしできたら窓作る分のリソースの消費を抑えられるし。

>665
システムフックじゃないからいらないとは思うけど、一応作ってます。
あっ、もしかしたらシステムのフックにすればいいのかな?
試してみます。

やっぱだめみたい。

どうもコンソールは普通の窓とは仕組みが違うみたい。


668 :デフォルトの名無しさん:03/06/07 19:04
どう考えても自前のWS_POPUPウィンドウ一枚のほうが
コンソールウィンドウよりリソース食わないと思うが

669 :デフォルトの名無しさん:03/06/08 11:58
ListBoxを作成したんですが、途中で複数選択出来るようにするために
SetWIndowLongを実行したんですが、内容が変更できません。
・↑を実行した直後、GetWindowLongを送ると、どうやらちゃんと書きかえられているようです。
・InvalidataRect、UpdateWindowは指定しましたが、駄目でした。

// 複数選択
::SetWindowLong( hList1, GWL_STYLE, GetWindowLong( GWL_STYLE ) | LBS_EXTENDEDSEL ) );

::UpdateWindow( hList1 );
::UpdateWindow( hMainWin );
::InvalidateRect( hMainWin, NULL, TRUE );
::InvalidateRect( hMainWin, NULL, FALSE );
::InvalidateRect( NULL, NULL, TRUE );
::InvalidateRect( NULL, NULL, FALSE );
// ↑を送っても複数選択できず


もしかして、Window自体作り直すしかない?(^〜^;

670 :669:03/06/08 12:05
>>SetWindowLong
書き間違えた。
::SetWindowLong( hList1, GWL_STYLE, ::GetWindowLong( hlist1, GWL_STYLE ) | LBS_EXTENDEDSEL ) );

671 :デフォルトの名無しさん:03/06/08 12:50
>669
仕様です。

672 :669:03/06/08 13:54
>>671
ノ---------]TOT[----------!!

673 :LBS_MULTIPLESEL:03/06/08 14:36
>>669
俺のことを忘れていないかい・・・

674 :669:03/06/08 15:04
>>673
無理でした。
最初から複数選択可能「LBS_MULTIPLESEL」or「LBS_EXTENDEDSEL」を付けて
ListBox作ると、途中変更が効かない。
何故だ……確かに、変わっているはずなのに…

675 :669:03/06/08 15:11
↑の付けたし。
一度、Windowを作ると、「複数選択」⇔「単一選択」への変更が出来ない。

676 :デフォルトの名無しさん:03/06/08 15:55
>669
だから仕様だって。仕様っつうかSDKにちゃんと
「後でスタイル変更しても無効だよ」って書かれている。
取扱説明書を読むのは基本中の基本だよ。

677 :669:03/06/08 16:55
>>676
うそ!?ほんとですか!?
どこに書いてありました?

678 :デフォルトの名無しさん:03/06/08 17:28
>>677
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/listboxes/listboxreference/listboxstyles.asp
After the control has been created, these styles cannot be modified, except as noted.


679 :デフォルトの名無しさん:03/06/08 17:33
>>678
>except as noted.
がポイントだな。

680 :デフォルトの名無しさん:03/06/08 23:18
システムフックについて質問です。
CallNextHookExはいったい何をする関数なんでしょうか?
「次のフックを呼び出す」の意味がイマイチ分かりません。
アドバイスお願いします。

681 :デフォルトの名無しさん:03/06/08 23:56
>680
ttp://www.kab-studio.com/Programing/Codian/DLL_Hook_SClass/07.html


682 :669:03/06/09 00:32
>>678-679
激しくサンクス!
勉強不足だな…オレ。英語ニガテだし。

683 :デフォルトの名無しさん:03/06/09 01:12
ユーザーインターフェースをwin32api以外のなかに無い奴とかダウンロードできますか?
あるとこ教えてください
例えば丸いつまみを回すやつとか

684 :無料動画直リン:03/06/09 01:13
http://homepage.mac.com/norika27/

685 :_:03/06/09 01:13
http://kame.kakiko.com/hiroyuki/hankaku_b01.html

686 :デフォルトの名無しさん:03/06/09 01:19
>>683
MSDNを見れば、丸だろうが三角だろうが、好きな形のカスタムコントロールを
作成できるだけの情報は詰まっていると思います。
どこが出来ないかを聞いたほうがいいのではないでしょうか?


687 :デフォルトの名無しさん:03/06/09 01:22
>>686
初めから出来てる奴を使いたいのです

688 :デフォルトの名無しさん:03/06/09 03:25
>>687
用意はされていないよ。凝ったコントロールは
そこの会社のプログラマが一生懸命作ったものだから。
そこに尋ねるのがいいと思います。

689 :デフォルトの名無しさん:03/06/09 09:46
>>687
じゃあ、スレ違い。

690 :デフォルトの名無しさん:03/06/09 13:46
>>689

これではまるで役所のたらいまわしだな(w

691 :デフォルトの名無しさん:03/06/09 14:05
Windowsで ファンの回転数等を知るにはどうしたらよいのでしょうか?
Linuxでは Lm_sensorの出力を加工して使っていました。

692 :デフォルトの名無しさん:03/06/09 16:33
みんな、だまされるな!
> win32api以外のなかに無い奴
だからつまりwin32apiのなかにある奴ってことだ!

693 :デフォルトの名無しさん:03/06/09 17:13
ASM

694 :デフォルトの名無しさん:03/06/10 00:14
InvalidateRect()とInvalidateRgn()はどう使い分けるんでしょうか??
またUpdateWindow()とは。

695 :デフォルトの名無しさん:03/06/10 00:42
Rgn+=Rect
Rgn+=Rgn

InvalidateRect(h,0,1);
SendMessage(h,WM_PAINT);

696 :デフォルトの名無しさん:03/06/10 10:14
複数のスレッドからアクセスされるintのグローバル変数にはvolatileを
指定したりしますよね。
でもなぜか基本型以外のグローバル変数にはvolatileをつけているのを見ません。
なぜですか?

697 :デフォルトの名無しさん:03/06/10 10:17
それ本当にこのスレで質問する内容なん?

698 :デフォルトの名無しさん:03/06/10 11:53
>>694
InvalidateRect()は、
指定した矩形を更新リージョンに追加する関数
InvalidateRgn()は、
指定した非矩形(矩形も可)を更新リージョンに追加する関数

UpdateWindow()は、
指定されたウィンドウの更新リージョンが空ではない場合、
ウィンドウへ WM_PAINT メッセージを送信し、
そのウィンドウのクライアント領域を更新する関数

699 :デフォルトの名無しさん:03/06/10 12:08
>>697
そういうレスはいらないです。あなたの発言でみんなが関わり合いを
避けて結局回答が得られなくなります。

省いてますがintはvolatileなのに、クリティカルセクションやイベントハンドルなどが
volatileでなかったことから質問しているのです。だから安心してください。


700 :デフォルトの名無しさん:03/06/10 12:17
>>699
いや、そういうレスもらわないように最初からそう書けよ。

701 :デフォルトの名無しさん:03/06/10 12:21
ではそういう事情ですのでよろしくお願いします。


702 :デフォルトの名無しさん:03/06/10 12:23
クリティカルセクションやイベントハンドルは
ユーザーの最適化コードが複数のスレッドから
直接触るわけじゃないから。

703 :デフォルトの名無しさん:03/06/10 12:28
回答ありがとうございます。
つまりクリティカルセクションやイベントハンドルはそれらを扱う
APIが内部でそのことを考慮してうまく設計されてるからOK。
ということでしょうか?


704 :デフォルトの名無しさん:03/06/10 12:30
Yes

705 :デフォルトの名無しさん:03/06/10 12:32
非常に良く分かりました。ありがとうございます。
どうもお騒がせしました。



706 :デフォルトの名無しさん:03/06/10 12:34
とまぁ、696はvolatileの意味を誤解したまま終わってしまったわけだが。

707 :デフォルトの名無しさん:03/06/10 12:36
それはこのスレの守備範囲外だから
このスレ的にはクリティカルセクションやイベントハンドル
についてだけ答えてればOKでしょ

708 :51:03/06/10 12:56
API が考慮していようといまいと、自分でコードを追えない部分に volatile
が必要なほど過激な最適化は、少なくともMSのコンパイラではやらないと思うが
→じゃあ逆に int の引数については API が考慮してないって事か?

709 :デフォルトの名無しさん:03/06/10 12:58
コンパイラの最適化対策とAPIの内部動作の問題は全く別なのだが
スレ違いだから誤解したままでいてもらおう

710 :デフォルトの名無しさん:03/06/10 13:01
>>708
スレ違いだから微細は省くが最適化による無限ループにはまって悩むが良かろう
>少なくともMSのコンパイラではやらないと
馬鹿は痛い目を見なければわからん

711 :デフォルトの名無しさん:03/06/10 13:16
すれ違いというルールを厳格に主張する奴は目的を見失ってるね。
例えそれが純粋にAPIに関することから始まり、最終的にはコンパイラや
OSの内部の問題になったとしてもそこまで指摘することは自然なことだし
議論としては継続しているじゃないですか。
そのことがスレッドを読みにくくするんですか。

スレ違いなどというものを厳密に守った結果、助言としては誤解を与え得る
中途半端なものになっては本末転倒だが、妙なこだわりに取り付かれた人たちに言っても無駄か。



712 :デフォルトの名無しさん:03/06/10 13:32
>>711

どこかで見たようなバカだな。

713 :デフォルトの名無しさん:03/06/10 13:41
マルチスレッドの実行では volatile よりも何よによりも
ミューテックスやセマフォでロックかけてデータアクセスの同期
取る方が先に来るんじゃ
volatile 付けときゃOKというわけではあるまい

714 :694:03/06/10 13:51
>>698
遅レスですみません。
MSDNよりずっとよくわかりました。
どうもです。

715 :デフォルトの名無しさん:03/06/10 13:58
>>712
あんたのほうがバカっぽいよ。

716 :デフォルトの名無しさん:03/06/10 14:00
よーしパパ、スレ違いな質問をしまくっちゃうぞぉ。

717 :デフォルトの名無しさん:03/06/10 14:04
>>696は明らかにスレ違いだぞ。
> 複数のスレッドからアクセスされるintのグローバル変数にはvolatileを
> 指定したりしますよね。
> でもなぜか基本型以外のグローバル変数にはvolatileをつけているのを見ません。
> なぜですか?
と問われても、基本型にvolatileの記述が強制されている訳でもないし、基本型以外に
volatileの記述が禁止されている訳でもないから、意図など分かる訳がない。
コーディングした奴に聞けとしか言えん。

> 省いてますがintはvolatileなのに、クリティカルセクションやイベントハンドルなどが
> volatileでなかったことから質問しているのです。だから安心してください。
何が安心してくださいだ。逝って良し!!

718 :デフォルトの名無しさん:03/06/10 14:04
>>711
コピペに使えるな。もらっておこう。

719 :_:03/06/10 14:13
http://homepage.mac.com/hiroyuki44/hankaku06.html

720 :デフォルトの名無しさん:03/06/10 14:42
>>715
この板から出てって下さい。ウザイです。

721 :デフォルトの名無しさん:03/06/10 15:55
>718
ワロタ。オレももらうよ。早く使える日が来ないかな。

722 :デフォルトの名無しさん:03/06/10 16:16
ファイルの存在チェックとリネームの良いやり方ってありますか?
ShellExecuteとSHFileOperationをつかってたんだけど
もっとスマートな方法がありそうなきがして…

723 :デフォルトの名無しさん:03/06/10 16:26
>>722
FindFirstFileとかMoveFileはどうよ?

724 :デフォルトの名無しさん:03/06/10 16:42
>>722
それでいいんじゃないの。
俺もFindFirstFile使うけど、別にこれがスマートって訳じゃないし。

725 :デフォルトの名無しさん:03/06/10 16:53
すいません、質問させて下さい。
Windows2000のDocuments and Settingsフォルダのパス情報を取得するAPIってあるのでしょうか?
テンポラリフォルダのパスを取得するAPIがあるのは知っているので、このAPIで取得したパスから
フォルダ階層をさかのぼっていけば取れるとは思うのですが、もっとスマートな方法をご存知でしたら
アドバイス下さい。
よろしくお願いします。


726 :デフォルトの名無しさん:03/06/10 17:07
>>725
SHGetSpecialFolderLocation
SHGetPathFromIDList
このへんを調べてみたら

727 :デフォルトの名無しさん:03/06/10 17:09
>>725
GetProfilesDirectoryはどうよ?

728 :デフォルトの名無しさん:03/06/10 17:15
>>725
SHGetSpecialFolderLocationでCSIDL_PROFILESが使えるはず・・・

729 :デフォルトの名無しさん:03/06/10 18:31
>>722
存在チェックはPathFileExists使ってる。
Windows NT/2000: Requires Windows 2000 (or Windows NT 4.0 with Internet Explorer 4.0 or later).
Windows 95/98/Me: Requires Windows 98 (or Windows 95 with Internet Explorer 4.0 or later).
だけど。

730 :デフォルトの名無しさん:03/06/10 18:35
>>722
GetFileAttributesがエラー返したら存在しない。強引かも

731 :デフォルトの名無しさん:03/06/10 19:08
>>725
CSIDL_PROFILES てのがあるではないか。
OSのバージョン知らないけど。


732 :デフォルトの名無しさん:03/06/10 19:23
つーか、普通 FileExists じゃねえの?

733 :デフォルトの名無しさん:03/06/10 19:31
>>732
どこの普通だ

734 :デフォルトの名無しさん:03/06/10 19:33
>>733
WSHじゃない?

735 :デフォルトの名無しさん:03/06/10 19:37
>>732
おまえみたいなのがいるからVB厨と言われるんだヽ(`Д´)ノウワァァァン!

736 :デフォルトの名無しさん:03/06/10 19:40
>>735
いや、VCL厨かもよ

737 :デフォルトの名無しさん:03/06/10 19:49
CSIDL_PROFILE
のすぐ上がすべてのユーザのルートだと思うよ。


738 :725:03/06/10 20:10
726、727、728、731、737さん、アドバイスありがとうございます。
まだ試してないんですが、まずはお礼を。


739 :デフォルトの名無しさん:03/06/10 20:27
>>711
同意

740 :デフォルトの名無しさん:03/06/10 21:02
迷惑だからスレ違い野郎を弁護しないでくれ

741 :デフォルトの名無しさん:03/06/10 21:14
質問お願いします。
SetBkColorで背景色を設定することは背景ブラシの色を(ブラシの種類は
そのままに)変更することと同じではないのでしょうか?
というのはRectangle()のときに内部の塗りつぶし色にSetBkColor()で
設定した色が反映されないもので...。
MSDNからでは読み取れないものでよろしくお願いいたします。

742 :デフォルトの名無しさん:03/06/10 21:22
>>741
ttp://www.microsoft.com/JAPAN/developer/library/jpgdipf/_win32_setbkcolor.htm
この関数は、CreatePen 関数を使って作成したペンで描いたスタイル付きの複数の線の
隙間を塗りつぶします。しかし、ExtCreatePen 関数を使って作成したペンで描いたスタイル
付きの複数の線の隙間は塗りつぶしません。また、SetBKColor 関数は、TextOut と
ExtTextOut の各関数の背景色も設定します。

背景モードが OPAQUE の場合、背景色は、スタイル付きの複数の線の隙間、ブラシの
ハッチ線の隙間、文字の背景を塗りつぶすのに使われます。また、ビットマップをカラー
からモノクロームまたはその逆へ変換するときにも使われます。

743 :デフォルトの名無しさん:03/06/10 21:22
SetBkColorはテキストの背景色だな

744 :デフォルトの名無しさん:03/06/10 21:30
>>742-743
テキストの背景色だけなんですね。
ずっとVBをやってたもので背景色全部だと思ってしまいました。
ありがとうございました。

745 :デフォルトの名無しさん:03/06/10 21:35
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      山崎渉




(^^)

746 :デフォルトの名無しさん:03/06/10 21:42


   彡川川川三三三ミ〜
   川|川/  \|〜 プゥ〜ン
  ‖|‖ ◎---◎|〜        / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  川川‖    3  ヽ〜      < (*´д`*)ハァハァハァ
  川川    ∴)д(∴)〜       \_______________
  川川      〜 /〜 カタカタカタ
  川川‖    〜 /‖ _____
 川川川川___/‖  |  | ̄ ̄\ \ ←>>1-1000
   /       \__|  |    | ̄ ̄|
  /  \___      |  |    |__|
  | \      |つ   |__|__/ /
  /     ̄ ̄  | ̄ ̄ ̄ ̄|  〔 ̄ ̄〕
 |       | ̄




747 :デフォルトの名無しさん:03/06/10 21:50
>>737
移動プロファイルでZ:\になっていた罠とかないの?

748 :732:03/06/10 22:41
ぐぁ、スレ間違えてたよ(;´Д`)
逝ってくる。

749 :デフォルトの名無しさん:03/06/10 23:17
CreateThreadによって作成された複数のスレッドから
外部のDLLにある関数を呼ぶときは関数の呼び出しの前後を
クリティカルセクションで囲む必要があるのでしょうか?

750 :デフォルトの名無しさん:03/06/10 23:36
>>749
ということはAPIを一つ呼ぶのにいちいちクリティカルセクションで囲んでいるのか?
クリティカルセクションを使うためには、それ自体も外部のDLLにある関数を使う必要があるが、
クリティカルセクションを使うためにクリティカルセクションを使うのか?
クリティカルセクションを使うためにクリティカルセクションを使うためにクリティカルセクションを使うのか?
クリティカルセクションを使うためにクリティカルセクションを使うためにクリティカルセクションを使うためにクリティカルセクションを使うのか?

751 :デフォルトの名無しさん:03/06/10 23:49
>>749
その関数がやることに依存するんじゃないかな。
たとえば、グローバル変数やそれに類するものに全く触れない、
純粋な意味での関数ならば囲む必要はないだろうね。

それよか、どれかのスレッドが実行してる最中に
DLLがアンロードされないように注意したほうがいいと思う。

752 :デフォルトの名無しさん:03/06/11 00:27
そのDLLの取扱説明書にスレッドセーフかどうかとか書いてませんか

753 :名無し@沢村:03/06/11 00:39
>>724
FindFirstFile()を使うのがスマートでないことは事実。

754 :デフォルトの名無しさん:03/06/11 00:44
>>753
直接、プライマリブロックを読めるはず。
プライマリブロックは10年後でも変わんないよ。

755 :名無し@沢村:03/06/11 01:00
>>754
おまいはファイルの存在を確かめるだけのために、
ハンドルを開いて閉じるのはスマートではないと思わないか?

756 :デフォルトの名無しさん:03/06/11 01:07
>>755
ごめん人それぞれ、でももっと早いのがキャッシュしているのが一番。
ごめん。

757 :デフォルトの名無しさん:03/06/11 02:25
FindFirstFile以外で、もっとスマート(?)なやり方ってあるんですか?
今までずっとこれでやってきたんだが…

758 :デフォルトの名無しさん:03/06/11 02:58
GetFileAttributes() は「属性の読み取り」権が無いと失敗するかなー
なんて思ったけど、そうでもないっぽい。

759 :デフォルトの名無しさん:03/06/11 03:37
OSがアップデートされたときなどに右下のタスクバーに吹き出しが
でるけど、あれってどうやって表示させればよいのですか?
なるべく自分で調べますので関連するキーワードをAPI名で
教えてください。

760 :デフォルトの名無しさん:03/06/11 03:45
>>759
ウ・・・ザ・・・イ・・・
シ・ン・デ・・・

761 :デフォルトの名無しさん:03/06/11 04:05
確かにあれはうざい

762 :デフォルトの名無しさん:03/06/11 04:30
>>759
禁止しする方法をユーザーが知っているなら、
教えてあげても良いぞ。

763 :デフォルトの名無しさん:03/06/11 04:37
WindowsUpdateの禁止の仕方も知らない馬鹿どもが、
WindowsUpdateがウザイからって、
タスクバーの吹き出し自体を嫌がっている。
こんなやつらはPGになってほしくない。
今PGなら今すぐやめろ。

764 :デフォルトの名無しさん:03/06/11 04:56
ナニコノヒト?

765 :デフォルトの名無しさん:03/06/11 05:05
いまコントロール上にマウスが数秒放置されたらポップアップヘルプを
表示するっていうの作ってるんですけど、マウスが数秒動かずに放置さ
れたことが分かるメッセージってあるんですか?

766 :デフォルトの名無しさん:03/06/11 07:36
>>755 >>757
つーかさ、BOOL Exist(LPCTSTR pszEntry); みたいなライブラリ作ってないの?
細かい手段云々よりそっちのがよっぽどスマートじゃないやん。

767 :デフォルトの名無しさん:03/06/11 08:05
>>766
そういうライブラリを作るためにもどんなAPIを使ってスマートに実装するかって話だろうが

768 :デフォルトの名無しさん:03/06/11 09:14
タスクトレイのポップアップメニューについて質問があります。

以下のように TrackPopupMenuEx を使って表示させようとしているのですが
ウンともスンとも言いません。
どこか記述の面でおかしい所とかあるのでしょうか?
よろしくお願いします。


Call SetForegroundWindow(frmMain.hWnd)

Dim hMenu As Long
Dim hSubMenu As Long
hMenu = GetMenu(frmMain.hWnd)
hSubMenu = GetSubMenu(hMenu, 0)

Dim TPMPARAMS As TPMPARAMS
Call TrackPopupMenuEx(hSubMenu, TPM_RETURNCMD Or TPM_RECURSE, 0, 0, frmMain.hWnd, TPMPARAMS)

Call PostMessage(frmMain.hWnd, WM_NULL, 0, 0)

769 :デフォルトの名無しさん:03/06/11 10:14
>768
戻り値を見て調べるという手順は踏まないのかい?

770 :デフォルトの名無しさん:03/06/11 11:54
>>769
マンドクサイので踏みません。

771 :デフォルトの名無しさん:03/06/11 12:20
じゃああてずっぽで答えるしかないが
TPMPARAMSは初期化してるの?

772 :デフォルトの名無しさん:03/06/11 12:21
>>765
TrackMouseEvent

773 :デフォルトの名無しさん:03/06/11 12:24
>>757
普通は GetFileAttribute() != -1 か PathIsExist()だろう。

>>766
わざわざそんなライブラリ必要ないよ。

774 :デフォルトの名無しさん:03/06/11 12:43
FindFirstFileだとディレクトリの読み取り権がなくて
Traverseしか許されてないときに失敗するね
UsersでWINDOWS\TEMPを見るときとか

775 :759:03/06/11 12:59
バルーンの実装がわかるプログラマいないよねえ
なかなか
このQ&Aではレベル高すぎたか?


776 :デフォルトの名無しさん:03/06/11 13:26
>>775
ttp://msdn.microsoft.com/library/en-us/shellcc/platform/commctls/tooltip/usingtooltips.asp?frame=true#tooltip_sample_balloon

>このQ&Aではレベル高すぎたか?
二度と来るな。

777 :デフォルトの名無しさん:03/06/11 13:40
マルチして煽って・・・最悪な厨だな

778 :デフォルトの名無しさん:03/06/11 13:42
>>775
なんかむかつくけど教えてやるよ。
http://homepage1.nifty.com/~okapon/download/delphi/tips1.html


779 :759:03/06/11 14:18
>>778
ありがとうございます
delphiのようですがvisual C++に応用できますか?


780 :デフォルトの名無しさん:03/06/11 14:23
めちゃくちゃ初歩的な事なんですが、

メッセージボックスに変数の中身を表示させるにはどう書いたらいいんでしょうか?

つまり、a=3でメッセージボックスに3と表示させたい
MessageBox(NULL, ?????? , "Title" , MB_OK);って感じなんですが・・・

781 :デフォルトの名無しさん:03/06/11 14:29
|u^=)・・・

782 :デフォルトの名無しさん:03/06/11 14:30
>>780
ちょっとやってみりゃいいじゃん
MsgBox(a)
って書くだけじゃないか

783 :デフォルトの名無しさん:03/06/11 14:34
>>782
VBとまちがえてませんか?

784 :デフォルトの名無しさん:03/06/11 14:35
>>780
面倒だけど。
char buff[256];
wsprintf(buff, "%d", a);
MessageBox(NULL, buff, ....

てやってる。もっといい方法あるのかなー

785 :デフォルトの名無しさん:03/06/11 15:36
>>783
>>780において処理系の特定はなされていない

786 :デフォルトの名無しさん:03/06/11 15:40
>>785
>>780で特定はされていないが>>783は渡し値の数からして.
VBじゃないと思ったんだろう。っていうかこのスレがWinAPIの
MessageBoxだろと思う気持ちで書いたと思うけどな>>783


787 :デフォルトの名無しさん:03/06/11 15:44
>>786
アチキなら
ShoeMessage(a);
と書いてしまいます

てか>>780で行末に;があるからC系だとわかるだろ
これだからVB厨は・・・
というツッコミでよろしいでしょうか?


788 :787:03/06/11 15:45
ウッ タイポ・・・
ShoeMessage(a); ではなく
ShowMessage(a); でした
チツレイ

789 :_:03/06/11 15:47
http://homepage.mac.com/hiroyuki44/hankaku05.html

790 :デフォルトの名無しさん:03/06/11 15:48
結局VBでもWinApi使えるからいいけどな
おれはVB使ってない。

791 :沢村:03/06/11 16:20
>>780
if (a==3) MessageBox(NULL, "3" , "Title" , MB_OK);
でいいだろ。


792 :450:03/06/11 16:44
aは実はchar a[255]とかだったら・・・

793 :デフォルトの名無しさん:03/06/11 16:48
>>450みすった
名前に入れっぱなしだったすまんそん


794 :デフォルトの名無しさん:03/06/11 17:10
>>793
オチケツ >>450でなくて>>792

795 :デフォルトの名無しさん:03/06/11 21:04
画面をクリップボードを通さずにに、
キャプチャする方法はありませんか?

見付けたページでは、サンプルソースが削除されてました。
探し方が悪いのかMSDNからも見付けられませんでした。

どなたかお教え頂ければ幸いです。

796 :デフォルトの名無しさん:03/06/11 21:24
>>795
HDC hDC = GetDC(NULL);
でスクリーン全体のDCが取れる。
このDCを送り側、メモリDCを受け側に指定してBitBltすれ。
後始末はReleaseDC(NULL, hDC);

797 :デフォルトの名無しさん:03/06/11 22:26
>788
SHOW-Aタンは元気にしてるだろうか・・・

798 :デフォルトの名無しさん:03/06/11 23:11
>>790
使えるけどMsgBoxはAPIじゃなくてVBの機能だし

799 :デフォルトの名無しさん:03/06/12 00:19
昨日からVB厨がいるな

800 :デフォルトの名無しさん:03/06/12 09:10
Win2000 VB6.0
InitiateSystemShutdownを使って
リモートシャットダウンをしたいのですが、
シャットダウンはできるものの
「安全に電源を切ることができます。」という画面が出てきて
電源が自動切断されないんです。
何か設定があるのでしょうか?




801 :デフォルトの名無しさん:03/06/12 11:31
>>800
HAL?

802 :デフォルトの名無しさん:03/06/12 11:42
>>800
それはシャットダウンさせられる側のBIOS設定ではないかと

803 :デフォルトの名無しさん:03/06/12 12:42
だから、なんでVBの質問をここでするんだよ。

804 :デフォルトの名無しさん:03/06/12 12:49
InitiateSystemShutdown使ってるからじゃない?

805 :デフォルトの名無しさん:03/06/12 13:05
VBのメソッドとWin32APIと混同したり
Win32APIの質問をVBと混同したり
最近ぐだぐだだな、このスレ。

806 :デフォルトの名無しさん:03/06/12 13:22
1つのexeを、スタートアップに組み込んで自動起動させたか、
その後にユーザーが任意で起動したかを判断する方法って
ありますか?なんかいいアイディアください。
よろしくお願いします


807 :デフォルトの名無しさん:03/06/12 13:23
何処に逝ってもVB厨はウザイな

808 :デフォルトの名無しさん:03/06/12 13:26
>>806
根本的に無理。
スタートアップのショートカットに専用のコマンドラインオプションを仕込くらいしか。


809 :デフォルトの名無しさん:03/06/12 13:38
そうするとスタートメニューからたどられたときにアウト
自動起動させるのならスタートアップではなくサービスプログラムにすべき

810 :デフォルトの名無しさん:03/06/12 13:45
>>803 >>807
APIの問題だろ。なんでそんなにつっかかる。

811 :デフォルトの名無しさん:03/06/12 13:45
>>809
ターゲットはWindows95なのです・・・

812 :デフォルトの名無しさん:03/06/12 13:51
>>810
5番目の引数の説明をよく読めや、このVB厨。

MSDNライブラリより
===============================
bRebootAfterShutdown
シャットダウン後、即座にコンピュータを再起動させるかどうかを指定します。
TRUE を指定すると、コンピュータは再起動します。FALSE を指定すると、
コンピュータは、電源を切っても安全な状態になったことを示すメッセージを
表示します。

813 :デフォルトの名無しさん:03/06/12 13:51
>>811
Windows95ならレジストリに登録するだけでサービスとして動くが何か問題が?

814 :デフォルトの名無しさん:03/06/12 13:58
>>812
いちいちVB厨ってつけるな。それに俺は第三者だ。
もうちょっと頭を冷やせ。

815 :デフォルトの名無しさん:03/06/12 14:00
>>813
それもサービスと呼ぶとは知りませんでした。
己の無知を恥じ入ります。

816 :デフォルトの名無しさん:03/06/12 14:03
登録位置がRunServicesだし

817 :デフォルトの名無しさん:03/06/12 14:30
>>814
いいんだよ、気に入らない奴にはなんでもVB厨のレッテルを貼って貶めて安心するんだから

818 :デフォルトの名無しさん:03/06/12 14:30
VB厨もウザいが、頭の悪いアンチVB厨はもっとウザいな

819 :800:03/06/12 14:33
困ったなあ…
自PCだけならExitWindowExで電源断までできるんだけどね…
APIでリモートシャットダウン(自動電源断)は無理ですか?






820 :806:03/06/12 15:43
>>808
なるほど。でもbatファイルでコマンドを指定する方法ですと、
起動時に、コマンドラインの画面がでちゃいますよね・・・


821 :デフォルトの名無しさん:03/06/12 15:54
>>820
bat処理ではなく、専用のexeスターターを作って
コマンドラインを与えれば解決できるのでは?


822 :デフォルトの名無しさん:03/06/12 15:59
だからサービスとして常駐させればいいんだって
そうすれば多重起動したかどうかで区別できる
Windows95ならレジストリに登録するだけ

823 :デフォルトの名無しさん:03/06/12 16:49
そんなもの見分けてどうするんだろ。
explorerのデスクトップとファイラの切り替えみたいなことをさせたいんだろうか。

824 :デフォルトの名無しさん:03/06/12 17:02
>>823
それもプロセスを殺してみれば分かるが、判別方法は多重起動しているか否か

825 :812:03/06/12 17:19
>>819
ExitWindowsEx()を呼び出すためのプロセスをリモートマシンで走らせといて
そのプロセスとソケット通信するってのはどうよ。

826 :795:03/06/12 19:59
>>796
ありがとうございました。
解決致しました。

827 :806:03/06/12 22:11
>>822
サービスとして常駐させる方法を教えてください!!
API教えてくだされば自分で調べます!!


828 :デフォルトの名無しさん:03/06/12 22:18
>>827
RegCreateKeyEx

829 :デフォルトの名無しさん:03/06/12 23:59
他のアプリケーションの起動や終了を検地する方法はありますか?

830 :名無し@沢村:03/06/13 00:03
>>829
SetWindowsHookEx()

831 :デフォルトの名無しさん:03/06/13 00:20
太閤検地
刀狩り

832 :名無し@沢村:03/06/13 00:27
>>829
http://www.google.co.jp/search?hl=ja&ie=UTF-8&oe=UTF-8&q=%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3+%E8%B5%B7%E5%8B%95+%E7%B5%82%E4%BA%86+%E6%A4%9C%E5%9C%B0&lr=

833 :デフォルトの名無しさん:03/06/13 01:50
ついでなので便乗質問。
WindowHookExで、Window作成をフックできるのは使ってみてわかったんだが、
プロセス開始そのものをフックすることもできるのか?

投入されたプロセスがウインドウを作らないとフックできない気がしてるんだが。


834 :757:03/06/13 01:58
>>773
??
PathIsExist()な関数無いんだけど…間違っているような気がするが
わからない。

835 :デフォルトの名無しさん:03/06/13 06:31
>>833
WH_CBTでフックをインストールした後、
DllMain()がDLL_PROCESS_ATTACHでコールされたときがプロセスの起動、
DLL_PROCESS_DETACHでコールされたとき(UnHookした後は除く)が終了と
すればいいんじゃなかろうか。

836 :835:03/06/13 06:39
コンソールアプリがフックできるかどうかは忘れたけどね。

>>834
PathFileExists()の書き間違いだと思うよ。

837 :デフォルトの名無しさん:03/06/13 10:55
GetTcpTable というAPIを使うために
iphlpapi.h というヘッダファイルを入手しなければならないのですが
PlatformSDK(?)はどこで入手すればよいのでしょうか?


838 :デフォルトの名無しさん:03/06/13 11:07
>>837
ttp://www.microsoft.com/msdownload/platformsdk/sdkupdate/
ここでええんじゃないかい。

839 :デフォルトの名無しさん:03/06/13 12:30
>>835
フックDLLは最初にフックイベントが実行されるまでロードされない。
起動よりずっと後になる可能性がある。
デバッグしたほうが確実だな

840 :デフォルトの名無しさん:03/06/13 12:50
>>838
日本語用があるわけではないのですね。
こっちはすでにダウンロード済みだったのでラッキーでした。
ありがとうございました。

841 :デフォルトの名無しさん:03/06/13 18:18
自分自身がランチャー等から起動されているかどうか知る方法はありますか?
子プロセスから親プロセスのIDやハンドルを取る方法ってあるのでしょうか?


842 :デフォルトの名無しさん:03/06/13 18:47
DQNな質問で申し訳ありません
CALLBACK関数で

int height=200;

switch(message){
case WM_PAINT:
dc=BeginPaint(hw,&ps);
TextOut(dc,100,height,"漏れはDQNだ!",13);
EndPaint(hw,&ps);
return 0;

case WM_KEYDOWN:
if(wparam=='D'){
height=height-20;
}
return 0;
(省略)
}
みたいにやろうとしたら上手くいきませんでした。
どう解決すればいいでしょうか?

843 :デフォルトの名無しさん:03/06/13 18:51
DQNすぎて何を答えてやればいいかわからん。
CALLBACK関数って何だ?何に使ってる?
コードを見る限りじゃウィンドウプロシージャか?

844 :デフォルトの名無しさん:03/06/13 19:07
>>842
多分
>if(wparam=='D'){
>height=height-20;
InvalidateRect(hw,NULL,TRUE);
>}

845 :デフォルトの名無しさん:03/06/13 19:12
そもそもheightが静的な変数じゃなかったりせんか。

846 :デフォルトの名無しさん:03/06/13 20:19
>>841
Toolhelp32

847 :デフォルトの名無しさん:03/06/14 03:15
ツールチップの TTF_TRANSPARENT って何なの?
ググって見ても英語ばっかりで分からん、、、

848 :デフォルトの名無しさん:03/06/14 08:40
真型フォントの背景を透過

849 :デフォルトの名無しさん:03/06/14 11:27
すみません、スプレッドシートコントロール(名前を間違って
覚えているかもしれません。表計算で使われる、罫線が引いてあり、
その中に文字や数値を入力する奴です。)
を作るには、CreateWindowEx()のクラス名に何を指定すれば良いのでしょうか。

WC_SPREADSHEETのような物があるかと思ったのですが、無いようなので…。
Googleしても、MSDN調べても、Excel/SQL/VBばかりでした……。

850 :841:03/06/14 13:08
>>846
ありがとうございます。

Toolhelp32やPSAPIでプロセスIDの列挙は出来るのは解りましたが。
自身との親子関係を判別するにはどうしたらよいのでしょうか?

Windowsにはプロセスの親子関係はないとの検索結果もあったのですが、
ProcessWalkerではツリー表示が出来ているので、継承関係みたいなものは
判別できると思うのですが…。


851 :デフォルトの名無しさん:03/06/14 13:35
>>841
親プロセスのIDなら
CreateToolhelp32Snapshotでハンドル取得、
Process32First&Process32Nextで情報取得。
あとは取得したPROCESSENTRY32構造体の
メンバth32ParentProcessIDを
調べれば分かるんじゃない?

これでいいのか知らんがなぁ。

852 :デフォルトの名無しさん:03/06/14 15:09
>843-845

static int h;
とすれば解決することが分かりました
有難うございます

853 :842:03/06/14 15:21
あ、

「InvalidateRect」の読み方教えて下さい
おながいします

854 :841:03/06/14 15:23
>>851
ありがとうございます。
XPを含めたNT系ではToolHelp32が利用できないという情報があちこちにあって、
PSAPIだとID(とそれから開くハンドル)しか取れないのでどうするのかと思いましたが、
試してみたらXPでも2000でもToolHelp32が使えますね…。
PSAPIを使用しなければいけないのはNT4以前ってことでしょうか?


855 :デフォルトの名無しさん:03/06/14 15:34
>>853
http://dictionary.goo.ne.jp/search.php?MT=validate&kind=ej

856 :842:03/06/14 15:45
>855
有難うございます

857 :デフォルトの名無しさん:03/06/14 16:32
InvalidateRectで追加した更新領域を無効にするにはどうしたらいいのですか?
更新領域の追加はできても削除や、クリアは出来ないの?

858 :デフォルトの名無しさん:03/06/14 16:34
ValidateRect()

859 :デフォルトの名無しさん:03/06/14 19:48
>>841

PSAPIなるものが何なのか初心者の漏れにゃ
分からんがMSDNに

Windows NT: Requires version 5.0 or later.
Windows: Requires Windows 95 or later.
Windows CE: Unsupported.
Header: Declared in tlhelp32.h.
Import Library: Use kernel32.lib.

ってかいてあるからそうなんじゃないの?


860 :デフォルトの名無しさん:03/06/14 20:04
明らかに違うだろ >> 848

861 :849です:03/06/14 20:18
リストビューコントロールが使えそうなので、格闘してみます。
お騒がせしました。

862 :デフォルトの名無しさん:03/06/14 21:54
MSDNにビットマップオブジェクトはメモリDCにしか
SelectObject()できないとなっていますが、これは
なんででしょうか??

863 :デフォルトの名無しさん:03/06/14 21:59
デバイスが存在するDCに関連づけたら、出力先がビットマップになって、
デバイスが存在する意味がないから

864 :デフォルトの名無しさん:03/06/14 22:16
>>863
なるへそ(・∀・)!!


865 :デフォルトの名無しさん:03/06/14 22:32
_| ̄|○...
SleipnirとかOfficeXPの様なメニューを作りたくて
オーナードローまわりいじくってるんだけど
CreatePopupMenuで作ったメニューのメニューアイテムがオーナードローできる範囲より外側の部分
つまり、フレームの部分をフラットっぽくするやり方がわからない・・・

どなたか助けてー

866 :デフォルトの名無しさん:03/06/14 22:47
>>865
これってシステムのメニューでなく自力でCreateWindow()するしか
ないんじゃないの?
LongHornだとサポートされるかもしれないけど...


867 :デフォルトの名無しさん:03/06/14 23:00
CodeGuruあたりにOfficeXP風のメニュークラスのサンプルがあった気がするが。

868 :866:03/06/14 23:04
あるけど漏れの見たサンプルはエッジは3Dばっかみたい...
3DでもそんなにOfficeXPやVS.NETのメニューと見分けつかないけど。
NC系のmsgがあるのだろうか

869 :865:03/06/15 00:41
オーナードローじゃできんのか・・・
CreateWindowから作るのってかなり面倒だよね
メニューひとつ作るのもダルそう
MSも作り方ぐらいMSDNで公開してくれてもいいじゃないか!ヽ(`Д´)ノ

guru見回ってたらこんなもん見つけたよ。
ttp://codeguru.earthweb.com/menu/FlatPopUpMenu.shtml
これ見て色々やってみる!(゚∀゚)

つーことはレバーコントロールとかツールバーとかも
描画周り制御出来ない部分があったら、やっぱり自前か・・・?Σ(゚д`*;)

870 :デフォルトの名無しさん:03/06/15 00:48
買え
http://www.codejock.com/

871 :デフォルトの名無しさん:03/06/15 01:15
>>865
メニューウィンドウに対してGetWindowDC でhdcを取得すればどこでも描画できます。

872 :デフォルトの名無しさん:03/06/15 02:52
外部アプリケーションをSendMessageでメッセージを送って操作する
プログラムを書いています。

操作対象のウィンドウが画面に表示されている時は問題ないのですが、
対象がタスクトレイに収納されている時に、FindWindowでハンドルが
取得できなくなります。
対象アプリのウィンドウが非表示になってるわけで、ハンドルが取れない
のも頷けるんですが、このままでは目的を達せません。

そこで、とりあえず対象アプリをタスクトレイから引っ張り出したいの
ですが、この方法がわからずハマってしまっています。
どなかた判る方いらっしゃいましたら、ヒントいただけないでしょうか?
よろしくお願いします。


873 :851:03/06/15 03:18
EnumWindows関数を使って全トップレベルウィンドウを列挙すればいい。

その際、851に書いた方法で、あらかじめ全プロセスを列挙して、ほしい
プロセスのIDを得ておく。プロセスのパスは知っていないとだめだけど。

この辺の関数とかをうまく組み合わせてほしいウィンドウハンドルを特定、取得できれば
あとは、煮るなり焼くなり好きにできる。

ホントはもっといいやり方があるだろうけど漏れが知ってるのはこれだけ。

あと未知のソフトにNotifyメッセージを送るなら
PostMessageの方が安全かもしれないよ?

じゃ、寝よ。


874 :デフォルトの名無しさん:03/06/15 11:19
特定のプログラムに対してフックをかけるには、どんな方法がありますか?
全てのプログラムにかけるシステムフックはある程度使えるのですが・・・

おおまかでいいので、よろしくおねがいします。

875 :デフォルトの名無しさん:03/06/15 12:21
特定のプログラムと同じフォルダにフック用APIラッパーDLLを置く

876 :デフォルトの名無しさん:03/06/15 13:24
>>874

>>568

877 :872:03/06/15 16:14
>>873
その後わかったんですが、ウィンドウが非表示になっているからハンドルが
取れないわけではなく、対象アプリが、タスクトレイ収容と同時にウィンドウを
破棄、復帰時にまたウィンドウを作成、といった手順を踏んでいるのが
FindWindowが空ぶる原因でした。

で、結局、自分でマウスをクリックしてタスクトレイから対象アプリを引っ張り
出す様子を Spy++ で調べて、同じメッセージを送ってやることで目的を達し
ました。

どうもでした。

878 :デフォルトの名無しさん:03/06/15 19:36
RedrawWindow()という関数がありますが、これはどんなとき
に使うものなのですか?
UpdateWindow()とは違うのですか?
(MSDNを読んでもよく分からない(日本語訳もないため)ので
よろしくおながいします)

879 :デフォルトの名無しさん:03/06/15 19:39
>>878
redrawは再描画だよね
Updateは更新だよね。
の違い

880 :878:03/06/15 19:50
>>879
再描画するにも更新するにもOSはアプリに
WM_PAINTを送る必要があるのでいっしょの
ように思えるのですが。。。

881 :デフォルトの名無しさん:03/06/15 19:54
>>880
879が言ってるのはリビルドとビルドのような関係

882 :878:03/06/15 20:01
>>881
なるほど!!

883 :デフォルトの名無しさん:03/06/15 20:08
ケアルとケアルラの違いか!?

884 :デフォルトの名無しさん:03/06/15 20:52
>>883
なるへそ!!


885 :デフォルトの名無しさん:03/06/15 21:08
>>883
パパサンゲトーおめ

886 :デフォルトの名無しさん:03/06/15 22:15
論理ドライブ名から、物理デバイス名を取得するAPIとかってあるの?


887 :デフォルトの名無しさん:03/06/15 22:27
>>886
それは、俺も知りたい。
どちらかと言うと、どのアダプタのどのターゲットにあるかだけでも知りたい。
(物理的な位置)

888 :デフォルトの名無しさん:03/06/16 01:22
>>878
いったい、いつのMSDNを見てるんだ?
日本語のドキュメントはちゃんとあるだろ?
http://www.microsoft.com/japan/msdn/library/ja/jpgdi/html/_win32_updatewindow.asp
http://www.microsoft.com/japan/msdn/library/ja/jpgdi/html/_win32_redrawwindow.asp

889 :デフォルトの名無しさん:03/06/16 03:36
>いつのMSDN
ワラタ

890 :デフォルトの名無しさん:03/06/16 03:40
>>889
わらいダケでも食ったのか?

891 :デフォルトの名無しさん:03/06/16 04:32
>>890
いや、リアルで強烈に古いリリース読んで騙されてた香具師を目撃したばかりで

892 :デフォルトの名無しさん:03/06/16 09:29
>886
QueryDosDevice

893 :デフォルトの名無しさん:03/06/16 09:50
>>887
SCSIデバイスに関してはASPIかSPTIで取れる

894 :デフォルトの名無しさん:03/06/16 12:35
あるプロセスがどんなポートを使用しているか調べるAPIはありますか?
WinXPのnetstat -oだとプロセスIDが見れるので
そこから調べることができるそうですが
そのような機能を持ったものでもかまいません。

895 :デフォルトの名無しさん:03/06/16 13:30
>>894
AllocateAndGetTcpExTableFromStack

896 :デフォルトの名無しさん:03/06/16 14:05
>>895
レスありがとうございます。
わからなかったことが1点ありました。
これはMSの公式ドキュメントはないのでしょうか?
いちおうサンプルはいくつか見つけることができました。
第4と第5引数ともに"2"をセットしている例が多かったのですが
第4と第5引数の意味が理解できませんでした。
どういった意味があるのでしょうか?


897 :デフォルトの名無しさん:03/06/16 14:53
>>896
非公開APIなのでドキュメント化はされてないね。
引数の意味に関してもサンプルを参考するか、
あとは自分で試すしかないと思うが

898 :デフォルトの名無しさん:03/06/16 16:01
>>897
なるほど、やはり非公開でしたか。
もうすこし試行錯誤してみます。
ありがとうございました。

899 :デフォルトの名無しさん:03/06/16 21:41

 わしは886じゃよ

>>892

 QueryDosDeviceだと\\HardDriveXだっけ?
 そんなのが返ってくる。
 それではなく、PhysicalDriveXという形で
 返ってきてほしい。
 だれか、知らん?

>>887,893

 IOCTLでSCSI_THROUGH_DIRECTを投げる
 そのとき、CDBでSCSIコマンドのなんか(ちと失念)をセットしておく
 MtFujiを読めば、CDBで投げるコマンドはのっている




900 :デフォルトの名無しさん:03/06/16 21:49
> IOCTLでSCSI_THROUGH_DIRECTを投げる

 SCSI_PASS_THROUGH_DIRECT

 


901 :デフォルトの名無しさん:03/06/16 22:17
ファイルをコピーする前にディスクの空き容量を厳密にチェックしたい。
GetDiskFreeSpaceEx()で空き容量を取得できるけど、あれは単純な
空き領域が得られるだけで、実際にファイルをコピーできる限界は
セクタ単位で考えるとFAT32かNTFSかで微妙に違うはずですよね?

たとえばGetDiskFreeSpaceEx()で 100kB空いてるからといって、
99.9kBバイトのファイルをコピーできるとは限らないですよね?



902 :デフォルトの名無しさん:03/06/16 22:19
コーディングのお供に
http://mypage.odn.ne.jp/home/dongrico


903 :901:03/06/16 22:23
それとも、GetDiskFreeSpaceEx()で 100kB空いてるならば、
単純に残りクラスタ×クラスタあたりのバイトが100kB空いてると
考えてよい?


・・・ような気がしてきた。いいのかな。

904 :874:03/06/16 22:29
>876

すいません。もう少し詳しくおねがいします。
自分が予想するに、フックプロシージャが格納されるDLLに、プログラムを判別する値を
グローバル変数として保存しておくのではないかと思うのですが、実際にやろうとすると
上手くいきません。


905 :デフォルトの名無しさん:03/06/16 22:32
>>903
大体、100KB空いていたとして、その瞬間に違うプロセスが使ったら…どうすんの?

906 :デフォルトの名無しさん:03/06/16 22:37
>>901
圧縮ドライブの場合もっと大変だよ。がんばってね。

907 :901:03/06/16 22:43
>>905
とりあえず俺はSEサソの言いなりのヘポーコPGです。
>>906
はい。

今1kBほどのテキストファイル作って差を見たら
きっちり空き領域が8,192Byte減ってますた。
逝ってきます。

908 :デフォルトの名無しさん:03/06/16 22:45
>>907
話がかみ合っていないね

909 :887:03/06/16 23:24
>>893 >>899 >>900
情報ありがとうございます。
やっぱ、ASPIか、SPTIですか。ASPIは最近勉強したんでわかるんですが
SPTIとは何でしょうか?
おそらくWin2000等のNTで使用するのだとは分かるんですが…
DDKとかインストールする必要あるんですか?
SPTIの情報が少なくって……

910 :デフォルトの名無しさん:03/06/16 23:44
SCSI Pass Through Interfaceの頭字語。そのまんま。
IOCTL_SCSI_PASS_THROUGH_DIRECTでぐぐったら解説が出てきた。
オープンソースのCD焼きソフト(cdrecord)のソースも参考になるかも

911 :887:03/06/16 23:49
>>910
ぐわぁ〜そっちか…MSDNとかでDDK直接探してて泣きを見ていました。
参考になりました。
サンクス!

912 :デフォルトの名無しさん:03/06/17 11:28
PlatformSDKはローカルにファイルを保存してセットアップできないんでしょうか?
PCを変えたんですが、もう一度Webからインストールするのはめんどうです。

913 :デフォルトの名無しさん:03/06/17 11:33
>>912
過去スレにURL載ってたはず

914 :913:03/06/17 11:36
>>912
ttp://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm

スクリプトonにしないとダメ

915 :デフォルトの名無しさん:03/06/17 11:54
ああ!専用DLページがあったんですね!ありがとうございます!

916 :デフォルトの名無しさん:03/06/17 17:25
SetTimerを使った後にKillTimerを使わないと何か弊害があるのでしょうか?

917 :デフォルトの名無しさん:03/06/17 17:28
ネットで稼ぐならこれ。完全無料!!
リンクスタッフになれば小遣い稼ぎができます!!(左下に詳しい説明があります)
[報酬について]
クリック報酬・・・1クリックされる度に10円の報酬
バナー紹介料・・・リンクスタッフ登録の度に1000円の報酬
キャンペーン・・・今なら登録するだけで1000円プレゼント
間接報酬・・・紹介者が得た報酬の25%を加算いたします
プレミアム・・・優秀サイトには、報酬に応じてボーナス有り

単純に考えて1日100人クリックしたとすると、100人×10円×30日=30000円(一ヶ月)
そこらへんの掲示板に貼り付けていけば100クリックなんてスグです。
その他、自分の貼り付けた広告から誰かがスタッフになると1000円もらえるので
1日5人スタッフを紹介できたとして1000×5×30=150000円
30000+15000=180000!!間接報酬などもありますのでどんなに悪くても一ヶ月に10万円以上は必ず稼げます!!
          http://www12.ocn.ne.jp/~sihori/
       ぜひ一度覗いて見てはいかがでしょうか?


918 :デフォルトの名無しさん:03/06/17 17:31
>>917
とてもよさそうですね(^^)
10万円稼げなかったときはどんな保証があるんでしょうか。

919 :デフォルトの名無しさん:03/06/17 17:32
>>917
やって損しました。

920 :デフォルトの名無しさん:03/06/17 19:29
システムトレイにアイコン表示されるアプリをつくったんですが、
アイコンの色が256colorになっているようです。
フォルダにある状態では24bitcolorなのですがなぜ減色してしまうのでしょう。
おしえてちょ


921 :デフォルトの名無しさん:03/06/17 19:33
16x16サイズなら256色で全ピクセルが表現できるから。
とか?

922 :デフォルトの名無しさん:03/06/17 19:46
>>920
win2000以下は256も出ないよ。たしか16色くらい。
xpだけでしょ256も出るのは

923 :デフォルトの名無しさん:03/06/17 20:16
アイコンって最大256色じゃないか?

924 :デフォルトの名無しさん:03/06/17 20:26
すみません。うそを書いたかもしれません。
要するにフォルダで見るとスモールアイコンはきれい

ダイアログの左上にあるスモールアイコンもきれい

でもシステムトレイに入れると色が化ける

です。スモールアイコンは256colorで書き直したほうがよいですか?
あとVisualStadioでアイコンのフォーマットの追加はできるけど削除
どうやりますか?


925 :デフォルトの名無しさん:03/06/17 21:08
タスクトレイのアイコンは2000以下は16色だよ。

926 :デフォルトの名無しさん:03/06/17 21:39
ちょっとお聞きしたいのですが、
特定の文字が現在のフォントにあるかどうか調べるAPIってありますか?
(TextOutしたときに、きちんと表示されるか、空白 or "・"になるか)

927 : :03/06/17 22:00
VC.NETで、ダイアログボックスでActiveXコントロールを張りつけるのではなく、
自分で作ったウィンドウにActiveXコントロールを張りつけるのは
どのようにすればよいでしょう?
CWnd::CreateControl()かなと思ったんですが、
落ちてうまく動かなかったです・・・・

928 :デフォルトの名無しさん:03/06/17 22:04
>>926

無い。

929 :デフォルトの名無しさん:03/06/17 22:28
>>928

そんなあ

930 :デフォルトの名無しさん:03/06/17 22:35
GetGlyphIndices

931 :デフォルトの名無しさん:03/06/17 22:37
>>926
メモリDCに書いてみてドット調べて・かどうかチェックすれ。

932 :デフォルトの名無しさん:03/06/17 22:58
>>931
それじゃ・自体が判別できん

933 :916:03/06/17 23:00
教えてちょ!

934 :デフォルトの名無しさん:03/06/17 23:13
>>930
おおー、サンクスです

935 :デフォルトの名無しさん:03/06/17 23:19
>>933
いらないタイマイベントが発生しまくる

936 :916:03/06/17 23:53
有難うございます
アプリ終了後もタイマイベントが発生するでしょうか?
それともアプリが終了すれば大丈夫でしょうか?

937 :デフォルトの名無しさん:03/06/18 00:41
>>936
普通ならタイマは停止する。
でも、Killで止めといたほうがスッキリヽ(´ー`)/

938 :876:03/06/18 00:48
>>874  亀レスでスマソ

875のやり方の手助けとして書いたつもりだったんだが・・・。

フックって何をフックしたいのかがよく分からん。
そのソフトが呼び出すAPIとかを横取りしたいのなら
568のリンクにそれ用のソフトがあるからそれを使えば
簡単に作れる。

それとも特定のメッセージとかを横取りしたいのか?
だったらSetWindowsHookEx + WH_GETMESSAGEとか。


939 :デフォルトの名無しさん:03/06/18 01:05
あなたが探してるのってこれだよね?この中にあったよ♪
http://endou.kir.jp/betu/linkvp/linkvp.html

940 :吉岡美穂:03/06/18 14:41
>>874
GetModuleFileName()で呼び出し側のファイルパスを取得して、
フックしたくないならDllMain()でFALSEを返せばいいのでは?

http://www.aderans.co.jp/

941 :916:03/06/18 15:59
>937
有難うございます

942 :デフォルトの名無しさん:03/06/18 21:05
論理フォント作成で質問です

stNCMetrics.cbSize = sizeof( NONCLIENTMETRICS );
::SystemParametersInfo( SPI_GETNONCLIENTMETRICS, sizeof( NONCLIENTMETRICS ), &stNCMetrics, 0 );
memcpy(&defFont,&stNCMetrics.lfMessageFont,sizeof(defFont));
defFont.lfWeight=FW_BOLD;
defFont.lfHeight=72;
defFont.lfItalic=true;
defFont.lfQuality=PROOF_QUALITY;
lstrcpyn(defFont.lfFaceName,"MS 明朝",15);//取りあえずこれで
hStatusFont=CreateFontIndirect(&defFont/*&stNCMetrics.lfMessageFont*/);//論理フォントの選択&作成

HDC DC=GetDC(GetWinWND());
SelectObject(DC,phStatusFont_);
TextOut(DC,0,128,"漢字",4);

イタリック名明朝が出るはずなんですが、普通(正体)のシステムフォントしかでてこない...

::SystemParametersInfo( SPI_GETNONCLIENTMETRICS, sizeof( NONCLIENTMETRICS ), &stNCMetrics, 0 );
このプロセスは元のFONTの一部を変えたいという意図からきています。
最初から全部値を入れても同じ結果なのです。なにが問題なのでしょうか?


943 :デフォルトの名無しさん:03/06/18 21:23
hStatusFont=CreateFontIndirect
...
SelectObject(DC,phStatusFont_);

phStatusFont_って何?

944 :デフォルトの名無しさん:03/06/18 21:25
>943
hHANDLEです。
サンプルコード書く時のミスです。すいません。
その部分での問題ではないです。

945 :デフォルトの名無しさん:03/06/18 21:41
パラメータに誤りがあるか、指定したフォントが無い場合
最も近いフォントをかってに選んで返す。


と思った。

946 :デフォルトの名無しさん:03/06/18 21:47
だからLOGFONTには自分で値を入れないで
列挙してきた中から選べ

947 :デフォルトの名無しさん:03/06/18 21:49
しかしMS 明朝のボールド・イタリックが無いとは思えないぞ

948 :デフォルトの名無しさん:03/06/18 21:57
stNCMetrics.lfMessageFont が変なフォントになっているとか?

942のコードを試してみたけど、普通に斜体太明朝になるけどなあ。

949 :デフォルトの名無しさん:03/06/18 21:58
自己解決できました。ハンドルの参照が間違ってました(死
hhande型なのに何故ポインタ型で通ったんだ?w

スレ汚してすいません。
取りあえずそのミスを除いてはこのコードで論理フォントが作れるようです


950 :デフォルトの名無しさん:03/06/18 22:01
フォント列挙がめんどくせーんだよな。
一度classつくりゃすむっちゃあすむことだが。

951 :デフォルトの名無しさん:03/06/18 22:02
>>950
愚痴で950ゲットおめ。次スレよろ。

952 :デフォルトの名無しさん:03/06/18 22:17
zipfldr.dllを操作するAPIって公開されていますか?

953 :950:03/06/18 22:19
>このホストでは、しばらくスレッドが立てられません。
>またの機会にどうぞ。。。

だそうだ。
後は頼む。

954 :デフォルトの名無しさん:03/06/18 22:23
普段はユーザインターフェースを持たないプログラムとして
稼動してるけども、必要なときに応じてGUI画面を
表示させたいプログラムってどうやって作るんだろう…
タスクトレイ常駐型レベルじゃなくて、たとえばIISのような。

955 :デフォルトの名無しさん:03/06/18 22:25
>>949
やっぱりphStatusFont_が原因じゃねーか、さっさと氏ね

956 :デフォルトの名無しさん:03/06/18 22:25
サービスとして作ればいいのでは?

957 :デフォルトの名無しさん:03/06/18 22:35
>>942
おれはいつもこうやって作っているんだが…
// フォントオブジェクト作成
hnewFont1 = ::CreateFont( 12, /* キャラクタセルの高さ(ピクセル) */
0,/* キャラクタの平均的な幅 */
0,/* 傾斜ベクトルとデバイスのx軸との間の角度(1/10度単位) */
0,/* 各キャラクタの基線とデバイスのx軸との間の角度(1/10度単位) */
FW_NORMAL,/* フォントの必要な幅 */
0,/* イタリック体ならTRUE */
0,/* 下線をつけるならTRUE */
0,/* 取り消し線をつけるならTRUE */
SHIFTJIS_CHARSET,/* キャラクタセット */
OUT_DEFAULT_PRECIS,/* 必要な出力精度 */
CLIP_DEFAULT_PRECIS,/* 必要なクリッピング精度 */
DEFAULT_QUALITY,/* 必要な出力品質 */
DEFAULT_PITCH | FF_DONTCARE, /* フォントのピッチとファミリの指定 */
"MS ゴシック" );/* フォント名 */

958 :アイアンバトライガー:03/06/19 00:03
質問いいでしょうか.わかる方いらしたら,一発返答お願いしやす.
Win32コンソールアプリでキー入力をチェックしたりできますでしょうか?
コマンドプロンプトでどこまでやれるのか気になりまして.
getchar使うとか,そうゆうのではなく,,,ってなると,
結局イベントを扱えるかどうかにかかってきますね.
そうゆうAPIあるのかどうか,教えてえらい人!

959 :デフォルトの名無しさん:03/06/19 00:05
vcならkbhitとか

960 :アイアンバトライガー:03/06/19 00:16
>>959
どうもゴッツァンっす! 答えてくれてありがとう.アイリスペクトユー!

961 :デフォルトの名無しさん:03/06/19 00:43
このスレ的にはReadConsoleInputとか言ってほしいところだが

962 :アイアンバトライガー:03/06/19 01:52
>>961
押忍! kbhitでいろいろ調べていたら,
ReadConsoleInputにも自然とたどり着いたです.ありがとう〜

963 :デフォルトの名無しさん:03/06/19 08:58
すいません、質問させてください。

フォルダ内のファイル一覧を得るためのWin32APIはありますでしょうか。

ご存知の方、申し訳ございませんが、教えていただけたらうれしいです。

964 :デフォルトの名無しさん:03/06/19 09:00
ある。以上。

965 :デフォルトの名無しさん:03/06/19 09:21
>963
FindFirstGirl
FindNextGirl

966 :デフォルトの名無しさん:03/06/19 09:21
>>965
FindFirstGirlが失敗するんですがどうしてでしょうか

967 :デフォルトの名無しさん:03/06/19 09:31
>966
どっちで失敗してるんだ?

968 :デフォルトの名無しさん:03/06/19 09:41
*.* ウフッ

969 :デフォルトの名無しさん:03/06/19 09:46
>>967
どちらもリンクエラーになりまつ

970 :デフォルトの名無しさん:03/06/19 09:51
もてない奴は探すだけ無駄ということだろう

971 :デフォルトの名無しさん:03/06/19 09:51
FindFirstFile/FindNextFile

972 :デフォルトの名無しさん:03/06/19 09:57
>969
冗談のつもりだったのだが・・・

俺の負けだ!


Girl(女の子/少女の意味、知らんのか?)をFileに置き換えよ!
さすれば汝は救われる。

つーかヘルプ読め!

973 :デフォルトの名無しさん:03/06/19 10:34
リンクエラーの前にプロトタイプが無くて叱られると思うのだが・・・

974 :デフォルトの名無しさん:03/06/19 10:42
Cならプロトタイプなくてもコンパイルとおらんか? 一応

975 :デフォルトの名無しさん:03/06/19 11:05
>>954
IISと同じように…っつーなら、IISと同じようにサービスにすりゃよかろ。

976 :デフォルトの名無しさん:03/06/19 15:27
IIS自体にUIはないけどな。


977 :デフォルトの名無しさん:03/06/19 15:39
いいから次スレを・・・

978 :デフォルトの名無しさん:03/06/19 15:52
>>977
では君に頼もう、次スレ立ててくれたまえ


979 :デフォルトの名無しさん:03/06/19 17:09
痔スレですか?
イタイタシイデスネ

980 :デフォルトの名無しさん:03/06/19 21:07
.NET Framework一回使うともうWin32APIには戻れないね。

981 :デフォルトの名無しさん:03/06/19 21:40
戻れないというか、MFCと同じで結局足りない部分をWin32APIで補わないとやっていけない

982 :デフォルトの名無しさん:03/06/19 21:44
>>965
良い関数だ…でも、俺の場合…

「0 個のGirlが発見されました」

になるのは何ででしょうか?(why

983 :デフォルトの名無しさん:03/06/19 22:20
PCで利用可能なCOMポートを全て確認(列挙)したいのですが、
全てのポートについてオープンを試みる単純な方法以外に
より正当な方法をご存知の方が居ましたら教授ください。
Webサイトドキュメント等へのポインタでも構いません。

984 :983:03/06/19 22:28
CodeProjectで見つかりました。

985 :デフォルトの名無しさん:03/06/19 23:24
>>981
MFCよりも便利で、足りない部分をWin32APIで補うだけだからいいってことでしょ。
全部MFCやAPIでやる方法には戻れないよ。

986 :デフォルトの名無しさん:03/06/19 23:43
次スレたてますた。

Win32API 質問箱 Build12
http://pc2.2ch.net/test/read.cgi/tech/1056033645

987 :デフォルトの名無しさん:03/06/20 04:06
1000

988 :デフォルトの名無しさん:03/06/21 14:46
1000!

989 :デフォルトの名無しさん:03/06/21 17:16

σ   _、_
ヽ ( ,_ノ` )σ  989ゲッツ!!
 (    )ノ
   〉 〉

990 :デフォルトの名無しさん:03/06/21 18:48
990BX

991 :デフォルトの名無しさん:03/06/22 10:59
今だ! 991ゲットオォォォォ!!
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄       (´´
     ∧∧   )      (´⌒(´
  ⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡
        ̄ ̄  (´⌒(´⌒;;
      ズザーーーーーッ

992 :デフォルトの名無しさん:03/06/22 13:17
992ゲットだな
          ∧_∧
    ∧_∧  (´<_`  )さすがは兄者、中途半端だな
   ( ´_ゝ`) /   ⌒i
   /   \     | |
  /    / ̄ ̄ ̄ ̄/ |
__(__ニつ/  FMV  / .| .|____
    \/____/ (u ⊃

993 :デフォルトの名無しさん:03/06/22 13:58
              ∧_∧  〔^^〕
               _,( ´∀`)⌒ i  |
          (⌒ ー  一 r.、!  〉
           ヽ弋 。 人 。 イ(` ー'
           〔勿\     ヽ
               )  r⌒丶 )  ドカ
     ドカ   ドカ  /   !  |'´
       ドカ    /   /|  |‖ ドカ
             (    く  !  ||‖  ドカ
           ドカ   \  i   | ‖|‖|
            ,__>  ヽヽ从/∧∧
            ⊂⌒ヽ从/ つ ゚д゚) <993ゲトー

994 :デフォルトの名無しさん:03/06/22 14:06
ノノハヽo∈
从 `,_っ´) プッ

995 :デフォルトの名無しさん:03/06/22 16:17
('A`) 995マンドクセ

996 :デフォルトの名無しさん:03/06/22 21:05
誰か!

997 :デフォルトの名無しさん:03/06/22 21:10
987 名前:デフォルトの名無しさん :03/06/20 04:06
1000


988 名前:デフォルトの名無しさん :03/06/21 14:46
1000!


998 :デフォルトの名無しさん:03/06/22 21:13
1000 (σ・∀・)σ ゲッツ!!

999 :デフォルトの名無しさん:03/06/22 21:13
1000かよ!

1000 :デフォルトの名無しさん:03/06/22 21:14
1000!!

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

227 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)