トップページ⇒tech
1001コメント317KB

Win32API質問箱 Build24

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさんNGNG
- 過去スレ
Build23:http://pc5.2ch.net/test/read.cgi/tech/1095534704/
Build22:http://pc5.2ch.net/test/read.cgi/tech/1092524669/
Build21:http://pc5.2ch.net/test/read.cgi/tech/1090422324/
Build20:http://pc5.2ch.net/test/read.cgi/tech/1088140233/
Build19:http://pc5.2ch.net/test/read.cgi/tech/1084697545/
Build18:http://pc5.2ch.net/test/read.cgi/tech/1081702990/
Build17:http://pc5.2ch.net/test/read.cgi/tech/1077470361/
Build16:http://pc2.2ch.net/test/read.cgi/tech/1073830065/ ★
Build15:http://pc2.2ch.net/test/read.cgi/tech/1069339866/ ★
Build14:http://pc5.2ch.net/tech/kako/1065/10653/1065328397.html
Build13:http://pc5.2ch.net/tech/kako/1059/10595/1059549320.html
Build12:http://pc5.2ch.net/tech/kako/1056/10560/1056033645.html
Build11:http://pc5.2ch.net/tech/kako/1052/10526/1052651750.html
Build10:http://pc5.2ch.net/tech/kako/1047/10478/1047819779.html
Build9:http://pc5.2ch.net/tech/kako/1044/10449/1044929160.html
Build8:http://pc5.2ch.net/tech/kako/1040/10409/1040964626.html
Build7:http://pc3.2ch.net/tech/kako/1036/10366/1036654893.html
Build6:http://pc3.2ch.net/tech/kako/1032/10325/1032548635.html
Build5:http://pc3.2ch.net/tech/kako/1028/10285/1028580373.html
Build4:http://pc3.2ch.net/tech/kako/1023/10233/1023361418.html
Build3:http://pc.2ch.net/tech/kako/1017/10170/1017072275.html
Build2:http://pc.2ch.net/tech/kako/1006/10067/1006783012.html
Build1:http://pc.2ch.net/tech/kako/991/991576947.html
(★は「いやー ごめんなさい。」に巻き込まれた模様
0002デフォルトの名無しさんNGNG
- MSDN Online
http://www.microsoft.com/japan/msdn/default.asp
- 猫でもわかるプログラミング
http://www.kumei.ne.jp/c_lang/
- Platform SDK Update
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
- Google
http://www.google.com/

Win32 API入門
http://wisdom.sakura.ne.jp/system/winapi/
WIN32 Programming
http://www7.plala.or.jp/keny01/win32/
Win32 SDK Programming
http://www7.plala.or.jp/keny01/windows/win32/
0003デフォルトの名無しさんNGNG
ぐぁっ、前スレの人と同じミスを…スマソ
あれだけ確認したのにな
0004デフォルトの名無しさんNGNG
いや違うな、前々スレで抜けたのか
次スレ立てる人はこれでお願い

- MSDN Online
http://www.microsoft.com/japan/msdn/default.asp
- 猫でもわかるプログラミング
http://www.kumei.ne.jp/c_lang/
- Platform SDK Update
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
- Google
http://www.google.com/

Win32 API入門
http://wisdom.sakura.ne.jp/system/winapi/
Win32 プログラミング入門
http://www7.plala.or.jp/keny01/windows/win32/
Win32 SDK Programming
http://usr_vogel.at.infoseek.co.jp/Win32SDK/
0005デフォルトの名無しさんNGNG
前スレの終わり方はあれでよかったのか?
0006デフォルトの名無しさんNGNG
アバウトな質問ですみませんが、
XP pro でイベントビューアを見ると

エラー発生アプリケーション 私のアプリケーション.exe、バージョン 1.0.1.4、
エラー発生モジュール ntdll.dll、バージョン 5.1.2600.1217、エラー発生アドレス 0x00008e22

というログを残すエラーが発生しました。
RtlFreeHeap のエントリポイントが近いので、RtlFreeHeap が怪しいと思います。

8月から10月の間で2台のパソコンで各1回ずつ発生しました。
私のアプリケーションは1〜2週間は連続稼動しています。
同じような現象で悩んだ方がいましたら、何かヒントを教えて頂けませんか?
0007デフォルトの名無しさんNGNG
> 989 名前:デフォルトの名無しさん 投稿日:04/10/28 21:32:33
> >>987
> デザインの話じゃねぇの?

> もし一部のメニューが非表示になる機能だったら
> 絶対に止めとけ。使いにくくてしょうがない

個人の意見を押しつけるのはやめて下さい
0008デフォルトの名無しさんNGNG
絶対に止めとけ。使いにくくてしょうがない
0009デフォルトの名無しさんNGNG
絶対に便利。実装してチョ。
0010デフォルトの名無しさんNGNG
グレー表示ってさ、ユーザにとっては極め付けの冷たいインターフェイスなんだよな・・・
2000でやってたアレも同系
0011デフォルトの名無しさんNGNG
>>5
ワラタ
0012デフォルトの名無しさんNGNG
>>10
なんのことかサッパリ解らん。
0013デフォルトの名無しさんNGNG
モードレスダイアログでEnterを押して実行されるように
標準のボタンを作りたいのですが、やっぱり出来ません。
モードレスダイアログではリソースエディタで”標準のボタン”を
指定するだけで出来ました。


CreateWindowで親ウインドウを作成

CreateDialogで親ウインドウにダイアログを貼り付ける

親ウインドウのプロシージャ
switch(msg)
{
//hWndDlgはダイアログのハンドル
case WM_SETFOCUS:
SetFocus (hWndDlg);
break;

メッセージループ
while (GetMessage (&msg,NULL,0,0))
{
if (hWndDlg && IsDialogMessage (hWndDlg,&msg))
{
continue;
}
TranslateMessage (&msg);
DispatchMessage (&msg);
}
0014デフォルトの名無しさんNGNG
LoadImageのLR_LOADMAP3DCOLORSって、確かリソースが
インデックスカラー値じゃないと使えないよね?

最近のウィンドウズのデフォルト色は、まず間違いなくインデックスカラー値から
外れてくるから、LR_LOADMAP3DCOLORSは使えない気がするんだけどどうだろう。
0015デフォルトの名無しさんNGNG
>>14
何か勘違いしている。
0016デフォルトの名無しさんNGNG
>>15
俺の勘違いかな。色を変えるというかパレットを変えるイメージだったのだが。
と思って今軽く試してみたけど、やはり出来ない気がする。時間が無くて適当でごめん。
0017デフォルトの名無しさんNGNG
>モードレスダイアログではリソースエディタで”標準のボタン”を
>指定するだけで出来ました。

じゃ、問題なしだな
0018デフォルトの名無しさんNGNG
すみません。
SHChangeNotifyRegisterのことで質問があるのですが、どなたかお答え
いただけますか?
0019デフォルトの名無しさんNGNG
質問を言ってくれないと答えられない。
002018NGNG
環境はWinXP SP1,VC++ SP5で、最新のMS SDKへのパスを通してます。

SHChangeNotifyRegisterの起動時に、以下のパラメータを指定します。
第2引数:0x0001 | 0x0002(ファイル及びシェルからの通知を指定)
第3引数:SHCNE_ALLEVENTS(全てのイベントを受信)
この状態で、イベントの一つであるSHCNE_CREATE(アイテムの作成)を
受信したいとき、アプリケーションを起動して「ファイルを保存」から
ファイルを作成したときには受信しません。
右クリックで、「新規作成」から新規ファイルを作成したときには、受信します。

質問は、アプリケーションを起動して「ファイルを保存」からファイルを
作成したときに、どうやったらSHCNE_CREATEを受信できるかです。
0021デフォルトの名無しさんNGNG
DIBとDDBの違いがよう分からんのですけど。
0022デフォルトの名無しさんNGNG
質問です。
下のようなダブルバッファリングするようなプログラムを作ったのですが、どうもうまくいきません
いろいろやってみたのですがよくわかりません。
どうすれば、うまく動くようになるでしょうか?

症状 : うまく転送されていない、とおもう。(色を指定してもメッシュがかかったような白黒になる、白、黒はうまくいった)
プログラム :
//省略
case WM_PAINT:
{
PAINTSTRUCT ps;
HDC hDc = BeginPaint( hWnd , &ps );
HDC hbDc = CreateCompatibleDC( hDc );
HBITMAP hBitmap = CreateCompatibleBitmap( hbDc , 640 , 480 );
HBITMAP hOldBitmap = SelectObject( hbDc , hBitmap );
{
HBRUSH hBrush = CreateSolidBrush( RGB( 100 , 0 , 100 ) );
SelectObject( hbDc , hBrush );
PatBlt( hbDc , 0 , 0 , 640 , 480 , PATCOPY );
DeleteObject( SelectObject( hbDc , GetStockObject( WHITE_BRUSH ) ) );
}
SelectObject( hbDc , GetStockObject( BLACK_BRUSH ) );
Rectangle( hbDc , x , y , x + 100 , y + 100 );
BitBlt( hDc , 0 , 0 , 640 , 480 , hbDc , 0 , 0 , SRCCOPY );
DeleteObject( SelectObject( hbDc , hOldBitmap ) );
DeleteDC( hbDc );
EndPaint( hWnd , &ps );
break;
}
//省略
きゃらの座標(x,y)更新後、InvalidateRect( hWnd , NULL , FALSE)としてWM_PAINTメッセージを発生させています。
0023デフォルトの名無しさんNGNG
createcompatiblebm( hDc
0024デフォルトの名無しさんNGNG
ありがとうございました、おかげで解決できました。
よく見るとAPIのヘルプに書いてありましたね。
見逃していました。

ほんとにありがとうございました。
0025デフォルトの名無しさんNGNG
>>22
よくコード見て無いけど、SetMapMode(hDC,MM_TEXT);とかモード設定してみ
あと、コードの途中の{}は何だ?
0026デフォルトの名無しさんNGNG
>>20
以前SHChangeNotifyRegister()を使ったところ、あまり当てにならなかった記憶がある。
ReadDirectoryChangesW()の方がお奨め。
0027デフォルトの名無しさんNGNG
NT系専用だけどな
まあそろそろ9xは切り捨ててもいいか
002818NGNG
>>26
ReadDirectoryChangesWについて質問していいですか?
ファイル数やディレクトリ数のエントリ数が多数で、ディレクトリの階層が深い
場所(例:OSの入っているドライブ)をルートから監視するとき、
ReadDirectoryChangesWを起動している間のパソコンのパフォーマンスは
悪くなりますか?
0029デフォルトの名無しさんNGNG
>>28
自分で試せよ
0030デフォルトの名無しさんNGNG
Winn2000以降とかでいいんだけど、現在のプロセスだけじゃなくて、
システムのプロパティから見れる環境変数を変える事って出来ない?
インストーラーとかが時々やってるけど…。
0031デフォルトの名無しさんNGNG
http://www.kt.rim.or.jp/~yuta/prog/win32/Registry/renv/index.html
003213NGNG
>>17
すいません。
モーダルダイアログの間違いです。
モードレスダイアログでは出来ないのです。

どうすればいいのでしょうか?
0033デフォルトの名無しさんNGNG
CreateThreadに引数を渡そうと思ってます。各スレッドに0,1,2という引数をそれぞれ渡したいのですがなぜかすべてのスレッドに3が渡されています。
ポインタがらみだと思うのですがどう書けばうまくいくのかわかりません。アドバイスお願いします。

0034デフォルトの名無しさんNGNG
書いたプログラムです。

#include <stdio.h>
#include <windows.h>

DWORD WINAPI Testthread(LPVOID);

int main() {
  int i;
  HANDLE hTh[3];
  DWORD tid[3];

  for (i=0; i<3; i++) {
     /* スレッドを作成 */
     hTh[i] = CreateThread(NULL,0,Testthread,(LPVOID)&i,0,&tid[i]);
}

  WaitForMultipleObjects(3, hTh, TRUE, INFINITE);

  for (i=0; i<3; i++) {
  CloseHandle(hTh[i]);
  }

  return 0;
}

DWORD WINAPI Testthread(LPVOID lpx) {
  int num = *((int *)lpx);
  printf("%d\n", num);
  return 0;
}
0035デフォルトの名無しさんNGNG
>>33
hTh[i] = CreateThread(NULL,0,Testthread,(LPVOID)i,0,&tid[i]);

int num = (int)lpx;
0036デフォルトの名無しさんNGNG
>>35
アドバイスありがとうございます。その方法でできました。
なぜそれでできるのかまだわからないですが・・・void*型調べてみます。
0037デフォルトの名無しさんNGNG
>>36
CreateThread() した瞬間に作ったスレッドが走り出すとは限らない。
CreateThread() が3回呼ばれた後にそれぞれのスレッドが動き始めるん
だろう。
0038デフォルトの名無しさんNGNG
画面上にある全てのウィンドウを半透明化した後、
透明度を255にして元に戻したのですが、
前よりかなり重くなりました。
何かマズいことをしたのでしょうか?
0039デフォルトの名無しさんNGNG
>>38
WS_EX_LAYEREDを外せ
004038NGNG
>>39
ありがとうございます。
004138NGNG
すいません。
ここに書かれているやり方でWS_EX_STYLEを外そうとしたのですが、
適用したウィンドウの全ての内容が左右反転してしまいました。
ttp://hitokuso.kicks-ass.org/progtips.html
しかもとてつもなく重いです。

LONG my_style;
my_style=GetWindowLong(hWnd,GWL_EXSTYLE);
my_style&=~WS_EX_LAYERED;
SetWindowLong(hWnd,GWL_EXSTYLE,my_style);
004238NGNG
すいません、なおりました。
一部 GWL_STYLE と書き間違えていたのが問題だったようです。
焦って混乱してましたが、解決しました。
お騒がせしました。
0043デフォルトの名無しさんNGNG
>>34 >>36
#include <stdio.h>
#include <windows.h>

DWORD WINAPI Testthread(LPVOID);

int main() {
  int i, d[3];
  HANDLE hTh[3];
  DWORD tid[3];

  for (i=0; i<3; i++) {
     /* スレッドを作成 */
     d[i] = i;
     hTh[i] = CreateThread(NULL,0,Testthread,(LPVOID)&d[i],0,&tid[i]);
}
  WaitForMultipleObjects(3, hTh, TRUE, INFINITE);
  for (i=0; i<3; i++) {
  CloseHandle(hTh[i]);
  }
  return 0;
}

DWORD WINAPI Testthread(LPVOID lpx) {
  int num = *((int *)lpx);
  printf("%d\n", num);
  return 0;
}

>>35 は場当たり的な回答だから真似するな
0044デフォルトの名無しさんNGNG
>>43
32bit環境ならintもポインタも4byteだから
単一の値を渡すだけなら>>35は常套手段だと思うけど。
0045デフォルトの名無しさんNGNG
他アプリのステータスバーの文字列を取得したいのですが、
SB_GETTEXTでは他アプリのステータスバーには無効らしくうまくいきません。
ググっていると共有メモリを使うとよい、という話も有るようなのですがさっぱりわかりません。
何か簡単な方法はないものでしょうか?
0046デフォルトの名無しさんNGNG
>>45
他アプリというのは自分でつくったアプリ?
0047デフォルトの名無しさんNGNG
>>46
違います。
0048デフォルトの名無しさんNGNG
なら共有メモリを使うだけじゃ無理じゃないかな。

俺が思いつくのは、
1. 自作のDLLをそのアプリに注入する (SetWindowsHookEx)
2. そのDLLはSB_GETEXTでステータスバーの文字列を取得する
3. 共有メモリを使って (WM_COPYDATAとかでもいいけど)
  DLLから自作アプリに文字列を渡す

もっといい方法があるかもしれないので参考までに。
0049デフォルトの名無しさんNGNG
WriteConsole()で出力しようと思ってGetStdHandle(STD_OUTPUT_HANDLE)で
標準出力のハンドルを取得して、使い終わってもCloseHandle()などで閉じる必要は
無いんでしょうか?

というか何度もその都度GetStdHandle(STD_OUTPUT_HANDLE)で取得しても良いんでしょうか?

void hoge() {
HANDLE out;
DWORD num;
out = GetStdHandle(STD_OUTPUT_HANDLE);
WriteConsole(out, "aaa", 3, &num, NULL);
//CloseHandle(out); //<=これをすると2回目以降出力されなくなる
}

int main() {
hoge(); hoge();
}
0050デフォルトの名無しさんNGNG
>>49
0051デフォルトの名無しさんNGNG
>>50
0052デフォルトの名無しさんNGNG
>>49
GetStdHandleはCloseHandleするな。
何度もGetStdHandleするのが気になるなら、静的変数なんかにしろ。
0053デフォルトの名無しさんNGNG
任意のプログラムのファイル入出力を
監視するツールを作りたいのですが、上手く行きません。

他プロセスの入出力を監視するには、
CreateFileやRead/WriteFileをフックすれば良いと思い、
Kernel32.dllのラッパーを作成しようとしているのですが、
明示的リンクを行うためのGetProcAddress関数等が
Kernel32.dllに含まれるためか、コンパイルが通りません。

他の方法を試そうにも、これ以外思い浮かばず困っています。


Kernel32.dllのラッパーを作る方法、
又は、他プロセスのファイル入出力を監視する方法を
知っている方居ましたらお願いします。
0054デフォルトの名無しさんNGNG
>>53
デバイスドライバ
0055デフォルトの名無しさんNGNG
ローカルフックを使いたいのですが、
どこか詳しい解説をしてあるサイトはありませんでしょうか?
システムフックは今回使わないつもりです。

自分なりに調べてやったら、
どこかが間違っていたらしく、
タスクバーから何から消えた上に終了までできなくて困りましたので。
0056デフォルトの名無しさんNGNG
>>53
APIフック
参考
・ttp://www.codeproject.com/system/hooksys.asp
・Advanced Windows日本語版
0057デフォルトの名無しさんNGNG
>>53
作らなくていいよ。
http://www.sysinternals.com/ntw2k/source/filemon.shtml
0058デフォルトの名無しさんNGNG
acmを利用してWAVEファイルのフォーマットの変換に挑戦しているのですが
うまくいかないところがあるので質問させてください。

データが小さい時はacmStreamConvertを一回呼び出して終わりでこのときはきちんと変換されます。
一方、大きいWAVEファイルを変換する場合に、ループ処理で少しずつ変換させていったところ
関数自体は成功するんですが、いざ再生するとノイズの嵐になります。

以下ソース(StreamHeaderはACMSTREAMHEADERです。)
for(dwOffset=0,dwRest=dwSrcSize;dwRest>0;){
  //ソースから読み取り
  dwRead = min(dwDefRead,dwRest);
  src.FillWaveStream(dwOffset,StreamHeader.pbSrc,dwRead);//dwOffsetからdwReadだけpbSrcにWAVEストリームコピー
  dwRest -= dwRead;
  dwOffset += dwRead;
  //変換
  ::acmStreamConvert(hAcmStream,&StreamHeader,ACM_STREAMCONVERTF_BLOCKALIGN);
  //バッファに書き込み
  dst.insert(dst.end(),StreamHeader.pbDst,StreamHeader.pbDst + StreamHeader.cbDstLengthUsed);
}

デバッガで追っていてもエラーコードは返ってきていないので原因が分かりません。
ネットで調べてもacm関連のページはあまり見つからなくて解決できませんでした。
どなたかどこが間違っているか分かる方がいましたら教えてください。よろしくお願いします。
0059デフォルトの名無しさんNGNG
>>45
VirtualAllocExでそのプロセス内にメモリを確保してSB_GETTEXTしてReadProcessMemoryとかで読み込んであげる。
プロセスごとにアドレスが違ってるから普通にポインタは渡せないってだけ。
OSによっては共有メモリでプロセスが違ってても同じアドレスになる。
0060デフォルトの名無しさんNGNG
プロセスの作成を監視する手軽な方法ってないでしょうか?
FindFirstChangeNotificationみたいな感じにプロセスが作成されたのを通知してくれるAPIとかあるといいなと思うのですが。
0061デフォルトの名無しさんNGNG
>>58
acmStreamConvert に送ったデータを変換関数が全て使い切ってない。
dwOffset を読み込んだバイト数でなく変換関数が使った分(cbSrcLengthUsed)だけ進める。

006253NGNG
速レス、ありがとうございました。

>>54
ドライバに関する知識がないので、難しそうですが、
ドライバってハードウェア制御する以外にも色々出来るんですね。
勉強してみたいと思います。

>>56
リンク先斜め読みしただけですが、参考になりそうです。
APIのジャンプテーブルを上書きとか、とても思いつきませんでした。
Advanced Windowsはちょっと高すぎるので、
とりあえず立ち読みをしてみます・・・。

>>57
良いソフトの紹介ありがとうございます。
使ってみます。
0063デフォルトの名無しさんNGNG
OSのデフォルトコードページを、自プロセスだけ、少しの間変更するようなAPIって無いんですか?
006458NGNG
>>61
速レスありがとうございます。

> dwOffset を読み込んだバイト数でなく変換関数が使った分(cbSrcLengthUsed)だけ進める。
とありますが、この場合、StreamHeader.pbSrcには前回使われていなかった部分の先頭からでいいのでしょうか?
こんな感じに・・・
  dwRead = min(dwDefRead,dwRest);
  src.FillWaveStream(dwOffset,StreamHeader.pbSrc,dwRead);//dwOffsetからdwReadだけpbSrcにWAVEストリームコピー
  //変換
  ::acmStreamConvert(hAcmStream,&StreamHeader,ACM_STREAMCONVERTF_BLOCKALIGN);
  //オフセットとかの計算
  dwRest -= StreamHeader.cbSrcLengthUsed;
  dwOffset += StreamHeader.cbSrcLengthUsed;
  //バッファに書き込み
  dst.insert(dst.end(),StreamHeader.pbDst,StreamHeader.pbDst + StreamHeader.cbDstLengthUsed);
006558NGNG
上のソースでうまくいってるっぽいです。
どうもありがとうございました。
006648NGNG
>>59
なるほど。それはシンプルだね。
俺の方法は無駄に複雑にしている気がしてたんだよ。orz

今試せる環境がないので質問させてほしいんだけど、
VirtualAllocExの前に相手プロセスをOpenProcessするわけでしょ。
ログオンユーザーが一般ユーザーやゲストのときでも成功するの?
006759NGNG
>>66
そういえば、一般ユーザーとかで試したことなかった。
取り合えず試してみたが、一般ユーザーでも問題なく動いたよ。
0068デフォルトの名無しさんNGNG
サンクス
おもしろそうだし、明日にでもやってみよう。
006945NGNG
>>67
当方Win9x系なのですが、ググっているとVirtualAllocExを使う方法は
Win9x系では使えない(?)というような話が出ていたのですが
Win9x系でも出来るのでしょうか?
007059NGNG
9x系ではFileMappingとかで確保したメモリを使えばいける。

まとまってるのがあった。
http://www.interq.or.jp/jupiter/susumu/shrmem.html
0071デフォルトの名無しさんNGNG
>>69
俺は、
 http://yebisuya.dip.jp/WinTips/tips7.html
を参考に作った事がある。

この場合、kernel32.dllに
VirtualAllocEx()
VirtualFreeEx()
があれば使えるはず。少なくとも、WinMEにはあるよ
0072デフォルトの名無しさんNGNG
>>60
フックタイプをWH_CBTにしてSetWindowsHookEx()をコールする。
DllMain()のPROCESS_ATTACHでプロセスが作成されたと判断する。

ってのはどう?
0073デフォルトの名無しさんNGNG
エクスプローラからファイルがドロップされた時に
ファイル名を受け取るにはどうすればいいですか?
007445NGNG
>>70-71
thx.
さっそく挑戦してみます。
0075デフォルトの名無しさんNGNG
>>73
WS_EX_ACCEPTFILES
WM_DROPFILES
0076デフォルトの名無しさんNGNG
OLE Drag and Dropを使ったアプリを書いているのですが、他のアプリケーションで
ドラッグが始まったことを知りたい場合はどうやったらいいのでしょうか?
0077デフォルトの名無しさんNGNG
>>76
ただのドラッグなら不可能。何を持ってドラッグ化はアプリ側で定義可能だから。

他のアプリのOLEドのラッグなら、知る方法があるが、
自分のアプリにドロップされようとしていないのに、
知ろうとするのはアプリとして間違っている。
0078デフォルトの名無しさんNGNG
ツールバーをサブクラス化したのですが、
そのサブクラスがWM_COMMANDだけを受け取ってくれません。
メッセージボックスでチェックしたところ他のは受け取っているようなんですが・・・

ツールバーはCreateWindowExで作成し、
サブクラス化した後、ボタンを追加しています。

どこか問題があるのでしょうか?
0079デフォルトの名無しさんNGNG
>>78
WM_COMMANDを受け取るのは親ウインドウだろ。
ツールバーのクラスが親に投げているので、サブクラスで取れるわけないじゃん。
0080デフォルトの名無しさんNGNG
>>78
親ウィンドウにWM_COMMANDが送信されてると思う。
0081デフォルトの名無しさんNGNG
>>79-80
なるほど。
すいません、知りませんでした。
ツールバーのどのボタンが押されたかをサブクラスで知るにはどうしたらいいのでしょうか。
ウィンドウプロシージャを弄れないので、サブクラスで受け取らなきゃいけないんです。
0082デフォルトの名無しさんNGNG
>>81
ボタンなんかとれません。ツールバーのは、実はボタンじゃないから。
SPYで見てみると、このことはわかります。
なので、ツールバーを持つウィンドウクラスを一個作ってラップするか、
ツールバーを自作してください。
0083デフォルトの名無しさんNGNG
>>81
親ウィンドウをサブクラス化する手もあるね
008478NGNG
>>82-83
分かりました。
ありがとうございました。
008518NGNG
早速ReadDirectoryChangesWのサンプルソースを使って見ましたが、
重くなるような感じはしませんでした。

それで、ReadDirectoryChangesW()を使う上で一つ疑問が生まれました。
ファイルやディレクトリの変更があった瞬間で、行ったユーザ名の情報を
どうやって取得するかです。
ネットワークでの共有ディレクトリを監視したいときに、誰がその行為を
したのかという情報を得たいためです。
ファイルやディレクトリに関するAPIを探してみましたが、ありませんでした。

どなたか何らかの方法をご存知でしたら、教えてください。
0086デフォルトの名無しさんNGNG
あるウィンドウ上にBUTTONを三つほど乗せているんですが、そのボタンの上でマウスホイールが
クリックされたことを知るためにサブクラス化を用いようと思っています。この場合、そのメッセージを
受け取るためのコールバック関数はそれぞれ別にする必要はありますか?
008786NGNG
できるみたいなのでやってみます。すれ汚しすいませんでした。
008818NGNG
>>85
補足です。
ユーザ名を得る関数は、GetComputerNameやGetUserNameの2つがあることは
知っています。
85での取得イメージとして、ReadDirectoryChangesWで得られるFILE_NOTIFY_INFORMATION
構造体にあるファイルやディレクトリ情報を使って、ユーザ名を得たいです。
0089デフォルトの名無しさんNGNG
windows2000で、
ネットワークアダプタにケーブルが接続されているかどうかを
取得できるAPIはないでしょうか?

XPだと、Win32_NetworkAdapterクラスの
NetConnectionStatusプロパティを参照で行けたのですが・・・
0090デフォルトの名無しさんNGNG
BCCをウェブ講座参考にしていますが、DIBの仕組みの辺りで躓いてます。
ttp://wisdom.sakura.ne.jp/system/winapi/win32/win120.html

bmpInfo = (BITMAPINFO *) malloc (bmpFileHeader.bfOffBits - dwBytes);
bmpFileHeader.bfOffBits - dwBytesの計算が分かりません。

dwBytesはそれ以前に代入された
ReadFile(hFile , &bmpFileHeader , sizeof (BITMAPFILEHEADER) , &dwBytes , NULL);
で代入されたBITMAPFILEHEADERのバイト数だと思うので、
ピクセルビットの開始点までの範囲からファイルヘッダの範囲を引いたら、
情報ヘッダ(BITMAPINFO)のメモリのサイズが求められるって事ですか?
0091デフォルトの名無しさんNGNG
>>89
試してないけど、ここで似たようなことやってる。
ttp://www.experts-exchange.com/Programming/Q_20696554.html

INetConnectionManager
↓
IEnumNetConnection
↓
INetConnection ... のプロパティ
という流れらっしー。
0092デフォルトの名無しさんNGNG
>>90
算数できる?
図かいて整理してみ。
009360NGNG
>>72
うまくいきました。ありがとうです。
009489NGNG
>>91
ソースをコピペして試してみたところ、
Windows2000でも目的の動作を実現できました。

これから、ゆっくりソースを読んで理解したいと思います。

ありがとうございました。
009576NGNG
>>77
回答ありがとうございます。

>アプリとして間違っている。
ユーザーに有効無効を設定できるようにするので問題ないようにも思います。

目的はOLEのドラッグの検出のみです。なにか、ぐぐるのキーワード等教えていただけないでしょうか?
009690NGNG
>92
ああ。何となく確信もてた。スマソ。
ビット苦手だOTZ
0097デフォルトの名無しさんNGNG
起動ドライブのProgram Filesフォルダを取得するAPIを教えてください
0098デフォルトの名無しさんNGNG
>>97
SHGetSpecialFolderLocationで、CSIDL_PROGRAM_FILES指定
0099デフォルトの名無しさんNGNG
>>98
SHGetSpecialFolderLocationでぐぐったけどその定数定義してるとこみつからなかった〜
でもできますた、ありがとうエロい人
0100デフォルトの名無しさんNGNG
>>71
98/Meにはエントリはあるがダミーだよ
(常にERROR_CALL_NOT_IMPLEMENTEDを返すだけ)
0101デフォルトの名無しさんNGNG
レジストリに書いてなかったっけ
0102デフォルトの名無しさんNGNG
>>97
ナウなヤングはSHGetSpecialFolderPath()を使うよ。
0103デフォルトの名無しさんNGNG
同じプリンタに対して同じ印刷データを
通常のアプリケーションからは印刷できるけど
サービスプログラムからは印刷できないっす。

サービスはシステムローカルアカウントが動作するのが
原因と思われるんですけど、
印刷できるようにすることってできますかね?
0104デフォルトの名無しさんNGNG
>>103
俺も、サービスからネットワークプリンタに印刷できなかったことがある。
ネットワークにアクセスする権限がないんだと納得してたんだけど
ローカルプリンタでもダメなのか。

それはともかく、俺の場合はLogonUser APIを使って
ネットワークにアクセスできるユーザーに偽装することで回避した。
0105デフォルトの名無しさんNGNG
デスクトップにアクセス?
0106104NGNG
プリンタドライバをどうやってインストールしたか、
が関係する可能性もある。
コントロールパネルの「プリンタの追加」?
0107デフォルトの名無しさんNGNG
>>102
本当にナウなヤングはSHGetFolderPathだろ
0108デフォルトの名無しさんNGNG
ナウなぺヤングソースやきそば
0109デフォルトの名無しさんNGNG
CDDBに接続して曲名を取得する方法をぐぐってるのですが、CDDBの使い方とかばっかりで技術的なのが出てきません。
そういう資料があるサイト知ってる方、教えて下さい。

多分、WinSock絡みの処理になるのかなーWinSock使った事ないなーとか考えつつ(;;´Д`)ハァハァしてます。
0110デフォルトの名無しさんNGNG
>>109
libcdaudio を使えば出来るらしい。
http://cdcd.undergrid.net/libcdaudio/
0111デフォルトの名無しさんNGNG
http://www.google.co.jp/search?hl=ja&q=CDDB+%E6%9B%B2%E5%90%8D+%E5%8F%96%E5%BE%97&lr=lang_ja
0112デフォルトの名無しさんNGNG
>>109
通信内容見てみればやってることは簡単にわかるけど、たしかライセンスいるよ
CDDB ライセンス でぐぐってみ
0113デフォルトの名無しさんNGNG
>>109
あと音楽関係のソフトはオープンソースが多いから
直接ソース見ればいい
0114デフォルトの名無しさんNGNG
>>110 のは FreeDB のライブラリだろ?これライセンスいったっけ?
Gracenote CDDB はライセンスが必要だが。
0115109NGNG
libaudiocdってのは、ダウソできなくなってる・・・。

ライセンスいるんですかー・・・。だよなー、そううまい話がある訳ないよなぁ・・・。
あとこれ、パッと見た感じGNUぽいですね。とすると、これ使ったら漏れもソース公開しなきゃならんって事ですか。
読みやすいコードに心がけなくては・・・。
0116デフォルトの名無しさんNGNG
>>106
単に、プリンタを使えるユーザーならプリンタを使える、
というだけな気がする。
0117デフォルトの名無しさんNGNG
>>115
GNU使う時は、その辺が嫌だね
いい加減に書いたソースでも公開しないといけない
0118デフォルトの名無しさんNGNG
質問です。
メッセージループのメッセージのないところの処理に

DWORD lNowTime = GetTickCount();
static DWORD lOldTime = 0;
if( ( lNowTime - lOldTime ) > 2 ){
 SetForegroundWindow( hWnd );
 lOldTime = lNowTime;
}
〜処理〜

と書いたのですが、起動した後すぐにアクティブになるだけで
後はぜんぜんアクティブになってくれません。
常にアクティブ(最前面)にするにはどうしたらよいでしょうか?
0119デフォルトの名無しさんNGNG
>>115
そもそもlibaudiocdはWinじゃないだろ
0120デフォルトの名無しさんNGNG
>>118
SetWindowPos
0121デフォルトの名無しさんNGNG
そもそもメッセージループのメッセージがないところの処理て。
0122デフォルトの名無しさんNGNG
>>118
DWORD lNowTime;
static DWORD lOldTime = 0;
lNowTime; = GetTickCount();
if( ( lNowTime - lOldTime ) > 2 ){
 SetForegroundWindow( hWnd );
 lOldTime = lNowTime;
}
0123デフォルトの名無しさんNGNG
そもそもアクティブと最前面はまったく違う概念なわけだが
常にアクティブ(最前面)って何やねん
0124デフォルトの名無しさんNGNG
システムモーダル。
0125デフォルトの名無しさんNGNG
BringWindowToTop()ってのもあるよな。
0126118NGNG
ありがとうございました。

>そもそもアクティブと最前面はまったく違う概念なわけだが
なんとなく違うということはわかるのですが・・・・、
フォアグラウンド、アクティブなどでしょうか?
詳しく説明しているサイトなどはありますでしょうか?

それと、キー入力(フォーカス?)を自分にもってくるということはできるでしょうか?
最前面にもってきてユーザーからの入力を求めるような感じの。
SetFocusで、できそうなのですができません。
0127デフォルトの名無しさんNGNG
TOPMOST
0128デフォルトの名無しさんNGNG
>>115
>あとこれ、パッと見た感じGNUぽいですね。とすると、これ使ったら漏れもソース公開しなきゃならんって事ですか。
GNUな部分だけDLLにして逃げる、という手もある。
その代わり、せっかく作るなら使いやすいDLL作れよ・・・
0129デフォルトの名無しさんNGNG
>>128
それダウンロードできないしWindows用じゃない。
適当に検索して見つかったやつを内容も見ないで無責任に教えたんだろう。
0130デフォルトの名無しさんNGNG
>>129
Windows用じゃなくても、ソースを見れば何やってるか見当が付くだろう?
0131デフォルトの名無しさんNGNG
>>130
わざわざWindows用じゃないやつのソース見んでも
Windows用のソースがいくらでもある。
0132デフォルトの名無しさんNGNG
>>131
どこに?
0133デフォルトの名無しさんNGNG
>>131
いくらでもあるなら、なんで教えてあげないの?
0134デフォルトの名無しさんNGNG
VC++6でWritePwrScheme()を使ったプロセスを作っています。
「powrprof.h」と「powrprof.lib」を使用してビルドを行うと
リンクの時点で
 error LNK2001: 外部シンボル "
 "unsigned char __stdcall WritePwrScheme(unsigned int *,char *,char *,struct _POWER_POLICY *)"
 (?WritePwrScheme@@YGEPAIPAD1PAU_POWER_POLICY@@@Z)" は未解決です
とエラーが発生しビルドできません。
「powrprof.h」と「powrprof.lib」のバージョンが合っていないのでしょうか?
そうだとしたらVC++6でビルドできる「powrprof.h」と「powrprof.lib」は
どうやって入手すればよいのでしょうか?
ちなみに
CanUserWritePwrScheme()でも同一リンクエラーが発生します
 
0135デフォルトの名無しさんNGNG
http://www13.cds.ne.jp/~wstar/n/cddb2.dml
http://www.gracenote.com/gn_japan/cddb.html
0136デフォルトの名無しさんNGNG
>>135
> http://www13.cds.ne.jp/~wstar/n/cddb2.dml
Windowsのソース?

> http://www.gracenote.com/gn_japan/cddb.html
製品
0137デフォルトの名無しさんNGNG
>>134
そもそも、素のVC6に「powrprof.h」と「powrprof.lib」ってあったっけな・・・

とりあえず、>>2のPlatformSDK updateしてみたら?
0138デフォルトの名無しさんNGNG
>>137
>素のVC6に「powrprof.h」と「powrprof.lib」ってあったっけな・・・
VC7にあるのを使ってますが、蛇道ですか?
0139デフォルトの名無しさんNGNG

>>104
亀レスでスマソ
LogonUserのAPIでいけそうです

で、そのLogonUserのパラメータへ設定するドメイン名/ユーザー名/パスワードを
事前にチェックようと思いまして、
NetUserChangePasswordで新旧パスワードを一緒にしてチェックをしてみたんですけ
ど、
該当ドメインに参加してない端末から、ユーザ名/パスワードが正しいかをチェック
しようとすると
ERROR_CANT_ACCESS_DOMAIN_INFO(1351)というエラーが返却されるんですが、

他にユーザ名/パスワードをチェックする方法ってあったりするんでしょうか?

0140デフォルトの名無しさんNGNG
>>134
これはどうだ?
extern "C" {
#include <powrprof.h>
}
0141デフォルトの名無しさんNGNG
>>140
べりーないす!ありが�d!
0142デフォルトの名無しさんNGNG
>>140
スゲー 美しくは無いけどその発想に脱帽
0143デフォルトの名無しさんNGNG
発想って…
常套句なんだがなあ
0144デフォルトの名無しさんNGNG
タスクバーのアイコンをクリックしたときのメッセージを教えてくださ
0145デフォルトの名無しさんNGNG
WM_LBUTTONUP
0146デフォルトの名無しさんNGNG
エロい人ありがとう
0147デフォルトの名無しさんNGNG
エディットボックスに半角英数しか
入力できないようにするにはどうしたらよいでしょうか。
0148デフォルトの名無しさんNGNG
>>135
Gracenoteのサンプルあっさり動いた。
ライセンスまだ届いてないけどいいのか?
0149デフォルトの名無しさんNGNG
Windows98 と bcc5.5.1 を使ってますが、GetSystemMetrics() は
戻ってきた時、レジスタ eax, edx, ecx を破壊していませんか?
たとえば
GetSystemMetrics(SM_CXSCREEN);
と呼んでみた時です
デバッガで、この関数の前後でのレジスタの変化をみました

この関数は
windef.h や winuser.h の中で
#define CDECL _cdecl
#define WINAPI CDECL
int WINAPI GetSystemMetrics(int nIndex);
と宣言されているようです

返り値のために eax が破壊されるのはわかるのですが
てっきり edx, ecx は保存されていると思っていた…

WINAPI は、eax, edx, ecx を破壊する呼び出し規約でしょうか?
0150デフォルトの名無しさんNGNG
>>149
 確か x86 用の VC++ (Microsoft の C/C++ コンパイラ) の ABI では、
関数呼び出しで ebp 以外の汎用レジスタはどれも破壊しても構わない
ことになっていたような気がする・・・bcc でも同様でしょう。
0151デフォルトの名無しさんNGNG
win2000,VC6でMFCを使わずにwindowsアプリを開発しています。
マウスカーソルを消したいのですが、どうすればいいでしょうか?
ShowCursor(true)は、ウィンドウ外に行くとマウスカーソルが表示されてしまいます。
SetCursor(NULL)とやってみましたが、マウスカーソルが消えすらしませんでした。
0152デフォルトの名無しさんNGNG
SetCaptureしてからShowCursorすれば?
0153デフォルトの名無しさんNGNG
アフォの言うことは聞かないように
0154デフォルトの名無しさんNGNG
>>152さん、どうもです。

SetCapture(hWnd);
ShowCursor(false);
こう書いてみましたが、メインフレームからはずれると消したマウスが表示
されてしまいます。
0155デフォルトの名無しさんNGNG
>>153
天才のあなたなら答えがわかるのではありませんか?
0156デフォルトの名無しさんNGNG
答えは「そんなことを望んではいけない」だ
0157デフォルトの名無しさんNGNG
>>156
無理だという事なんでしょうか?
それともただのなじりでしょうか?
理解しかねます。。。
0158デフォルトの名無しさんNGNG
きょうは、ようちえんですなどけいのえをかきました。じょうずにかけたので
はやくおかあさんにみてほしいなとおもっていたら、けんじくんがぼくのえを
びりびりとやぶってしまいました。おかあさんにきょうはどんなことをしたのと
きかれたので、みんなでなわとびをしたといいました。
0159デフォルトの名無しさんNGNG
>>147
エディットボックスに半角英数しかはIME起動しなくすればよさそうだけど
コピペできちゃうから
0160デフォルトの名無しさんNGNG
>>149
eax/edx/ecx: 破壊してもよい
ebx/esi/edi: 破壊しちゃだめ
となっております。
Windows だけじゃなくて、i386 で動く UNIX でも全部そうなってる。
0161デフォルトの名無しさんNGNG
>>151は無理そうですね。残念です。
透明なマウスカーソルで置き換えられるか試そうと思います。
0162デフォルトの名無しさんNGNG
>>157
そんなアプリを使わされたらブチ切れそうってことではないかとw
0163デフォルトの名無しさんNGNG
>>157
他APのSetCursor とか WM_SETCURSOR とかをフックすればできるとは思います。
逆にかならずマウスカーソルを表示させるために同様のことをするAPと同時に動くと、
動作は不定なのだろうけれども。

>>162
タッチパネル付きモニタとかで使う業務用端末とかじゃないの?
0164デフォルトの名無しさんNGNG
マウスをどっかに固定しとけば?
0165デフォルトの名無しさんNGNG
あー SetCursorPos(0,0);
やってみたらとんでもないことに
0166デフォルトの名無しさんNGNG
マウスドライバを削除すれば?
0167デフォルトの名無しさんNGNG
だから答えるなと
0168デフォルトの名無しさんNGNG
フォントサイズのデフォルトの値は環境によって変わるものですか?
また、通常のデフォルトのフォントサイズの値を教えてください。
0169デフォルトの名無しさんNGNG
>>147
自由に入力させて、入力を全部チェック
入力文字を調べて、'a'〜'z'か'A'〜'Z'か'0'〜'1'以外の値なら削除
0170デフォルトの名無しさんNGNG
大阪(西梅田)、新宿(JR駅前)のそれぞれ一等地に
拠点を構え、業績急上昇中!未経験者大募集中!の
ソフトウェア開発会社
グリーンシステムを応援するHPです。
http://www.geocities.jp/grs_hp/

応援するスレはこちら!
http://school4.2ch.net/test/read.cgi/job/1077432387/

最高の会社にするため、みんな頑張ってます!

0171デフォルトの名無しさんNGNG
マウスをはずせば良い
0172デフォルトの名無しさんNGNG
ビットマップで塗りつぶしたウィンドウに、
DrawTextで文字を書くと、
文字の背景に白い四角形がでてきます。
文字だけを表示するためにはどうすればよいのでしょうか。

ビットマップの上にさらにビットマップを重ねるときは、
透過処理用のビットマップを用意してBitBltで重ねるのは知っているのですが。
0173デフォルトの名無しさんNGNG
オバキュー
0174デフォルトの名無しさんNGNG
SetTextMode
0175デフォルトの名無しさんNGNG
SetBkModeじゃね?
つうかこんなのググれば一発なのに。
0176デフォルトの名無しさんNGNG
あぁ、ごめん、DrawTextだとうまくいくかワカンネ。
TextOutなら上手くいった記憶あり。
0177172NGNG
初歩の初歩でした。
すみません。
でも私はこれで30分以上詰まってたので、
大変助かりました。
0178デフォルトの名無しさんNGNG
DrawTextで大丈夫でした。ありがとうございます。
0179147NGNG
>>159>>169
どもです。
やっぱ入力後にチェックするのが確実そうですね。
ありがとうございました。
0180デフォルトの名無しさんNGNG
>>173
すでにわかってるやつにしかわからないという無意味さにワロタ
0181デフォルトの名無しさんNGNG
スルーされてるしな
0182デフォルトの名無しさんNGNG
いてーよーオバキュー
0183デフォルトの名無しさんNGNG
オペ逝く?
0184デフォルトの名無しさんNGNG
ET用オバキュー
0185デフォルトの名無しさんNGNG
OPAQUEをオパキューと読むスレはここですか?
0186デフォルトの名無しさんNGNG
>>185
http://pc5.2ch.net/test/read.cgi/tech/1056173956/
0187デフォルトの名無しさんNGNG
>>185
オパクエだろ
0188デフォルトの名無しさんNGNG
数値(int)を文字列に変換するAPIおしえて
0189デフォルトの名無しさんNGNG
wsprintf
0190デフォルトの名無しさんNGNG
>>189
それ逆だからっ!
0191デフォルトの名無しさんNGNG
StrToIntExって何かリンクしないと使えない?
0192デフォルトの名無しさんNGNG
何もリンクせずに使えるWin32APIは無いよ
0193デフォルトの名無しさんNGNG
>>191
それ逆じゃないか?
0194デフォルトの名無しさんNGNG
>>191
shlwapi
ちなみにこれはWin98/2kかIE4以降でないと入っていない。
0195デフォルトの名無しさんNGNG
>>193
逆だから
>>194
そのヘッダーはインクルードしてんだけど、リンク時になんかStrToIntExAが未解決って
0196デフォルトの名無しさんNGNG
>>194
0197デフォルトの名無しさんNGNG
「何かリンクしないと使えない?」
「shlwapi」
「そのヘッダーはインクルードしてんだけど」
0198デフォルトの名無しさんNGNG
>>195
インポートライブラリをリンクしろ。
ところで188ではint→charを聞いているがStrToIntExはchar→intだぞ。
0199デフォルトの名無しさんNGNG
>>198
なにむきになってんの?
0200デフォルトの名無しさんNGNG
・int->char*
sprintf
・INT->LPTSTR
wsprintf
・char * -> int
atoi
・LPTSTR->INT
_ttoi
0201デフォルトの名無しさんNGNG
自己解決しました。
0202デフォルトの名無しさんNGNG
自己満足しました。
0203149NGNG
>>150さん、>>160さん、どうもありがとう
0204デフォルトの名無しさんNGNG
自己猫耳ごっこしました。
0205デフォルトの名無しさんNGNG
自己完結しました
0206デフォルトの名無しさんNGNG
最大化ボタンを押されたのを知るにはどうすればいいですか?
0207デフォルトの名無しさんNGNG
WM_SYSCOMMND
0208デフォルトの名無しさんNGNG
>>188
SetDlgItemIntしてGetDlgItemText
0209206NGNG
>>207
ありがとうございます。
0210デフォルトの名無しさんNGNG
>>208
文字配列をソートするのに、LBS_SORTなリストボックスにぶちこんでから
取り出していた奴は実在する。
0211デフォルトの名無しさんNGNG
32ビットのDIBを作って、指定したピクセル群にアルファ値を設定したいです。
GDI+ではブラシなどがアルファ値をもつので普通の描画操作(Polygonなど)で
できると思うのですが、GDIでこれをやるにはメモリを直接書き換えるしかないの
ですか?
0212デフォルトの名無しさんNGNG
まぁ普通はDIBSectionでやるよな。
0213デフォルトの名無しさんNGNG
>>212
異常者は?
0214デフォルトの名無しさんNGNG
>>213
SetPixcel()
0215デフォルトの名無しさんNGNG
>>210
某VBマガジンでソートの実装が面倒なときはこんな事もできると紹介されていたな
0216デフォルトの名無しさんNGNG
>>214
異常者!無理じゃねーか
0217デフォルトの名無しさんNGNG
ttp://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpdnwui/htm/layer.asp
0218デフォルトの名無しさんNGNG
>>217
あほ
0219デフォルトの名無しさんNGNG

WS_CAPTION | WS_MINIMIZEBOX | WS_SYSMENU,
を指定して作ったウインドウの、クライアント領域を600に固定したいときの、
nHeightの指定の仕方を教えてください。

#define WINDOW_TATE (600 + SM_CYFRAME + SM_CYMENU)
では、少しクライアント領域が広くなるようです。
0220デフォルトの名無しさんNGNG
>>219
AdjustWindowRect
0221デフォルトの名無しさんNGNG
即答ありがとうございます。
0222デフォルトの名無しさんNGNG
>>221
出来たみたいだからいいけど、

> #define WINDOW_TATE (600 + SM_CYFRAME + SM_CYMENU)

明らかに使い方間違ってないか?
0223デフォルトの名無しさんNGNG
MFCとかアプリケーションウィザードとか使わずに、
普通にリソースエディタを使ってダイアログベースのアプリを作ってます。
それで、メインのダイアログにメニューをつけようとしてるんですが、
リソースにメニューを挿入し、そのメニューのIDを
メインダイアログの「プロパティー」の「一般タブ」から
指定してあげてもテストプレビューでメニューがまったく表示されません。
なにか他に必要な設定などはあるのでしょうか?
それともテストでは見えないものなんでしょうか?
0224223NGNG
コンパイルしたらちゃんと表示されたから
そういう仕様なのかな…
0225デフォルトの名無しさんNGNG
マウスの左ボタンをおして画面上を動かすと、画面の絵が動くようにしていて
途中で落ちるので、調べた結果、CreatePen() の廃棄洩れがあったのですが、
何回かは廃棄洩れがあっても動きます。何が満杯になると落ちるのか、分かり
ますか。
0226デフォルトの名無しさんNGNG
GDIリソース
XPにも9xよりはるかに数字は大きいが上限はある
0227デフォルトの名無しさんNGNG
普通「破棄」だと思うが。
原因は「破棄のし忘れでリソース不足に陥っていること」だろう。
破棄をきちんとすればいいこと。
0228デフォルトの名無しさんNGNG
透明なウインドウを作りたいのですが、
どうすればできるでしょうか。

C言語、borlandのコンパイラで作成しています。
0229デフォルトの名無しさんNGNG
「透明なウィンドウ」という言葉の意味による。
見えないウィンドウって意味なら表示させなきゃすむわけだが。
0230デフォルトの名無しさんNGNG
>>228
Layered Window
0231デフォルトの名無しさんNGNG
インターネットエクスプローラのクライアント領域を全て選択→コピー
するような文字列の取得を行うプログラムを作るにはどうすればいいのでしょうか?
対象プログラムのタイトルとか各コントロールの文字列を取得するのは分かったんだけど、
クライアント領域を手動でコピーするような操作が分からない
不可能なのでしょうか?
0232デフォルトの名無しさんNGNG
MSAA
0233デフォルトの名無しさんNGNG
任意の文字列を再変換したいんですけど、
うまくできません。
というより、どうすれば良いのかよくわかりません。
とりあえず、再変換構造体PRECONVERTSTRINGとか
ImmSetCompositionString()を使うって
ところまではわかったのですが…。
実際これを使ってどうすれば良いのでしょうか?
0234ほんたまNGNG
おみゃ〜らよ、system32フォルダにあるDLLの関数を呼び出すには、インポートセクションにDLL名と関数名を書き込んでいくだけで、呼び出せるんだが、
VC++で自分でつくったDLLの関数を同じ方法で呼び出そうとすると、「DLL何に○○のエントリーポイントが見つかりません」というメッセージが出て呼び出せないんだ…
おみゃ〜らよ、自分でつくったDLLとwindows付属のDLLとは、どっか構造が違うのかな?
windows付属のDLLと同じ構造のDLLを自分でつくるにはどうすればいいの?
教えてくだされ〜♪
0235デフォルトの名無しさんNGNG
えーと、インポートセクションって何だっけ?
0236デフォルトの名無しさんNGNG
>>234
DLL 作るとき extern "C" した?
0237デフォルトの名無しさんNGNG
便乗質問。
Dependency WalkerでDLLがエクスポートしている関数を見るとき、
自作DLLの関数を見ると、"_hoge@4"のように呼び出し規約に従った接頭・接尾文字が
エクスポートされているように見えるんだが、
たとえばKernel32.dllのGetProcAddressはそのまま"GetProcAddress"でエクスポートされている感じ。
この違いは何が原因?
0238デフォルトの名無しさんNGNG
マルチにレス不要
0239236NGNG
>>237
それも extern "C" しなされ。
0240237NGNG
関数のプロトタイプ全てに一々書く必要があるん?
一応ソース自体も.cなファイルなので、ヘッダでは

#ifdef _cplusplus
extern "C" {
#endif

なんて書いてるんだけど…
0241236NGNG
>>240
ごめん、__stdcall も必要かもしれない。

extern "C" __declspec(dllexport)
int __stdcall Func(...)

こんなんだっけな。
0242デフォルトの名無しさんNGNG
>>240
マクロ化しておけばいいだろう。
ちなみに .c なら extern "C" はいらないよ。
0243237NGNG
自己解決しました。
defファイルを書けばいいのですね。
0244236NGNG
>>241
なんども間違えてすまんな。
MSDN で __stdcall を調べてみれば分かると思うけど、
__stdcall には @ がつくんだ。
これをなくそうと思ったら .def ファイルで定義する必要があったと思う。
0245デフォルトの名無しさんNGNG
で、インポートセクション…
0246236NGNG
>>245
たぶん、PE ファイルのインポート セクションのことだろう。
IAT (Import Address Table) とか、そういうのあるところ。
0247デフォルトの名無しさんNGNG
177 名前:ほんたま :04/11/06 20:40:20
おみゃ〜らよ、system32フォルダにあるDLLの関数を呼び出すには、インポートセクションにDLL名と関数名を書き込んでいくだけで、呼び出せるんだが、
VC++で自分でつくったDLLの関数を同じ方法で呼び出そうとすると、「DLL何に○○のエントリーポイントが見つかりません」というメッセージが出て呼び出
せないんだ…
おみゃ〜らよ、自分でつくったDLLとwindows付属のDLLとは、どっか構造が違うのかな?
windows付属のDLLと同じ構造のDLLを自分でつくるにはどうすればいいの?
教えてくだされ〜♪
0248236NGNG
>>247
だから .def ファイルを使うんだって。
.cpp で関数を定義しているんなら extern "C" をしておいたほうがいい。
0249219NGNG
>>222
間違っていました。
#define WINDOWS_TATE 600

HWND hWnd;
int y1, y2, y3;
y1 = GetSystemMetrics(SM_CYFIXEDFRAME);
y2 = GetSystemMetrics(SM_CYCAPTION);
y3 = GetSystemMetrics(SM_CYMENU);

hWnd = CreateWindow(〜〜〜〜〜〜, WINDOWS_TATE + y1 + y2 + y3 ,〜〜〜);

が正しいと今の自分は思っています。
GetSystemMetricsで値を得る前に#defineで定義してはまったくだめですね。

0250228NGNG
>>229
ウインドウの背景を透明化させたいです
最初にNULL_BRUSHを指定したの時のように(これはただ塗りつぶさないだけのようですが。。)
>>230
詳細がのっているところはありませんか?
0251デフォルトの名無しさんNGNG
>>250
>詳細がのっているところはありませんか?
MSDN
0252デフォルトの名無しさんNGNG
>>228
SetLayeredWindowAttributes
0253デフォルトの名無しさんNGNG
すいません、SzFindLastChを使って、拡張子を調べてみようと思ったのですが、
この関数を使うと「デフォルトのメールクライアントが設定されていないか〜」と、
なぜかOutlookを起動するように促すメッセージが出てきます。
ここだけコメントアウトすると何も無いので、この関数に間違い無いと思います。
英語のページしかなかったので、自力でヘッダファイルを探して、mapiutil.hに宣言があったのでincludeしたのですが、これが問題なんでしょうか…
言語は、C++(をC言語として利用)で、テストに数値を書き出している段階なのでWinMainではなくmain関数から実行しています

因みに、メーラーはAl-Mailを使っていて、OEは使ってません
0254デフォルトの名無しさんNGNG
単純に四角でないウィンドウを作りたいだけならSetWindowRgn()で充分。
半透明をサポートしたいならUpdateLayeredWindow()が基本。
0255デフォルトの名無しさんNGNG
アプリケーションがOSからのサスペンドイベントを受信する方法について何かヒントください
0256デフォルトの名無しさんNGNG
>>246
PE ヘッダの内部のセクションとかそういうの?
PE ヘッダなんてまともに調べたことなかったな。

しかし、__declspec とかした方が早いような気がするのは
俺だけか。
0257230NGNG
>>250
ms-help://MS.PSDK.1033/winui/winui/windowsuserinterface/windowing/windows/usingwindows.htm#layered_win
0258デフォルトの名無しさんNGNG
WM_POWERBROADCAST
0259228NGNG
皆さんありがとうございました。
MSDNライブラリには
SetLayeredWindowAttributesがのっていたんですね
無事透明化できました。

しかし透明化(のカラーキー)の場所でマウスクリックが取れません。
これは仕方のないことなんでしょうか?
0260225:pen廃棄漏れNGNG
>>226, >>227 thanks。色をあれこれ変えていて、分岐によって廃棄漏れがあったの。
0261デフォルトの名無しさんNGNG
>>256
__declspec(dllexport)
は関数の外部に公開するというだけで、公開名にはノータッチ。
stdcall なら当然 _hgoe@4 のまま公開される。
_ と @n を削除したければ def ファイルを書くしかない。
0262デフォルトの名無しさんNGNG
>>260
廃棄じゃなくて破棄だってばさ。
0263デフォルトの名無しさんNGNG
>>249
できたみたいだからいいけど、枠線は上と下にあるよ。
0264255NGNG
>>258

さんきゅ!
0265デフォルトの名無しさんNGNG
http://v.isp.2ch.net/up/e606b9e3f104.jpg

ファイルをDLしようとすると
こんなエラーが出てきてしまいます。
2週間前に新しく買ったパソコンで
最初は何もしなくても解凍出来てたみたいなのですが
何かをいじってしまったらしく…
これを元の設定に戻す方法
初期化以外にあれば教えてください。
0266デフォルトの名無しさんNGNG
>>265
PC初心者板池
0267デフォルトの名無しさんNGNG
>>265
飯塚さん、恐らくunlha32.dllを削除したのでしょう。
0268デフォルトの名無しさんNGNG
いかにもなミスですね、飯塚さん。
0269デフォルトの名無しさんNGNG
>>265-268
http://pc5.2ch.net/test/read.cgi/tech/1090324689/
0270デフォルトの名無しさんNGNG
CreateWindow()でウィンドウを作成しているのですが、ダイアログのように、
左上にアイコンを表示せず、でも、右上に×ボタンは表示したいのです。
このような場合、どのようにしたらいいのでしょうか。

RegisterClass()の引数では、wndclass.hIconをNULLにしています。
CreateWindow()の引数では、WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_DLGFRAME
としているのですが、WS_SYSMENUを指定した時点で、アイコンが出てしまいます。
逆に指定しないと×ボタンが出てこないという...。
0271デフォルトの名無しさんNGNG
>このような場合、どのようにしたらいいのでしょうか。

意味のない拘りを捨てればよいと思います。
0272デフォルトの名無しさんNGNG
>>270
1週間ぐらい前に似たような質問をどっかのスレで見た
0273デフォルトの名無しさんNGNG
>>265

タイトルバーの名前も消しておかないと、飯塚さん
0274デフォルトの名無しさんNGNG
真っ青なアイコンを登録
0275デフォルトの名無しさんNGNG
>>274
天才!!
0276デフォルトの名無しさんNGNG
>>270
っVCLベースのダイアログ
0277デフォルトの名無しさんNGNG
>>274
どうせなら、スクリーン全体に貼らなきゃ。
0278デフォルトの名無しさんNGNG
プログラムが起動したディレクトリを知る方法って、起動時に記録しておくしか無いですか?
GetCurrentDirectoryだと、ファイル選択のダイアログとかで変化するし、
GetCommandLineはファイル名しか取得してないみたいです
WinMainからだと、起動時にGetCurrentDirectoryでパスを取得して、それをずっと保持しておくだけでしょうか?
0279デフォルトの名無しさんNGNG
>>275
タイトルバーの色を変えてますた
とか
タイトルバーがグラデってますた
という状況を考えると透明アイコンのほうがいい
0280デフォルトの名無しさんNGNG
>>278
GetModuleFileName
0281デフォルトの名無しさんNGNG
ちなみに起動時にカレントディレクトリがすでにexeのディレクトリと
異なる場合もある
0282デフォルトの名無しさんNGNG
>>280
おお、出来た。
ありがとうございます。
0283270NGNG
>>274, 275, 277
それだとCAPTIONの左側に空白ができちゃいます。

>>276
VCLはわからないですけど、CreateWindow()するのではなく、
リソースとして空っぽの無駄なダイアログを用意しておき、
CreateDialog()で生成したウィンドウをこねくり回すいう逃げは
あるかなと。
ただ、アイコンのないウィンドウスタイルっていうのがあるのなら、
それを使った方がスマートではないかなと質問してみた次第です。
0284デフォルトの名無しさんNGNG
普通のメインウィンドウの子として
CreateDialogで作ったモーダレスダイアログですが、
このダイアログのプロシージャを別ファイルに分割してコンパイルしようとした所、
エディットボックスなどのコントロールのIDが正しく受け取れず
定義されていない識別子ですというエラーがでます。どうしてでしょうか?
分割せずに一つのソースで書いてたときは上手くいっていたのですが…
クラスとかにはしていなくて、普通の関数のようにただソースを分割しているだけです。
///////////////////////////
BOOL CALLBACK DlgProc(HWND hwDlg,UINT msg,WPARAM wp,LPARAM lp)
switch (msg) {
case WM_INITDIALOG:
SetDlgItemText(hwDlg,IDC_EDIT,"aaa");
return TRUE;}
:
:
///////////////////////////
プロシージャのプロトタイプ宣言はヘッダファイルでしてます。
0285デフォルトの名無しさんNGNG
>>283
Delphi/BCB製アプリのダイアログをSPY++等で見てみれ。
Del/BCBのライブラリはダイアログをCreateWindowで作ってる。
0286デフォルトの名無しさんNGNG
>>284
IDC_EDIT自体をヘッダで宣言しろ。
0287デフォルトの名無しさんNGNG
>>270==>>283
CreateWindowEx でよければ,WS_EX_TOOLWINDOW があるけど。
ただこの場合,どうしても最大化/最小化ボタンは現れないみたい。
0288284NGNG
>>286
ありがとうございます。リソースのヘッダを読み込むの忘れてました。。。
完全に頭がボケてるようです。
ところで一つのソースにまとめて書いてたときのことですが、
下のようにウィンドウハンドルをグローバルにしたとき正しく渡らないのはなぜでしょうか。
この場合コンパイルは通りましたが、エディットボックスには何も表示されませんでした。
////////////////////////////////////////////////////////////////////
HWND g_hwDlg;//グローバル
BOOL CALLBACK DlgProc(HWND,UINT,WPARAM,LPARAM);//プロトタイプ
////メイン関数
INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR, INT )
{略
g_hwDlg =CreateDialog(hInst, "Dialog", hWnd, (DLGPROC)DlgProc);//生成。同時にハンドルをグローバルに
略}
////ダイアログのプロシージャ
BOOL CALLBACK DlgProc(HWND hwDlg,UINT msg,WPARAM wp,LPARAM lp)
switch (msg) {
case WM_INITDIALOG:
SetDlgItemText(g_hwDlg,IDC_EDIT,"aaa");//←グローバルのハンドルを指定
return TRUE;}
:
:
///////////////////////////
0289デフォルトの名無しさんNGNG
>>288
本当にぼけているようですね?
WM_INITDIALOG が呼ばれるのはどのタイミングですか?
0290デフォルトの名無しさんNGNG
どのタイミングでしょう? えへえへ
0291284NGNG
本当にボケてしまったようです。ごめんなさい。えへえへ
0292ほんたまNGNG
WM_TIMERを使ったタイマーイベントなんですが、タイマーイベントがどうも発生しないんです。
ちなみにWM_CREATEのときメッセージボックスを表示すると、タイマーイベントが発生するんです。
でもメッセージボックスを取っ払うと、発生しなくなるんです…
どうして?教えてくだされ〜♪
0293デフォルトの名無しさんNGNG
タイマ取締法違反に引っ掛かったのでしょう。
0294デフォルトの名無しさんNGNG
HWND g_hwDlg = NULL;//グローバル
BOOL CALLBACK DlgProc(HWND,UINT,WPARAM,LPARAM);//プロトタイプ
////メイン関数
INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR, INT )
{略
CreateDialog(hInst, "Dialog", hWnd, (DLGPROC)DlgProc);//生成
略}
////ダイアログのプロシージャ
BOOL CALLBACK DlgProc(HWND hwDlg,UINT msg,WPARAM wp,LPARAM lp)
switch (msg) {
case WM_INITDIALOG:
g_hwDlg = hwDlg; //ハンドルをグローバルに
SetDlgItemText(g_hwDlg,IDC_EDIT,"aaa");//←グローバルのハンドルを指定
return TRUE;}
:
:
0295デフォルトの名無しさんNGNG
自作プログラム内でDLLを使おうと思っているのですが、
DLL関数の呼び出しって普通のクラス関数(非インライン)呼び出しと比べて
オーバーヘッドが大きいんでしょうか?
一回の処理で何百回も呼び出す予定なんですが差はどれくらい出るでしょうか?
0296デフォルトの名無しさんNGNG
>>295
実験してみればいいじゃん
0297295NGNG
すいません環境を書き忘れました。
WindowsXPSP1
VC++6.0SP6
です。
0298デフォルトの名無しさんNGNG
スレッドハンドルの扱いに関してなのですが
スレッドが走ってる状態でそのスレッドハンドルをCloseHandleしていいのでしょうか?
試しにスレッドを作成しスレッド処理の最初でCloseHandleしてみたのですが
その後の処理も走っています。
この場合スレッドハンドルにアクセス(WaitForSingleObjectとか)出来ないだけで
スレッド自信は有効ということなのでしょうか?
0299デフォルトの名無しさんNGNG
>>298
その通り
0300298NGNG
>>299
ありがとう
0301デフォルトの名無しさんNGNG
マウスカーソルを制御する命令と
マウスの移動範囲を限定できる命令を教えてください
CまたはC++でxp、VC.netです
0302デフォルトの名無しさんNGNG
制御と言う意味が分からんが、移動範囲の限定はClipCursor、
形を変えるならSetCursor、位置を指定するならばSetCursorPosなど。
0303デフォルトの名無しさんNGNG
>>302
レス有り難うございます
マウスカーソル位置を指定した位置に表示することでした
早速試してみます
0304デフォルトの名無しさんNGNG
>>295
試してやるから開発環境(ハード・ソフト)をオレにゆずれ
0305デフォルトの名無しさんNGNG
マウスボタンが離されたことを検出できるAPIを教えてください
CまたはC++でxp、VC.netです
0306デフォルトの名無しさんNGNG
APIって…イベントドリブンが分かっているのだろうか。
マウスが離されたら、そういうイベントが飛んでくるに決まってるだろうが。
0307デフォルトの名無しさんNGNG
>>305
フック?
0308デフォルトの名無しさんNGNG
メインウィンドウの×ボタンを押したときに確認のダイアログを出すようなプログラムを
終了させるにはどうしたらいいでしょうか?
WM_CLOSEを送った後に、そのメッセージボックスの「はい(Y)」ボタンをクリックさせる方法を
思いついたのですが、常套手段ではないような気がしましたので。
0309デフォルトの名無しさんNGNG
レーウェンフック
0310デフォルトの名無しさんNGNG
WM_SETFONTで子コントロールのフォントを変更したのですが、
TextMetrics()で確認すると、デフォルトの情報しか返ってきません。
なぜでしょうか?
0311デフォルトの名無しさんNGNG
>>306
>>307
ウィンドウプロシジャ関数内でWM_LBUTTONUPの場合で検出してたのですが
ウィンドウプロシジャ関数内でいろいろいじると変数の取り扱いが複雑になるので
マウスを離すことを検出できる命令ないかなと思ったんですが
0312デフォルトの名無しさんNGNG
>>311
ウインドウプロシージャから別の関数を呼べば解決する問題の気がする。
設計・考え方を見直すべきでは?
0313310NGNG
間違えた。

TextMetrics() -> GetTextMetrics()
0314デフォルトの名無しさんNGNG
ウィンドウの位置を強制的に移動させたいのですが
SetWindowPosなどは高さや幅を指定するのが面倒くさいので
単に移動後の左上のXY座標を入力するだけで
その位置に移動してくれるような命令はないでしょうか。
0315ほんたまNGNG
おみゃ〜ら〜、サンプルアップしたぞ〜♪ホームページもアップしたぞ〜♪宇宙一すげぞ〜♪
おみゃ〜らよ、なぜ宇宙一すげーかわかるかな?
おみゃ〜らよ、おりはな、「Visual C++」で自作したDLLをスリムドカンでつくったプログラムから呼び出すのに成功したんだよ!わかる?
おみゃ〜らよ、DLLを呼び出すプログラムを「Visual C++」」でつくるには、Libファイルをリンクに設定したり、ヘッダファイルをインクルードしたりとやるべきことは多いだろ?
おみゃ〜らよ、DLLを呼び出すプログラムを「HSP」でつくるにも、やはりDLLの他に「.as」ファイルが必要だよ。
だが、「スリムドカン」の場合、DLLの他には一切何も必要ないんだな〜う〜ん、これが…自分じわかる?
つまり「スリムドカン」の場合、DLLさえあればDLLを呼び出すプログラムがビルドできるってわけ♪
おみゃ〜らよ、おりは宇宙一画期的だと思わないか?
おみゃ〜らよ、宇宙一すげ〜とわめいたのはそういうことよ♪
おみゃ〜らよ、自分じどうじ?
0316デフォルトの名無しさんNGNG
>>314
自分で作れ
0317308NGNG
うまい方法が見当たらなかったので、そのやり方でいくことにしました。
0318デフォルトの名無しさんNGNG
>>314
SWP_NOSIZE
0319デフォルトの名無しさんNGNG
>>312
ウインドウプロシージャと直接関係のない関数の中のローカル変数がウインドウプロシージャで必要になるので
そのローカル変数をグローバル変数にしないとウインドウプロシージャ内で利用できないのです
0320デフォルトの名無しさんNGNG
>>310
GetTextMetrics()にはDCのハンドルを指定するわけだけど、
DCの属性は、CS_OWNDCとかを指定しない限り、
最初はデフォルトの情報が選択されているからじゃないかな。
違っていたらスマソ
0321デフォルトの名無しさんNGNG
track bar でパラメータ変えて描画しているんですが、描画にちょいと時間が
掛かるんで、描画が始まったら disable にしようと、EnableWindow() を
使って見たが、効かない。何を使えばいいでしょうか。TBS_... てものあるが
頭に血が上って、英語を読めません。
0322デフォルトの名無しさんNGNG
>>321
頭の血を下げろ
0323デフォルトの名無しさんNGNG
WM_SETREDRAWは効かない?
0324デフォルトの名無しさんNGNG
>>319
聞くだけ聞いてやろう、開発環境は?
0325デフォルトの名無しさんNGNG
>>319
だから、「あるコードの実行中まさにそのコードでマウスのボタンが上がって
いるか」は判別できるけれども、「あるコードの実行中まさにその実行中の
コードでマウスのボタンが上げられた」かどうかを判別できるわけがない。
これはOSに関係ない、時間の概念の問題だろう。

「マウスが上げられた瞬間に、ある指定した関数を呼び出してほしい」という
ことであれば話は別だろうが。
0326デフォルトの名無しさんNGNG
普通は WM_LBUTTONUP のディスパッチャで検出できる。以上!
なんだけどなあ。Win32 としては基本中の基本の処理だ。
後は、設計の問題。設計のまずさをAPIでカバーしようとするのは
本末転倒だろう。
もしゲームだったら DirectInput も調べてみたら。
0327デフォルトの名無しさんNGNG
>>325
>>326
WM_LBUTTONUP 使うかDirectInput使うかのどっちかにします
レスありがとうございました
0328デフォルトの名無しさんNGNG
親ウィンドウを破棄したときに、
子ウィンドウも閉じられますが、
このとき、子ウィンドウにWM_CLOSEは送られるのでしょうか。
たとえば、Objectをいちいちdeleteするのが面倒で、
WM_CLOSEのときにまとめてdeleteするようにしていたときなど、
このオブジェクトはちゃんと全部消されるのか心配です。

こんなコードを書いていたのですが。
0329デフォルトの名無しさんNGNG
LRESULT CALLBACK WPOL01 (HWND hWndOL01, UINT msg, WPARAM wParam, LPARAM lParam)
{
HDC hdc, hBuffer;
PAINTSTRUCT ps;
RECT rect;
static HBITMAP hBitIcon[30];
switch(msg){

 case WM_CREATE:
hBitIcon[0] = LoadBitmap(((LPCREATESTRUCT)lParam)->hInstance, (LPCSTR)IDB_BITBLACK);
//以下Icon用bitmapをどかどか呼び出す
break;

 case WM_LBUTTONDOWN:
SendMessage(GetParent(hWndOL01), WM_CLOSE, NULL, NULL);
 //左クリックされたら、親ウィンドウを破棄。もちろんこのウィンドウも破棄される

 case WM_CLOSE:
for(int i = 0; i < 30; i ++){
 DeleteObject(hBitIcon[i];
} //ココ、これが呼び出されないと困る。
DestroyWindow(hWndOL01);
break;

 default:
return(DefWindowProc(hWndOL01, msg, wParam, lParam));
}
return 0;
}

0330デフォルトの名無しさんNGNG
WM_DESTROY
0331310NGNG
>>320 CS_OWNDC指定したけど、何も変化ないです。

おれの解釈が違ってるみたい…。
コントロールの描画は、フォントが指定されていなければデフォルトが使われて、
指定されていればそのフォントで描画。 
という解釈であってますか?
0332デフォルトの名無しさんNGNG
>>328
あるウィンドウに属するオブジェクト類は
特別な理由が無い限り

WM_CREATE オブジェクトの作成
WM_DESTROY オブジェクトの破棄
と考えると良い。

WM_CLOSE はウィンドウに対しての終了要求メッセージ。
しかし、これに対して拒否することも出来る。
ただし、トップレベルウィンドウにしか送られない。

WM_DESTROY が送られてきたらもう終わるしかない。
0333510NGNG
肝心の部分がぬけてた。
ウインドウにテキストを描画するのと、コントロールがテキストを描画するのは
全くの別物である。という解釈で良いですか?

>>328
おれなら親にWM_DESTROYが送られたときに、
SendMessage()で子にもWM_DESTROYを送ってそこで処理します。
0334デフォルトの名無しさんNGNG
まて

>おれなら親にWM_DESTROYが送られたときに、
>SendMessage()で子にもWM_DESTROYを送ってそこで処理します。

明示的に送らなくても親に WM_DESTORY 送った後に子供にも送られる。
0335310NGNG
下のやり方だと子のMessageBox()が表示されないんですが、また解釈が間違ってますか?

WNDPROC fnDefProc;// グローバル

LRESULT CALLBACK ParentProc(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp)
{
  static HWND hButton;
  switch(msg) {
  case WM_CREATE:
    hButton = CreateWindow("BUTTON", "PUSH", WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON,
        0, 0, 100, 100, hwnd, (HMENU)1, ((LPCREATESTRUCT)lp)->hInstance, NULL);
    fnDefProc = (WNDPROC)GetWindowLong(hButton, GWL_WNDPROC);
    SetWindowLong(hButton, GWL_WNDPROC, (LONG)ButtonProc);
    break;
  case WM_DESTROY:
    //  SendMessage(hButton, WM_DESTROY, wp, lp);
    MessageBox(hwnd, "Parent", "end", MB_OK);
    PostQuitMessage(0);
    break;
  default: return DefWindowProc(hwnd, msg, wp, lp);
  }
  return 0;
}

LRESULT CALLBACK ButtonProc(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp)
{
  if(msg==WM_DESTROY) MessageBox(NULL, "Child", "end", MB_OK);
  return CallWindowProc(fnDefProc, hwnd, msg, wp, lp);
}

0336デフォルトの名無しさんNGNG
>>335
MessageBox()の第一引数は飾りではない。
0337デフォルトの名無しさんNGNG
WM_DESTORYはウィンドウが破棄された結果システムが送る物。
0338デフォルトの名無しさんNGNG
自分で送りたいときはDestroyWindowすれば結果的に発生する
直接SendMessageしてはいけない。
0339310NGNG
>>334-338
やっぱり間違って覚えてたのか。
教えてくれてありがト。
0340321:trackBarNGNG
>>323
どうも。WM_SETREDRAW は効かない。当座の凌ぎに ShowWindow() を使っておく
ことにしたが、バシャッと、皆お隠れになって、ドキッとするね。dim 化で
残したいよ。(下手に活かしておくと、弄られて、描画が起動されるし、busy
にして受け付けないと、freeze 見たいに見えるし)
>>322
TBS_NOTHUMB なんてあるから、隠した thumb を復帰するコマンドがあるだろうと
探しまくったがない。初期設定のみらしい。こんなん何に使うんだ。
頭に来た。まだ下がらない。
0341デフォルトの名無しさんNGNG
>>333
ウィンドウにテキストを描画する場合も、コントロールにテキストを描画する場合も、
描画の前にまずデバイスコンテキストを取得する点では同じだと思う。
取得した時点では各属性はデフォルトのままなので、そこからフォント等の属性を
設定することになるわけだけど、属性を設定した後のデバイスコンテキストが
取得できない限り、GetTextMetrics()ではデフォルトの値が返ってくるだけだと思う。
0342デフォルトの名無しさんNGNG
コントロールのサイズを動的に変えれますか?
ウインドウのサイズ変更にあわせてリストビューのサイズを変えたいんですが
SetClassLongやSetWindowLongではできそうもないんで。
0343デフォルトの名無しさんNGNG
>>342
>>120
0344デフォルトの名無しさんNGNG
Windowsではコントロールもおおむねウィンドウの一種に過ぎない
伊達にWindowsと名乗ってるわけではない
0345デフォルトの名無しさんNGNG
VRAMのサイズやCPUの名前、メモリのサイズを取得したいのですが
それらを取得するAPIはありますでしょうか?
0346デフォルトの名無しさんNGNG
>>344
それもあるかもしれないけど、
WindowsのWindowsたる所以は、シグナル駆動ではなくメッセージ駆動であるということだろう。
WindowsがUnixに勝っている部分のひとつだと思うのだが、認めようとしないUnix支持者。
0347デフォルトの名無しさんNGNG
>>346
X11はメッセージ駆動じゃないの?
0348デフォルトの名無しさんNGNG
>>347
そっとしておいた方がいいよ。
0349デフォルトの名無しさんNGNG
342 は親ウィンドウのサイズ変更に合わせて自動的に子ウィンドウ(コントロール)
がリサイズしてくれるような機能があるかどうかを聞きたいのではないかと
思ったんだけど。
0350デフォルトの名無しさんNGNG
>>349
エスパーな解釈だな・・・

そう思うなら、答えてあげれば良いのに
0351デフォルトの名無しさんNGNG
>349の解釈なら、そんな機能はAPIにはないと言う答かな。

MFCならCodeGuruにCResizerなんてのがあって便利そうだけど。
#それ使っても、結局WM_SIZEやWM_GETMINMAXINFO辺りは自前で処理しないといけないけど。
0352デフォルトの名無しさんNGNG
char buffer[256];
GetWindowText( hwnd, buffer, sizeof( buffer ) );  //A
GetWindowText( hwnd, buffer, sizeof( buffer ) -1 ); //B

APIにはバッファサイズを聞いてくるものが多いですが、
AとBではどちらが正しいのでしょうか

日本語ヘルプだとなんだか変なので、英語のヘルプを
読む限りAが正しい気がするのですが、ネットにはBのサンプルも
多い気がして混乱しています。
0353デフォルトの名無しさんNGNG
nMaxCount
[in] Specifies the maximum number of characters to copy to the buffer, including the NULL character. If the text exceeds this limit, it is truncated.
0354デフォルトの名無しさんNGNG
>>352
(大抵の)API の説明にあるように、最後の NULL キャラクタを含むサイズを指定するわけだけれども、
引き続く処理でいいい加減で良いから楽したい場合には、あらかじめ ZeroMemory しておいた上で
sizeof(buffer) / sizeof(TCHAR) - 1 を指定して必ず 0 ターミネートのストリングを得たりする手もある。

いい加減じゃマズイ場合には、GetWindowTextLength とか使ってちゃんと文字数文の領域を用意したりする。
0355デフォルトの名無しさんNGNG
ZeroMemoryしておかないと終端されないAPIなんてあったっけ?
0356デフォルトの名無しさんNGNG
>>355
バッファサイズが足りないときは殆どのAPIがそうなんじゃない?
ZeroMemory じゃなくて末尾だけ 0 入れとけば十分だけどね。
0357352NGNG
>>354
レスありがとうございます。
しかしうーん、例えば「abc」というWindow名を持ったhwndに

char buf[3] = { 'X', 'X', 'X' };
GetWindowText( hwnd, buf, sizeof( buffer ) );

とやると、bufの中身はちゃんと「ab」であり、終端子も入っています(Windows2000)。
私としては>>352のBは必要のない処理である、で結論づけたい気もするのですが…。

或いは過去の遺物か何かなのかなぁ。
いずれにせよ皆さんお付き合い感謝です。
0358デフォルトの名無しさんNGNG
失礼、誤記です
× GetWindowText( hwnd, buf, sizeof( buffer ) );
○ GetWindowText( hwnd, buf, sizeof( buf ) );
0359デフォルトの名無しさんNGNG
まぁ、世の中碌に調べないで安直に-1して安心しているDQNプログラマが如何に多いかってこった。
0360デフォルトの名無しさんNGNG
>>356
たいてい最後は0が入るよ。lstrncpyさえも。
MSDNの説明はこんな感じ
> [out] Pointer to the buffer that will receive the text. If the string
> is as long or longer than the buffer, the string is truncated and
> terminated with a NULL character.
0361デフォルトの名無しさんNGNG
ListViewのカラムヘッダの文字がきちんと表示されません。
(幅を変えると出て来たり消えたり、とても微妙な調整をしないと表れなかったり。)
どういった可能性が考えられますでしょうか。
もしくはきちんと左揃えとかで表示するようにはできないでしょうか。
0362デフォルトの名無しさんNGNG
スマソ。
漏れが多用する GetModuleFileName やら MultiByteToWideChar やらは NULLキャラクタ
付けてくれないんで、殆どそうなのかと思い込んでた。
0363デフォルトの名無しさんNGNG
>>359
ソース汚いから人に見せれないやつも多いのに
ソース公開するのはそれなりの自信がないとできないだろ。
くだらないことにこだわって時間無駄にするより、
少しでも役に立つコード書いた方がよっぽどまし
0364デフォルトの名無しさんNGNG
>>361
幅が狭いと省略される
広くすれば出るだろう
0365デフォルトの名無しさんNGNG
>>363
そういう意識がバグを生む。
0366デフォルトの名無しさんNGNG
>>364
どもです。なんかスタイル構造体のLVCF_FMTメンバを有効にしてたのに
それを実際にどれにするか設定してないのが悪いみたいでした。
きちんとメンバをlv.fmt = LVCFMT_LEFT;みたく設定したら上手くいきました。
0367デフォルトの名無しさんNGNG
wininetに関して質問があります。

[test] 書き込みテスト 専用スレッド 24 [テスト]
http://qb5.2ch.net/test/read.cgi/operate/1099168555/
↑のスレッドに"書き込む"という文字を書き込みたいのですが。
ERROR:ユーザー設定が消失しています!と言う結果になり、失敗してしまします。
以下のコードをどのようにすれば、書き込めるようになるでしょうか・・。
0368デフォルトの名無しさんNGNG
#include <wininet.h>
void kakikomi();

void kakikomi()
{
HINTERNET hInternet;
HINTERNET hHttpSession;
HINTERNET hHttpRequest;
char CokkieText[1000];
DWORD CokkieTextSize = 0;

// wininetを初期化
hInternet = InternetOpen("Monazilla/1.00",INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
// サーバへ接続
hHttpSession = InternetConnect(hInternet, "qb5.2ch.net",INTERNET_DEFAULT_HTTP_PORT,
NULL, NULL,INTERNET_SERVICE_HTTP, 0, 0);
// HTTP要求の作成
//「書き込む」をURLエンコードした結果→%8f%91%82%ab%8d%9e%82%de
hHttpRequest = HttpOpenRequest(hHttpSession, "POST",
"test/bbs.cgi?submit=%8f%91%82%ab%8d%9e%82%de&FROM=&mail=&MESSAGE=%8f%91%82%ab%8d%9e%82%de&bbs=operate&key=1099168555&time=0",
NULL, "http://qb5.2ch.net/operate/index2.html", NULL, INTERNET_FLAG_RELOAD, 0);
//クッキー取得
HttpQueryInfo(hHttpRequest,HTTP_QUERY_COOKIE,CokkieText,&CokkieTextSize,NULL);
// 作成したHTTP要求の発行
HttpSendRequest(hHttpRequest, CokkieText, -1, NULL, 0);

InternetCloseHandle(hHttpRequest);
InternetCloseHandle(hHttpSession);
InternetCloseHandle(hInternet);
}
0369デフォルトの名無しさんNGNG
IME2002のローマ字入力・かな入力をプログラムから制御したいのですが

ImmSetConversionStatus()だと反映されません

http://support.microsoft.com/default.aspx?scid=kb;ja;419357
にはIME98はダメと書いてあるんですが・・

他の方法があるという事なんでしょうか
0370デフォルトの名無しさんNGNG
>>368
とりあえず通信は成立してるようだからwininetは問題なし
あとは送ってるデータの問題なんでスレ違い
ツール使って荒らすやつがいるからいろいろチェックしてる。
0371デフォルトの名無しさんNGNG
>>362
?????
MSDNのGetModuleFileNameの解説より
lpFilename
[out] Pointer to a buffer that receives a null-terminated string
that specifies the fully-qualified path of the module. If the length
of the path exceeds the size specified by the nSize parameter,
the function succeeds and the string is truncated to nSize characters
and null terminated.
0372デフォルトの名無しさんNGNG
>>368
一度も2chに接続してないクライアントから書き込むと
「クッキー送信する云々」というメッセージが出るだろ?
君の作ったコードだとその儀式を通過していない訳だ。
0373デフォルトの名無しさんNGNG
>>370 >>372
猿にエサ与えるなよ。ヴォケ
0374デフォルトの名無しさんNGNG
>>368
こっちで聞いた方が良いと思われ
http://pc5.2ch.net/test/read.cgi/tech/1098912550/
0375デフォルトの名無しさんNGNG
>>374
というよりこっちだろ。
http://pc5.2ch.net/test/read.cgi/tech/1057329161/
0376333NGNG
>>341
分かりやすい説明ありがト。
0377デフォルトの名無しさんNGNG
>>371
実際に↓みたいなコードで試してみればすぐにわかるけど、最後に 0 なんか付けてくれないよ。

TCHAR szPath[4];
GetModuleFileName(NULL, szPath, 4);

っていうか、msdn にはこうあるけど・・・
ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/getmodulefilename.asp
lpFilename
[out] Pointer to a buffer that receives a null-terminated string that specifies the fully-qualified path of
the module. If the length of the path exceeds the size that the nSize parameter specifies, the function
succeeds, and the string is truncated to nSize characters and "cannot be null terminated".

もしかして漏れ(バッファが足りないと0付かないよ派)が正しくて、>>360とかも勘違いか嘘なんじゃないの?
0378デフォルトの名無しさんNGNG
>>377
APIにより付いたりつかなかったりする。
少なくともlstrncpyは必ず付く。
0379デフォルトの名無しさんNGNG
lstrncpyじゃなくてlstrcpynだった
0380367NGNG
>>370>>372
ありがとうございました。
スレ違いの質問になってしまって申し訳ありません。
0381デフォルトの名無しさんNGNG
>>377
ドキュメント読んで、かつ試してみた。lstrホゲは末尾に0付けてくれる。GetWindowTextも。
0382デフォルトの名無しさんNGNG
MultiByteToWideCharは? (長さ-1だと仮定して)
ドキュメント読む限りだとERROR_INSUFFICIENT_BUFFERに
なりそうだけど実際にそうなるの?
0383デフォルトの名無しさんNGNG
つーかGetModuleFileNameにわざわざ4バイトしかないバッファを
渡すってどういう状況?
0384デフォルトの名無しさんNGNG
>>383
0が付くかのテストする為だろ。空気嫁。
0385デフォルトの名無しさんNGNG
リストビューの列と行を作成し、
値も入れることができました。
しかしアイテム(セットした値)の取得方法が分かりません。
LVM_GETITEMを使えばいいことまでは分かったのですが・・・。
ググっても全然載ってません。。
LVM_GETITEMでリストビューからアイテムを取得する簡単なサンプルを
お教え頂けないでしょうか。
0386デフォルトの名無しさんNGNG
なるほど、APIの文字列の取り扱いは一貫性がないということでFAやね。
0387デフォルトの名無しさんNGNG
>>385
ListView_GetItem()が使えると思う。
ListViewのhWndとLVITEM構造体のポインタを渡すのだが、
LVITEM構造体のiItemとiSubItemが行と列になる。
0388デフォルトの名無しさんNGNG
RECT r = {0, 0, 640, 480};
AdjustWindowRect(&r, WS_OVERLAPPED | WS_MINIMIZEBOX | WS_SYSMENU,TRUE);
CreateWindowにr.right - r.leftとr.bottom - r.topを渡す。

AdjustWindowRectの使い方ってこれで合ってますでしょうか?
正しいサイズが求まらないんですが…
0389デフォルトの名無しさんNGNG
>>388
拡張スタイルがあるならAdjustWindowRectEx。
あとメニューの折り返しが起きる場合は駄目だった希ガス。
0390実行してないよNGNG
>>385
LVITEM lvitem; //<さぁって情報を得て世界に羽ばたくぞ〜
lvitem.mask = LVIF_TEXT | LVIF_STATE; //<今回はセットした「文字列」と「状態」を取得すっかね
lvitem.iItem = 3; //<リスト3番目の・・・
lvitem.iSubItem = 0; //<最初の列っと

lvitem.stateMask = LVIS_SELECTED; //<「状態」は色々あるけど、今回は選択されているかどうかが知りたいの

char buffer_text[256]; //<おっといけねぇ
lvitem.pszText = buffer_text; //<「文字列」を取得するなら入れ物がねぇとな
lvitem.cchTextMax = sizeof(buffer_text); //<APIたんはバカだから、入れすぎないよう「文字列」の長さも指定っと

::SendMessage( hwnd_dialog, LVM_GETITEM, 0, (LPARAM)&lvitem ); //<APIたん、こいつで頼むよ
//ListView_GetItem( hwnd_dialog, &lvitem ); //またはこいつで

if( lvitem.stateMask & LVIS_SELECTED ); //おー入ってる入ってる
OutputDebugString( buffer_text ); //さんきゅう、APIたん
0391デフォルトの名無しさんNGNG
わるい、間違えた
if( lvitem.state & LVIS_SELECTED );
OutputDebugString( buffer_text );
0392デフォルトの名無しさんNGNG
フックに詳しい方、どうかお助けください!

やりたいことは特定ウインドウの低レベルキーボードフックです。
つまり左右のShiftやCtrlキーの区別を取れるフックがしたいのです。
しかしどうやってもスレッド単位のフックができません。
下のように記述(hwndはフックしたいウインドウのハンドルです)しても
hookには0しか返ってきません。つまりフック失敗です。

hook = SetWindowsHookEx(WH_KEYBOARD_LL, HookProc, GetWindowLong(hwnd, GWL_HINSTANCE), GetCurrentThreadId());

しかしシステム単位のフックならできるのです。
下のように書くと、hookには0以外の値が帰ってきて、OS全体がフックできてしまいます。

hook = SetWindowsHookEx(WH_KEYBOARD_LL, HookProc, GetWindowLong(hwnd, GWL_HINSTANCE), NULL);

しかしやりたいのはスレッド単位の低レベルキーボードフックなのです。
低レベルキーボードフックというのは、システム単位でしかできないものなのでしょうか?
※ちなみに低レベルじゃないキーボードフックの場合はスレッド単位でもできました。


0393sageNGNG

フックプロシージャが現在のプロセスに関連付けられているコード内に置かれているときは、
NULLを指定しなければなりません
0394388NGNG
>>389
拡張スタイルは使ってないし、
メニューは折り返しが起きるほど多くは無いです…
0395393NGNG
↑途中
SetWindowsHookExの3番目の引数のこと
0396デフォルトの名無しさんNGNG
>>395
ありがとうございます。
インスタンスハンドルをNULLですよね?
しかしやってみましたがダメでした。

自己レスですみませんが、どうも低レベルキーボードフックはやっぱり
グローバルじゃないとできないみたいです。
GetLastErrorで1429が返ってきたのですが、
その説明が、

ERROR_GLOBAL_ONLY_HOOK
This hook procedure can only be set globally.

ということでした。
道理で、ネットを検索してみてもグローバルな例しか見つからない訳です。
失礼しました。
0397393NGNG
VS6付属のMSDNには
>WH_KEYBOARD_LL スレッド、または、システム
となっているが、MSDN最新 (microsoft.com)では
>WH_KEYBOARD_LL グローバルのみ
となってる。MSDNだけでも最新版使えってことか。
0398デフォルトの名無しさんNGNG
>>388
> Note that you cannot specify the WS_OVERLAPPED style.
って書いてあるので、WS_OVERLAPPEDは指定しない方がいいのでは?
0399388NGNG
>>398
ありがとうございます。解決しました。
その文、Web上のMSDN Libraryには載ってますね…
VC++6のやつには載ってなかったんでorz
0400デフォルトの名無しさんNGNG
文字列入力ダイアログを表示させるAPIって無かったでしたっけ?
0401ほんたまNGNG
みなみなさまがた〜、GetLocalTimeを使って時間を取得すると、SYSTEMTIME構造体にセットされますが、
マニュアルを見るとSYSTEMTIME構造体のメンバは、

年
月
曜日
日
時
分
秒
ミリ秒

と書いてあるんです。
でも実際にSYSTEMTIME構造体にアクセスして先頭から順番に値を表示してみると、

月
曜日
日
時
分
秒
ミリ秒
0?(不明)

の順番にメンバが並んでいるのが正しいのではないかと思うんです。
そこんとこどうなっているのかお聞きしたいんですが…?
教えてくだされ〜♪
0402ほんたまNGNG
みなみなさまがた〜、いまSYSTEMTIME構造体の先頭に印をつけて、バイナリファイル見てみたところ、
何故かSYSTEMTIME構造体の先頭番地より2バイト前のアドレスを読むと、年が正しく取得されることが判明しました!
だからメンバの並び方はマニュアル通りで良かったのですが…
みなみなさまがた〜、何故SYSTEMTIME構造体の先頭番地より2バイト前から値がセットされるのでしょうか?
教えてくだされ〜♪
0403デフォルトの名無しさんNGNG
お前のやり方がおかしいだけだろ。
0404ほんたまNGNG
>>403
つーか実際にはSYSTEMTIME構造体の構造はこう↓なってるんではないかと…
予備領域
年
月
曜日
日
時
分
秒
ミリ秒

でGetLocalTime(&SYSTEMTIME)と呼び出すと、自動的にSYSTEMTIME+2番地から値がセットされていくんではないかと…
どうでしょうか〜みなみなさまがた〜♪
0405デフォルトの名無しさんNGNG
バカすぎて笑える。
0406ほんたまNGNG
あるいはSYSTEMTIME構造体はPREバイト付きの構造体なのかもしれんです…
PREバイトというのは、おりがいま思い付いた概念で、構造体の先頭番地の前に何バイトかの領域を持っていて、
最初のメンバはそこから始まるようにしたもののことを言う。
マイクロソフトのことだから、PREバイト付きの構造体という概念を持っていてもおかしくはない…
0407デフォルトの名無しさんNGNG
つまらんネタだなぁ
0408デフォルトの名無しさんNGNG
winbase.hからのコピペ

typedef struct _SYSTEMTIME {
WORD wYear;
WORD wMonth;
WORD wDayOfWeek;
WORD wDay;
WORD wHour;
WORD wMinute;
WORD wSecond;
WORD wMilliseconds;
} SYSTEMTIME, *PSYSTEMTIME, *LPSYSTEMTIME;
0409デフォルトの名無しさんNGNG
コテハンってこんな奴ばっかりだな…
0410デフォルトの名無しさんNGNG
>>402
これって何かのコピペ?
0411デフォルトの名無しさんNGNG
wYearもWORDなのか。
65536年問題が心配だな
0412ほんたまNGNG
>>408
最初のwYearはDWORDってことはないか?
そうすればすべてがつじつま合うんだが…
ドキュメントの書き間違いかもしれんぞ。
0413デフォルトの名無しさんNGNG
そう思うんならヘッダ見れ
0414デフォルトの名無しさんNGNG
> でも実際にSYSTEMTIME構造体にアクセスして先頭から順番に値を表示してみると、
アクセスの仕方に問題がある悪寒。
0415デフォルトの名無しさんNGNG
>>406
かもしれんじゃなくて実際にあるのだが?
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/csref/html/vcwlkstructstutorial.asp
0416デフォルトの名無しさんNGNG
ATOMってなんですか?
0417デフォルトの名無しさんNGNG
アライメント
0418416NGNG
あ〜すみません、猫のところに説明がありました。探し方が悪かった・・・。
でも、イマイチなににつかうかわからない・・・。
0419デフォルトの名無しさんNGNG
>>416
グローバルアトムは比較的簡単にプロセスをまたぐ文字列のやり取りに使える。
ウィンドウクラスのアトムはCreateWindow(Ex)でクラス名の文字列を指定するよりこっちを使う方が俺は好き。
ローカルアトムは……、何に使えばいいんだ?2バイトケチるためか?
0420デフォルトの名無しさんNGNG
>>411
doubleでも使っとけ、クソが。
0421デフォルトの名無しさんNGNG
2038年問題ってSYSTEMTIMEだと起きないの?
0422デフォルトの名無しさんNGNG
浮動小数点では解決しない(RFC2550)
0423デフォルトの名無しさんNGNG
ビットマップの平均色を求めるにはどうすればいいですか?
例えば1*2のビットマップで(255,255,255)と(0,0,0)なら(128,128,128)みたいな感じです。
正確さよりも処理の速さを優先したいです。
0424デフォルトの名無しさんNGNG
自分で考えろ
0425デフォルトの名無しさんNGNG
>>423
1. MMX 命令で自前の処理を書く
2. Intel の IPP 等を買ってきて使う
3. DirectX のテクスチャにして、ミップマップの自動生成機能を利用する
どれでも適切なやり方でどうぞ。
0426ほんたまNGNG
>>414
>アクセスの仕方に問題がある悪寒

おみゃ〜はどうせ、マイクロソフトのコンパイラが定義してくれてる値を使って、SYSTEMTIME->wYearとかSYSTEMTIME->wMonthみたいなアクセスの仕方しか経験ないだろ?
だからwYearが何番目のメンバかwMonthが何番目のメンバかなんて考えたこともないだろ?
そういうのは隠蔽されているからな w♪
ところがおりは違う。
おりはマシン語を直接使っているので、wYearが何番目のメンバかwMonthが何番目のメンバかを知らないと、プログラミングできないわけだ。
だから[SYSTEMTIME][SYSTEMTIME+2]というようなアクセス方法を使う。
ところがメンバが2バイトずつ前にずれていることが判明したので、疑問に思ったわけだよ。
まあ、これはプログラミングにおける最高度の超絶技巧なので、カプセル化されたプログラミングしか知らないおみゃ〜には想像もつかないだろうがな…♪
自分じわかる?
0427デフォルトの名無しさんNGNG
釣れますか?
0428デフォルトの名無しさんNGNG
効果音なら、midiOutShortMsg より、sndPlaySoundの方が負荷は少ないのですか?

0429414NGNG
>>426
長レスに敬意を表して、釣られてみよう。残念ながらハズレ。
さすがにフルアセンブラはご無沙汰だが、今でも一部インラインで組むことくらいはある。
ていうか、コンパイラしか使ってなくてもデバッグの時にアセンブルソースくらい見ると思うけど。

それはともかく、
> マシン語を直接使っているので
↑このあたりの表現が気になった。実は偉大なお方?
0430ほんたまNGNG
おみゃ〜ら、すまん、全面的におりの勘違いだったよ^^;
というのもおりは、[SYSTEMTIME]の先頭アドレスの値をまずECXレジスタに読み込み、その値を16ビット右シフトして、次にCXレジスタの値を作業用のバッファにセットしていたんだよ。
なぜ右シフトしたかといえば、ファイル表現で考えてECXレジスタの上位16ビットに先頭アドレスの値が、下位16ビットに次のアドレスの値がはいっていると勘違いしていたのよ。
とろこがこれは逆だったんだな…!
だから右シフトするのをやめて、そのままCXレジスタの値をセットしたら、うまくいったというわけよ。
やっぱPREバイトとかドキュメントが書き間違ってるとかなかったよ。
マイクロソフトのドキュメントは正しかったよ…。
おりとしたことが、とんだミステイクだったよ♪
おみゃ〜らよ、自分じすまんな…どうじ?
0431414NGNG
やはりエンディアンネス絡みの問題だったか。思った通りじゃねーの。
0432デフォルトの名無しさんNGNG
リトルエンディアンも知らずに、マシン語云々言ってたのか。
もっと基本から勉強しろよ
0433デフォルトの名無しさんNGNG
StretchBltで1x1ピクセルに

できたらいいな
0434デフォルトの名無しさんNGNG
>>423
>>425

・・・・

全ピクセル足して、面積で割るだけなのに。小学生でもできるぞ。
0435デフォルトの名無しさんNGNG
リストビューで項目の編集をできるようにしたいのですが
1列目しか項目を選択及び編集ができず、2列目以降は選択もできない状態です。
以下、ソースです・・・。原因わかります?
case WM_NOTIFY:
if ((int)wp == LISTVIEW) {
lvinfo = (LV_DISPINFO *)lp;
switch (lvinfo->hdr.code) {
case LVN_BEGINLABELEDIT:
hEdit = ListView_GetEditControl(hList);
break;
case LVN_ENDLABELEDIT:
GetWindowText(hEdit, buf, sizeof(buf));
ListView_SetItemText(hList, lvinfo->item.iItem, 0, buf);
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
col.mask = LVCF_FMT | LVCF_TEXT | LVCF_WIDTH | LVCF_SUBITEM;
col.fmt = LVCFMT_LEFT;
col.cx = 100;//列の幅 ピクセル単位
col.pszText = TEXT("社員ID");
col.iSubItem = 0;

ListView_InsertColumn(hList, 0 , &col);
int z;
z = 1;
col.iSubItem = z;
col.pszText=TEXT("氏名");
ListView_InsertColumn(hList, z , &col);
z++;
0436デフォルトの名無しさんNGNG
>>434
だからそれを「速くやる」方法について話してるんだろ。
0437デフォルトの名無しさんNGNG
>>434
今の小学生は3桁以上の計算は出来ません。
0438デフォルトの名無しさんNGNG
>>436
除算は最後の一回だけだし、
加算はループで足し算するんだが、普通に足すより速くはならんぞ。
乗算とか入らないなら、MMXも必要ない。
第一、こんな質問してくるレベルの人間にはそれで十分だ。
0439デフォルトの名無しさんNGNG
>>438
なにひとりでカッカしてんの?
0440デフォルトの名無しさんNGNG
435
リストビューは1列目のラベルしか編集できない。
0441デフォルトの名無しさんNGNG
>>439
馬鹿か?それはお前の思い込みに過ぎんぞ。
この程度のことでカッカする方がどうかしている。
お前がこういう文章を書くときはカッカしている時だからといって、
他人までそうだと思わないことだ。
0442デフォルトの名無しさんNGNG
>>441
何カッカしてんの?
0443デフォルトの名無しさんNGNG
何にせよ技法の話だからスレ違い。
と言いたいが面白いのでもっとやれ
0444デフォルトの名無しさんNGNG
>>435
編集は一列目だけ。
選択の方は、こんな感じで。
ListView_SetExtendedListViewStyle(_hWnd, LVS_EX_FULLROWSELECT);

>>442
そういうことにしたいのですね。勝手にそう思ってれば?
0445デフォルトの名無しさんNGNG
>>438
見た感じ>>438と>>423はだいたい同じレベルだと思うんだけど。
・どちらも平均とは何かについては知っている
・高速に処理する方法は知らない
0446デフォルトの名無しさんNGNG
オモロイ w
0447デフォルトの名無しさんNGNG
それはさておき、カラーの平均ってなんだろ。
RGB各プレーンそれぞれの単純平均だと赤とシアンの平均がグレイになるんだけど。
グレイであることが保証されてるなら単一プレーンだけの平均ですむし、
平均輝度とか平均彩度とか、何が要求されているのかよく判らんね。
0448デフォルトの名無しさんNGNG
>>447
算術平均以外の平均なら、ほげほげ平均とかって明記するんじゃない?
ってのはともかく、アルゴリズム的には>>438の言うように足して割るのが最適だから、
あとは>>425の言うように実装手段でアレコレするしかない。
0449デフォルトの名無しさんNGNG
>>445
全ピクセルの平均をとるなら、データスキャンして普通に加算するのが一番速い。
画像をロードした瞬間にわかるって言ってもいいぐらい。
今時のCPUなら、アセンブラ化してもほとんど変わらないよ。
0450デフォルトの名無しさんNGNG
>>448
MMX使っても速くならんぞ?
テクスチャにするなんて論外だ。転送にめちゃくちゃ時間がかかる。
それともバイリニアで縮小画像を作ることを考えているのだろうか?
0451デフォルトの名無しさんNGNG
>>449
今時のCPUはキャッシュミスの際のペナルティが(そうでない場合との比較で)大きいから、
メモリをスキャンするときにアセンブラでちゃんとプリフェッチを入れれば簡単に+10%位にはなるよ。

Intel Compiler とかなら勝手にやってくれるかもしれんが。
0452デフォルトの名無しさんNGNG
ごく小さい領域の単純平均ならMMXつかえばRGB同時に計算できるとかあるけどな。
あとは精度落としていいならサンプル間引くぐらいしかないんじゃないか。
0453デフォルトの名無しさんNGNG
>>451
そこまでの最適化を必要としている奴が、>>423みたいな質問よこすか?
「ここまでやって、これが限界でしょうか」というのなら、
極限までの最適化方法を教える努力をするけどね。
0454デフォルトの名無しさんNGNG
>>452
>あとは精度落としていいならサンプル間引くぐらいしかないんじゃないか。
業務向けにマトモな高速化案キタ━━━━━━(゚∀゚)━━━━━━ !!
そういえば画像処理で画素間引いたりして高速化するのは定石だな・・
0455デフォルトの名無しさんNGNG
>>452
整数「加減算」だけならMMXを使う必要はないって。
通常のアセンブラでも同時計算は可能。

間引くのは有効だけど、そもそも画像をメモリへロードする方が重いので、
そこまで気にするのがちょっと疑問。
0456デフォルトの名無しさんNGNG
>>453
なんでそんなに偉そうなの?
0457デフォルトの名無しさんNGNG
>>456
偉いから。
0458デフォルトの名無しさんNGNG
>>423
これが Win32 API スレであることを考えると、たぶん真っ当な答えは

・Bitmapがある程度大きい場合には、GetDIBits 等で DIB として取り出し、
 ピクセルフォーマットに従ってメモリ値を読み出して平均をとる。
 (可能であれば最初から DIB として画像を保持しておくべき)
・Bitmapが 1x2 とか小さい場合には、GetPixel で RGB 値を取り出して平均をとる。
・"ビットマップ"というのが画像ファイルのことであれば、LoadImage で DIBSection にして、
 GetObject で DIB と BITMAPINFOHEADER を取得してアレコレする。

っていうような感じなんだろうなぁ。
0459デフォルトの名無しさんNGNG
googleったらこんなの出てきた。
ttp://www.emit.jp/prog/prog_b.html

> v2 = (v0 & v1) + (((v0 ^ v1) & 0xfefefefe) >> 1);

なんでこれで平均がでるの?ワケワカラン
0460デフォルトの名無しさんNGNG
ここでの質問して良いのか疑問ですけど、どこがいいのかわかりません
でしたのでお願いします。

Windows2000やXPなんかでは、LANケーブルが抜けている場合
タスクトレイにネットワークのアイコンが出てLANケーブルが
抜けていることがわかりますが、プログラム上からLANケーブルが
抜けていることを特定する方法はないでしょうか?

0461デフォルトの名無しさんNGNG
MessageBox(NULL, "LANケーブルは抜けていますか?", "質問", MB_YESNO);
0462デフォルトの名無しさんNGNG
C = 繰り上がりがある場合の繰り上がり (v0 & v1) <<1
S = 繰り上がりを無視した加算結果 (v0 ^ v1)
C + S は足すと普通の加算になる。右に1シフトする(2で割る)と平均になる。
(S は各バイトの最下位ビットが立っている可能性があるから、0xfefefefeでマスクしておく)

精度は低く速度も遅いがわかりやすい代替物は、
((v0 >> 1) & 0x7f7f7f7f) + ((v1>>1) & 0x7f7f7f7f)。
0463デフォルトの名無しさんNGNG
>>459
>>462
目からウロコが10枚くらい出た
0464デフォルトの名無しさんNGNG
>>462
>>1 クリックしてしもた
0465459NGNG
>>462
サンクス!なんとなくわかった希ガス

0466デフォルトの名無しさんNGNG
>>462
COBOL 出る前ってこんなんばっか見たいだった気がする。なつかしい。
0467デフォルトの名無しさんNGNG
とてつもないジジイが紛れ込んでないか?
0468デフォルトの名無しさんNGNG
>>460
このスレのどこかに同じような質問なかったっけ?
0469460NGNG
>>468
ほんとですか〜。
探してたのですが見つけきれませんでした。
もし思い出されたらご一報お願いします。
0470デフォルトの名無しさんNGNG
WinXP SP2を適用後に、RegSaveKeyがエラーになってしまいます。
戻り値は 87「パラメータが間違っています」となります。
SP1以前は正常に動作していました。
SeBackupName 特権は取得しています。
0471デフォルトの名無しさんNGNG
>>460
ipconfig で分かる
0472デフォルトの名無しさんNGNG
小手先でいじるよりも
SetStretchBltMode(hdc,HALFTONE);
して
StretchBltしたほうが速いと思う。
DDBならハードウェアアクセラレーションが効くかもしれない。
0473デフォルトの名無しさんNGNG
ボタンの上にマウスカーソルが来た時に来るメッセージは無いでしょうか。
if(HIWORD(wParam) == BN_XX)
みたいなのを探していたのですがありませんでした。
0474デフォルトの名無しさんNGNG
WM_MOUSEHOVER
0475473NGNG
>>474
それでできそうです。ありがとうございました。
0476460NGNG
IPHlpApi.h を使えば ネットワークのいろいろな情報が取得できるけど
Cable Disconnected って直接的に取得は出来ない気がします。
何を持って Cable Disconnected 状態なのか特定できないものでしょうか?

これってWin32APIよりMFCかな・・・
0477デフォルトの名無しさんNGNG
USBオーディオデバイスに直接アクセスしたいのですが、GUIDを知る方法が分かりません。
ヒューマンインターフェースデバイス(HID)ではHidD_GetHidGuidでゲットしたのですが…
御教示おねがいします。
0478デフォルトの名無しさんNGNG
現在キューに入っているメッセージではなくて
Windowsシステムにどのようなメッセージが用意されているのか
MSDNで探したいのですが、
urlないし検索のためのキーワードを教えてください。
0479デフォルトの名無しさんNGNG
>>478
ソースもらうしかねえだろな
あとアプリ定義のメッセージもあるわけだが
それはどーするんだ?
0480478NGNG
http://www.geocities.co.jp/SiliconValley-Cupertino/5872/Message/WM/index.html

すみません、上にありました。
しかし178個って、これで全てなんでしょうか。
なんだか少ないように思ったのですが。
0481デフォルトの名無しさんNGNG
全てじゃないです。
0482デフォルトの名無しさんNGNG
ボタンに文章ではなくて、
ビットマップなどの絵を表示する方法を教えてください。
0483デフォルトの名無しさんNGNG
>>480
BM_ とか CB_ みたいに WM_ で始まらないのもいっぱいあるぞ
0484デフォルトの名無しさんNGNG
>>460
>>89
>>91
0485デフォルトの名無しさんNGNG
>>482
BS_BITMAPとかBS_ICON、もしくはBS_OWNERDRAW
0486デフォルトの名無しさんNGNG
そういや、MSが用意してるメッセージで、WM_USERとか使うのが何個かあったよね
自作メッセージって、どの辺の範囲使っておけば、MSのライブラリと競合しないものなの?
自作メッセージって結構使うんだけど、新しくコントロール追加した時に競合しないか心配だったりする
0487デフォルトの名無しさんNGNG
>>485
ありがとうございます。調べてみます。
0488デフォルトの名無しさんNGNG
>>486
WM_APP以降を使っておけば、とりあえず競合はしないので安心。
0489デフォルトの名無しさんNGNG
WM_APP + 0x3FFFまで
0490デフォルトの名無しさんNGNG
>>488>>489
どもです。
既に作ったプログラムを直すのは面倒ですが、次からはそれ以降で作ります
0491デフォルトの名無しさんNGNG
ところでWM_USERからは何に今は使うの?
0492デフォルトの名無しさんNGNG
自作のカスタムコントロールとかかな?
0493デフォルトの名無しさんNGNG
つhttp://www.google.co.jp/search?btnI=I&q=MSDN+WM_APP
0494デフォルトの名無しさんNGNG
>>492
3rdParty製の
0495ごめん、途切れたNGNG
コントロールが使ってた肝する。
0496423NGNG
みなさん貴重な意見をありがとうございます。
お察しの通り私は知識も経験も少ない初心者なのでとてもためになりました。
デジカメサイズのビットマップ200枚ほどの平均色を求めたかったので速さにこだわっていました。
適当に間引きながら足し算で求める方法でアプローチしてみます。
0497デフォルトの名無しさんNGNG
デジカメのデータだとファイルI/OとJPEGデコーダで律速されそうだが。
IJLってもう無料で入手不可能なんだったか?
0498デフォルトの名無しさんNGNG
ダイアログが表示されているときに押されたボタンの仮想キーコードを
表示させたいんだけど、どうやって押されたキーのコード取得するんですか?
0499デフォルトの名無しさんNGNG
>>496
画像の色計算より
読み出しとかにかかる時間のほうが支配的だと思うから
速度気にしなくていいんじゃないかな。
0500デフォルトの名無しさんNGNG
200枚って、オーバーフローしないサイズ?
0501デフォルトの名無しさんNGNG
0xfefefeの話題が出てたので、余計な補足を。
((a++&0xf8f8f8)>>3)+((a++&0xf8f8f8)>>3)+((a++&0xf8f8f8)>>3)+((a++&0xf8f8f8)>>3)+((a++&0xf8f8f8)>>3)+((a++&0xf8f8f8)>>3)+((a++&0xf8f8f8)>>3)+((a++&0xf8f8f8)>>3)
で、int32 *a のRGBデータの8点平均。
2のべき乗ならこのやりかたがはやいよー。
0502501NGNG
まちがえた。
シフトは足した後で一括でやろう。
0503デフォルトの名無しさんNGNG
a[?]使った方がイイかも?
0504デフォルトの名無しさんNGNG
>>501
些細な高速化の割には精度ガタ落ちだから、素直に>>459を7回やったほうが良いような気がする・・例↓

#define Ave2(a,b) (((a) & (b)) + ((((a) ^ (b)) & 0xfefefefe) >> 1))
#define Ave4(a,b,c,d) Ave2(Ave2(a,b), Ave2(c,d))
#define Ave8(a,b,c,d,e,f,g,h) Ave2(Ave4(a,b,c,d), Ave4(e,f,g,h))
0505501NGNG
>>504
ごもっとも。
でも、些細な高速化に興味が有るので許してください。
0506デフォルトの名無しさんNGNG
>>423も、とりあえず満足したようだし、
スレ違いの話題はこの辺に

続きをやりたければ、画像処理スレか最適化スレにでもどぞ
0507501NGNG
>>506
BMPの話題はWin32だよー。
でも、確かにこの辺にしておくのが良いですね。
0508デフォルトの名無しさんNGNG
>>507
BMP特有の操作じゃないだろ?
0509501NGNG
この辺に。
ね。
0510501NGNG
進行を止めてしまった。
申し訳ないです。
悪気は無いんです。
許してね。

遠慮せずに書き込んでねー。
0511デフォルトの名無しさんNGNG
最小化してから再び最大化したときに、
親ウィンドウの部分は再描画されるのですが、
子ウィンドウの部分は真っ白になってしまいます。
子ウィンドウも描画させるにはどうしたら良いでしょうか。
0512デフォルトの名無しさんNGNG
SDIです。
0513デフォルトの名無しさんNGNG
>>512
OnDrawとかOnPaintで描いてないとかそんなんじゃ
0514デフォルトの名無しさんNGNG
MFC使わずにSDKだけでやっています。
汚いコードですが、こんな感じです。

LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
 static HWND hChild01;
 PAINTSTRUCT ps;
 HDC hdc, hBuffer;
 static HBITMAP hBit01;
       switch (msg)
       {
  case WM_CREATE:
 hBit01 = LoadBitmap(((LPCREATESTRUCT)lParam)->hInstance, (LPCTSTR)IDB_BITMAP1);
 MyRegisterClassDefault(((LPCREATESTRUCT)lParam)->hInstance, Child01, szChild01);
 hChildOL01 = CreateMyWnd(IDhChild01, hWnd);
 ShowWindow(hChild01, SW_SHOW);
 break;
  case WM_PAINT:
 hdc = BeginPaint(hWndOpen, &ps);
 hBuffer = CreateCompatibleDC(hdc);
 SelectObject(hBuffer, hBitMAP1);
 BitBlt(hdc, 0, 0, 800, 600, hBuffer, 0, 0, SRCCOPY);
 DeleteDC(hBuffer);
 EndPaint(hWndOpen, &ps);
 break;
       }
(つづく)
0515デフォルトの名無しさんNGNG
(つづき)
LRESULT CALLBACK ChildProc(HWND hChild01, UINT msg, WPARAM wParam, LPARAM lParam)
 HDC hdc, hBuffer;
 PAINTSTRUCT ps;
 static HBITMAP hBitKuro;
 switch(msg){
case WM_CREATE:
 hBitKuro = LoadBitmap(((LPCREATESTRUCT)lParam)->hInstance, (LPCTSTR)IDB_Kuro);
 break;
case WM_PAINT:
 hdc = BeginPaint(hChild01, &ps);
 hBuffer = CreateCompatibleDC(hdc);
 SelectObject(hBuffer, hBitKuro);
 BitBlt(hdc, 0, 0, 200, 120, hBuffer, 0, 0, SRCCOPY);
 EndPaint(hWndOL01, &ps);
 break;
}


プログラムを始めて3週間なのですが、
いきなりMFCを覚えたほうが楽でしょうか?
0516デフォルトの名無しさんNGNG
MFCのソースを読めばよし。
0517デフォルトの名無しさんNGNG
>>498 はスルーでつか?
0518デフォルトの名無しさんNGNG
>>517
あー WM_GETDLGCODE じゃだめか。
0519デフォルトの名無しさんNGNG
WM_KEYDOWNのwParamじゃだめなん?
0520デフォルトの名無しさんNGNG
>>515
MFC覚えた方が楽かも知れんが、そのコードを理解しながら
書いたんなら、そのまま一本位 API でプログラム書いてみたら。
基礎を勉強することは悪いことではない。
0521デフォルトの名無しさんNGNG
>>515
うっかり消しただけかもしらんが、ChildのhBufferをDeleteしてないよ。
それによってhBitKuroのSelectが2回目以降失敗しているのではないかな?
0522デフォルトの名無しさんNGNG
左右にスクロールできて、複数のボタンを配置できるスライダを作りたいと思い、
カスタムコントロールについて調べてみたんですが、これは
・所定の位置にウィンドウを作る
・ボタン、スライダのグラフィックを自作する
・カスタムコントロール用のプロシージャにて、マウスクリックのメッセージを受け取ったら
 その時の位置に応じて動いた場合の動作を決定する。つまりボタンの位置を常に把握し
 位置関係の判定を全部やらなくてはならない
という方針で良いのでしょうか?もっと効率良い方法があるのならご教授頂ければ幸いです。

イメージとしてはこんなカンジです。
・スライダをクリックしてドラッグした場合:
+----+----+----+----+----+----+----+----+
0 5 10 15 20 25 30 35 40
-+----+----+----+----+----+----+----+----
5 10 15 20 25 30 35 40
(左へ4メモリスクロールさせた場合。右に隠れていた4つの目盛りが現われる)
・ボタンをクリックしてドラッグした場合:(ボタン:*とする。複数存在可能)
+----+----+--*-+----+-*--+--*-+----+----+
↑を左へクリック&ドラッグした場合
+----+-*--+----+----+-*--+--*-+----+----+
     ↑ここへ動く
0523デフォルトの名無しさんNGNG
猛烈にずれた…orz
+----+----+----+----+----+----+----+----+
0   5   10  15  20  25   30   35  40
-+----+----+----+----+----+----+----+----
 5   10   15  20  25   30   35  40

+----+----+--*-+----+-*--+--*-+----+----+
          ↑を左へクリック&ドラッグした場合
+----+-*--+----+----+-*--+--*-+----+----+
     ↑ここへ動く

今度こそうまくいくかな(´・ω・`)
0524デフォルトの名無しさんNGNG
その方針でいいです
0525522-523NGNG
>>524
ありがとうございました。面倒そうだなぁ…(汗)
0526デフォルトの名無しさんNGNG
スレッドについて質問
以下を実行する:
int main(void) {
DWORD dwThreadId;
LPTHREAD_START_ROUTINE lpStartAddress = ThreadFunction;
for ( DWORD i = 0 ; i < 2; i++ ) {
::CreateThread(
NULL,// セキュリティ
0,// スタックの大きさ
lpStartAddress,// 開始する住所
&i,// パラメター
0,// スレッドの状態
&dwThreadId// スレッドID
);
}
}
// スレッド函数
DWORD ThreadFunction(LPVOID pParameter){
DWORD* pdwInteger = (DWORD*) pParameter;
TRACE( "%u\n", *pdwInteger );
return 0;
}
これで,
ThreadFunction(0)
ThreadFunction(1)
が実行されることを期待したいけど,なぜか
ThreadFunction(1)
ThreadFunction(1)
が実行される.
どうしてなん?
0527デフォルトの名無しさんNGNG
>>526
CreateThread() した瞬間に新しいスレッドが走り出すわけではないか
ら。つーか、最近同様の質問を見た覚えがあるぞ…

0528526NGNG
>>527

スレッドをどのタイミングで走るわけ?

また,俺の意図どおりに動かすにはどうしたらええん?
0529デフォルトの名無しさんNGNG
知ったこっちゃねえ
0530デフォルトの名無しさんNGNG
>>528
最初のスレッドが情報を取得したことを親スレッドに何らかの方法で通知する。
親スレッドはそれを受けてから次のスレッドを起動する。
0531デフォルトの名無しさんNGNG
>>520
ありがとうございます。頑張ってみます。
>>521
が正解でした。
各入門書や入門ページで口を酸っぱくして言われている、
「必ずGDIオブジェクトを削除しなければならない」
の意味がやっと分かりました。
0532デフォルトの名無しさんNGNG
>>526
> &i,// パラメター

の説明をしてもらおうか。

>>531
> 「必ずGDIオブジェクトを削除しなければならない」
> の意味がやっと分かりました。

たぶんまだ分かってないと思う。
0533デフォルトの名無しさんNGNG
>>528
作ったスレッドが動き出すのは、少なくとも、最初のコンテキストスイッ
チよりは後だろうよ。

そもそも、自動変数のアドレスをスコープを越える可能性のある関数に
渡しちゃダメでしょ。

一番簡単なのは、
CreateThread:
&i,==>reinterpret_cast<void*>(i),

ThreadFunction:
TRACE( "%u\n", *pdwInteger );
==>TRACE("%d\n", reinterpret_cast<int>(pParameter));
0534デフォルトの名無しさんNGNG
>>501
そのコードは移植性ないと思うんだが
VC++だとインクリメントの順番が副作用完了点を挟まなくても
別途保証されてたりするのか?
0535デフォルトの名無しさんNGNG
>>534
されてないけど、501みたいなへたれコードは誰も書かないから問題ないよ。
遅いし。
0536デフォルトの名無しさんNGNG
いつもお世話になっております
UpdateLayeredWindowに関する質問です

デスクトップマスコットのようなウィンドウを
UpdateLayeredWindowを使って描画しています
αチャネルを使って透明化する部分は全く問題ないのですが、

既に配置済みのボタンやコンボボックスが
UpdateLayeredWindowで指定したイメージで上書きされてしまい、表示されずに困っています
(実際、配置はされていて、マウスイベントなどは問題なく処理できます)

最終手段として、
コントロール以外をカラーキーで透明化したウィンドウと
イメージをαチャネルで透明化したウィンドウを2枚重ねて動かそうと考えましたが、
他によい方法があるのではないかと思い投稿しました

良い方法をご存知の方がいらっしゃいましたら、よろしくお願いします
0537デフォルトの名無しさんNGNG
よく分からんがレイヤードウィンドウにコントロールを子ウィンドウとして配置してるってことか?
0538デフォルトの名無しさんNGNG
>>536
UpdateLayeredWindow使ったことないけど
イメージの上にコントロールにWM_PRINT送って描画してもらい、UpdateLayeredWindowするとか。
コントロールがクリックされたら、そのイメージを作ってUpdateLayeredWindowしなきゃならなそうだけど。
0539デフォルトの名無しさんNGNG
ある領域に(CreateWindowで作成した領域<TEXT(static)>)に
小さな子ウィンドをたくさん作成し、領域をはみ出るものについては
スクロールバーを出すことで対応したいと思っているのですが、
今、現在、ただ領域に子ウィンドウをたくさん作成すると
領域をはみ出てしまいます。
領域にスクロールバーを作ることはできたのですが・・・。

いい方法ありますでしょうか?
0540デフォルトの名無しさんNGNG
>>539
その領域を別Windowにして貼り付ける。
0541デフォルトの名無しさんNGNG
その前に作文力をなんとかしろ
0542デフォルトの名無しさんNGNG
>>539
WS_CLIPCHILDREN
0543デフォルトの名無しさんNGNG
レスありがとうございます。WS_CLIPCHILDRENを指定しましたらうまく行きました。
水平スクロールバーをつけちゃったりなんかしてみたのですが
スクロールバーが移動しません。
最後の質問にしますのでよろしくお願い致します
seru_hyouji_ryouiki = CreateWindow(
TEXT("STATIC"),TEXT("") ,
WS_CHILD | WS_VISIBLE | WS_BORDER |WS_VSCROLL |WS_CLIPCHILDREN,
100,150,
700,300,
hwnd,(HMENU)SERU_HYOUJI_RYOUIKI,
((LPCREATESTRUCT)(lp))->hInstance, NULL
);


scr.cbSize = sizeof(SCROLLINFO);
scr.fMask = SIF_PAGE | SIF_RANGE;
scr.nMin = 0;scr.nMax = 9;
scr.nPage = 2;

SetScrollInfo(seru_hyouji_ryouiki , SB_HORZ , &scr , TRUE);
scr.fMask = SIF_POS;
0544ほんたまNGNG
>>482
>ボタンに文章ではなくて、
>ビットマップなどの絵を表示する方法を教えてください。

文章?ボタンに小説書いてんの?
0545デフォルトの名無しさんNGNG
いけず
0546デフォルトの名無しさんNGNG
>>543
水平スクロールバーはWS_HSCROLLだよね。
WM_HSCROLLメッセージは正しく処理してる?
0547デフォルトの名無しさんNGNG
>>543
そのコード、続きはないの?
それだけだと範囲指定しただけで、位置を設定していないし。
0548デフォルトの名無しさんNGNG
>534
あのコードはインクリメントの順番が保証されている事を要求しないと思うが。
0549デフォルトの名無しさんNGNG
>>548
まとめてインクリメントされるとアボーン。
0550デフォルトの名無しさんNGNG
そういう処理系もあるのか。
感謝。
0551デフォルトの名無しさんNGNG
>>549
そんな処理系が有ったら恐い。
実例あるのか?
0552デフォルトの名無しさんNGNG
つーか言語仕様的に式評価の前か後かに
まとめてインクリメントされるのでは?

int a = 1;
int b = (a++) + (a++) + (a++) + (a++);
だと b = 4 で

int a = 1;
int b = (++a) + (++a) + (++a) + (++a);
だと b = 20 になる。
0553デフォルトの名無しさんNGNG
少なくとも C や C++ では、1つの式の中に副作用が発生する項目を
複数含んでいるコードの動作は未定義だったはずだよ。
0554デフォルトの名無しさんNGNG
うちはb=15だった
未定義だな
0555デフォルトの名無しさんNGNG
タイミングは未規定
結果の値が未定義
0556551NGNG
>552
ほんとだ。
失礼しました。
0557デフォルトの名無しさんNGNG
スレ違いだけど参考までに
ttp://www.kouno.jp/home/c_faq/c3.html
0558デフォルトの名無しさんNGNG
とにかく >>501 のコードは全然ダメだろ
ポインタに&演算してるし
0559552NGNG
スマソ、たしかに未定義でした。
0560デフォルトの名無しさんNGNG
多重バッファ使った
waveOutWriteがうまくいきません。
バッファとバッファの間に、ノイズ(音切れ)が入るのです。
16個のバッファにデータをとりあえずロードさせ再生させても起こります。
バッファに書く速度が間に合ってないわけじゃないみたいです。

2個目以降のバッファは、メッセージ着てから再生では遅いのでしょうか?


とりあえず、ソースの部分貼り付けます。
1個目再生
::waveOutPrepareHeader(m_hWaveOut,&m_pWaveHdr[0],sizeof(WAVEHDR));
::waveOutWrite(m_hWaveOut,&m_pWaveHdr[0],sizeof(WAVEHDR));

while(1)Sleep(1); // とりあえず待機(本来は、随時バッファ読み込み)

MM_WOM_DONE メッセージで、

::waveOutUnprepareHeader(m_hWaveOut,&m_pWaveHdr[m_nRingCursor],sizeof(WAVEHDR));
m_nRingCursor = (m_nRingCursor+1) % m_dwRingBufferSize;
::waveOutPrepareHeader(m_hWaveOut,&m_pWaveHdr[m_nRingCursor],sizeof(WAVEHDR));
::waveOutWrite(m_hWaveOut,&m_pWaveHdr[m_nRingCursor],sizeof(WAVEHDR));


メッセージのコールバックは、関数タイプです。
0561デフォルトの名無しさんNGNG
>>560
>2個目以降のバッファは、メッセージ着てから再生では遅いのでしょうか?

遅いよ。
用意したバッファは全部あらかじめ書き込んでおいて、
コールバックで使い終わったバッファに次のデータを用意して、
再び書き込む。

全部のデータを再生し終わるまで延々と繰り返す。
が、基本。
ちなみに、最低3個以上のバッファを作ることが推奨されているね。
0562560NGNG
>>561
いけました。
Writeの内容解釈間違えてた。
Writeって、書き溜め(バッファ)できたんですね。
ありがとうございます。
0563デフォルトの名無しさんNGNG
CreateWindow()のスタイルBS_OWNERDRAWでWM_MEASUREITEMが発生すると書いてあったのですが発生している気配がありません。
どうしてでしょう?

CreateWindow(
TEXT( "BUTTON" ),
TEXT( "" ),
WS_CHILD | BS_OWNERDRAW,
0, 0, 200, 100,
hWnd,
(HMENU)1,
hInstance,
NULL
);

......

switch( msg ){
case WM_MEASUREITEM:
MessageBox( hWnd , TEXT("aaa") , TEXT("bbb") , MB_OK );
break;
}
0564デフォルトの名無しさんNGNG
とりあえずmessageboxを確認に使うのをやめなさい
0565デフォルトの名無しさんNGNG
(0,0) の位置にあったウィンドウに、
以下の機能がついています。

・チェックボックス
・入力欄

入力欄のところに実行した瞬間、文字列を転送するプログ
ラムを考えているのですが、どんな関数が必要になってき
ますか?
WindowFromPoint()は必要になるだろうと思ったのですが、
それ以上がいくら調べても分かりません。
入力欄のコントロールIDを得る関数があればいいのかなぁ
とか、色々考えて検索ずっとしてるのですが、そんなのないし・・・

これから先、検討がつきません。
どなたかお助けを・・・ M(._.)m
0566デフォルトの名無しさんNGNG
>>564
どのような、確認の方法がよいでしょうか?
0567デフォルトの名無しさんNGNG
>>566
AllocConsole
0568デフォルトの名無しさんNGNG
>>565
SetWindowText

って既出?
0569お助けお願いm(_ _)mNGNG
どなたか詳しい方教えていただけないでしょうか?
WindowsXPではGetSystemMetricsで検出できるのですが、
Windows2000でシャットダウン中を検出する事は可能でしょうか?
0570デフォルトの名無しさんNGNG
>>568
それ使おうと思ったんすけど、
入力欄のコントロールIDが、同じプログラム内で
作ったものじゃないんで、わかんないのが前提なんっす・・・
レスありがとう
0571デフォルトの名無しさんNGNG
>>567
ありがとうございます。
先ほどのプログラムを下のように書き直してみました。
ほかのところでの文字の表示は成功したのですがやはりWM_MEASUREITEMのところは通っていないような気がします。
それともAllocConsoleの使い方が間違っているのでしょうか?

CreateWindow(
TEXT( "BUTTON" ),
TEXT( "" ),
WS_CHILD | BS_OWNERDRAW,
0, 0, 200, 100,
hWnd,
(HMENU)1,
hInstance,
NULL
);

AllocConsole();
hStdOutput = GetStdHandle( STD_OUTPUT_HANDLE );

......

switch( msg ){
case WM_MEASUREITEM:
WriteFile( hStdOutput , TEXT( "aaaa" ) , 4 , 0 , NULL );
break;
}
0572デフォルトの名無しさんNGNG
>>571
CreateWindowの前にAllocConsoleしたほうがいいと思うけど。

ていうかBS_OWNERDRAWでそのメッセージが送られるってどこに書いてあるの?
0573デフォルトの名無しさんNGNG
WM_DRAWITEMの間違いだったりして。イヤン
0574デフォルトの名無しさんNGNG
コピペ。

BS_OWNERDRAW
オーナー描画ボタンを作成します。
オーナーウィンドウは、ボタンが作成されると WM_MEASUREITEM メッセージを受け取り、
ボタンの外観が変わると WM_DRAWITEM メッセージを受け取ります。
他のボタンスタイルと組み合わせることはできません。
0575デフォルトの名無しさんNGNG
Win32 API プログラマーズリファレンスには、
オーナー描画ボタンを作成します。オーナー ウィンドウは、 ボタンが作成されるときに
WM_MEASUREITEMメッセージを受け取り、 ボタンの外観が変わったときにはWM_DRAWITEMメッセージを受け取ります。BS_OWNERDRAWスタイルは、 ほかのボタン スタイルと組み合わせることはできません。

と書いてあります。
0576デフォルトの名無しさんNGNG
>>575
CreateWindowのBS_OWNERDRAWの説明です。
0577デフォルトの名無しさんNGNG
俺のにはこれしか書いてない

BS_OWNERDRAW
Creates an owner-drawn button. The owner window receives a WM_DRAWITEM message
when a visual aspect of the button has changed. Do not combine the BS_OWNERDRAW
style with any other button styles.

0578デフォルトの名無しさんNGNG
>>563
試してみたけど、うちの環境でも WM_MEASUREITEM は送られてこないっすよ。
WM_MEASUREITEM の説明にも、そのようなことは書いてないし…。
0579デフォルトの名無しさんNGNG
>>565
やりたいことがよく分からないけど、
ウィンドウハンドルは WindowFromPoint() や ChildWindowFromPoint() で取得、
IDは GetDlgCtrlID() で取得するってのはだめっすか?
0580デフォルトの名無しさんNGNG
>>569
WM_ENDSESSION で検出するのはだめっすか?
0581デフォルトの名無しさんNGNG
メインウィンドウのようにタイトルバーや枠つきのエディットコントロール作りたいのですが教えてください
0582デフォルトの名無しさんNGNG
>>579
う〜ん、なんとか成功させてお礼を言いたいとこだったけど、
もう今日は限界・・・合歓いっす。
レスありがとう。わずかな希望が見えた気がしたでつ。
0583デフォルトの名無しさんNGNG
>>565
IDがなくともウィンドウハンドルがあれば十分だと思うが。
0584デフォルトの名無しさんNGNG
>>569 以下は前にどっかで見たやつのコピペだけど
Windows 2000 ですが、実際にやって調べてみました。
HKCR\Software\Microsoft\Windows\CurrentVersion\Explorer
の Reason Setting と Shutdown Setting が変化するようです。
(どちらも DWORD 値)

シャットダウン
 Shutdown Setting=0x00000002
 Reason Setting=0x00000005
再起動
 Shutdown Setting=0x00000004
 Reason Setting=0x00000005
ログオフ
 Shutdown Setting=0x00000001
 Reason Setting=0x00000000

ちなみに、regmon という
レジストリ操作を監視するツールを使って調べました。
0585デフォルトの名無しさんNGNG
続き

HKCR\Software\Microsoft\Windows\CurrentVersion\Explorer
Shutdown SettingとReason Settingのキーは無いようです。

HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer
には存在していましたので、こちらで試しています。

OSのシャットダウン時の処理なので、ちゃんと動くまで再起動しまくって
いるので時間かかるー(笑)



キーさえ分かればきっと情報があるはずだ、ということで検索してみた。
ttp://www.microsoft.com/windows2000/techinfo/reskit/en-us/regentry/36031.asp
これによると Shutdown Setting はあくまでダイアログでの選択値のようっす。
Reason Setting の方は見つからず。
0586デフォルトの名無しさんNGNG
VFWを使って画像処理ソフトを作っているのですが、フレームレートが15FPS以上に上がってくれません
他のソフトを使えば、30FPS出ているので、カメラ・PCの性能は十分あります
これは、VFWの仕様でしょうか?
それとも、プログラムのコードが問題あるのでしょうか?
0587デフォルトの名無しさんNGNG
>>586
capPreviewRateやCAPTUREPARMSのdwRequestMicroSecPerFrameでの設定値を変えても、
capSetCallbackOnFrameで設定したコールバック関数の呼び出しタイミングが15FPSを切ってるという話です
0588デフォルトの名無しさんNGNG
static TCHAR strFile[MAX_PATH];
LPSTR strText;
(中略)
GetOpenFileName(&ofn);
hFile = CreateFile(
   (LPCTSTR)strFile , GENERIC_READ , 0 , NULL ,
   OPEN_EXISTING , FILE_ATTRIBUTE_NORMAL , NULL
);
if (hFile == INVALID_HANDLE_VALUE) break;

strText = (LPSTR)malloc(GetFileSize(hFile , NULL));
ReadFile(hFile , strText , GetFileSize(hFile , NULL) , &dwBytes , NULL);
CloseHandle(hFile);
SetWindowText(hwnd , strFile);
SetWindowText(edit , strText);
指定して読み込んだパスのファイルを開いて、
エディタ(edit)に書き出すコードのつもりなのですが、
エラーなしですが、何も書き出せません。パスまでは読み込める状態です。
間違っていそうな部分を上げましたが、情報不足でしたらすみません。
お願いします。
0589デフォルトの名無しさんNGNG
WM_SETTEXT
0590デフォルトの名無しさんNGNG
malloc の戻り値くらいチェックしろや
0591デフォルトの名無しさんNGNG
問題解決とは直接関係ないがちゃんとナル文字の分もバッファを取れ。
DWORD dwFileSize;
・・・
dwFileSize = GetFileSize(hFile , NULL);
strText = malloc(dwFileSize + 1);
ReadFile(hFile , strText , GetFileSize(hFile , NULL) , &dwBytes , NULL);
strText[dwFileSize] = '\0';

ところでchar/TCHARのハンガリアンはstrじゃなくてsz。どうでもいいことだが。
0592588NGNG
>590
すみません。事故解決しますた。
edit がstatic になってませんでした。
NULLではなかったっぽいです。
ご迷惑かけました。
0593588NGNG
>591
補足かたじけないです。
WindowsSoftのコードを参考にしたのですが。
それにしてもWinプラは型がややこしい。。。
0594デフォルトの名無しさんNGNG
mallocの戻り値、ReadFileの読み込みサイズくらいはチェックしましょう。
0595デフォルトの名無しさんNGNG
ちょっと質問します。

自分のウィンドウに来たメッセージ(マウスボタンの押下など)を
裏に隠れているウィンドウに伝える方法ってありますか?

SetWindowRgnでウィンドウに穴を開けると
穴の部分のウィンドウメッセージは裏にいるウィンドウに伝わりますが
穴が空いてない部分でも同じようにメッセージを伝えたいのです。
0596デフォルトの名無しさんNGNG
Mac のアプリを Win に移植したいのですが
ChasingArrows (ぐるぐる回転する矢印)を絵画するAPIはどれに相当するのでしょうか。

Macの場合はこれです。
Declare Function DrawThemeChasingArrows Lib "CarbonLib" (inBounds as Ptr, index as Integer, state as Integer, eUPP as Integer, userData as Integer) as Integer
0597デフォルトの名無しさんNGNG
絵画(かいが?)するAPIってなんだよ。
0598デフォルトの名無しさんNGNG
描画でしょ(w
0599デフォルトの名無しさんNGNG
VC++でアプリ作ってるんですが、
CreateAbout?AboutWindow?Aboutを表示する関数があった気がしたんですが
誰か分かる人居ませんか?
どっかにAboutが入ったAboutを表示する関数があった気がして・・
無いようでしたら、おとなしくDialogで作ります。
0600デフォルトの名無しさんNGNG
>>595
例えば、上にあるウィンドウが子ウィンドウならプロシージャに
SendMessage(GetParent(hWnd),msg,wParam,lParam);
って感じに、そのまま親ウィンドウにスルーしつつ、自分の処理もするとか
”伝える”って事は、自分で作ったウィンドウで隠れた場合だよね
親子関係じゃ無くても、下にあるウィンドウのハンドル取得して、同じようにすれば良い

VFW詳しい人って居ないのかな…
0601デフォルトの名無しさんNGNG
プログラミングwindowsという本を見ていてどうしてもわからなかったのですが
static TCHAR szAppName[] = TEXT ("SysMets1");という一文があったのです。
今までヨンたほかのwindowsプログラミングの書籍ではTEXT("")という表記がまったく使われていなかった(static TCHAR szAppName[] = "SysMets1";っぽい感じ)上に、プログラミングwindowsという書籍の索引を引いてもまったく解説されておらず困っています。
このTEXT("")というのはいったいどういう意味なのでしょうか?
よろしくおねがいします。
0602デフォルトの名無しさんNGNG
>>601
嘘つけ。第2章で出てくるだろ。<プログラミングWindows(上)
0603デフォルトの名無しさんNGNG
>>597-598さま、大変失礼しました。絵画ではなく描画です。

Mac のアプリを Win に移植したいのですが
ChasingArrows (ぐるぐる回転する矢印)を描画するAPIはどれに相当するのでしょうか。

Macの場合はこれです。
Declare Function DrawThemeChasingArrows Lib "CarbonLib" (inBounds as Ptr, index as Integer, state as Integer, eUPP as Integer, userData as Integer) as Integer
0604デフォルトの名無しさんNGNG
>>601
その本に馬鹿丁寧に書いてあるから
絶対読み落とすはずがない。
0605デフォルトの名無しさんNGNG
>>602
立ち読みで一部だけ読んだとか?
律儀にTEXTマクロ使ってる本ってあんまり見ないな…ネットでも少ないけど
0606デフォルトの名無しさんNGNG
>>603
日本語の「たくわん」に相当する英語を教えてください
0607デフォルトの名無しさんNGNG
>>595
Transparent
0608デフォルトの名無しさんNGNG
>>606さま、
Pickled Japanese radishだそうです
0609デフォルトの名無しさんNGNG
>>595
この辺でぐぐってみそ
WS_EX_TRANSPARENT
WS_EX_LAYERED
setLayeredWindowAttributes

0610デフォルトの名無しさんNGNG
>>599
ShellAbout()のことか?
ただしMicrosoftの文字が必ず入る。
0611デフォルトの名無しさんNGNG
>>610
ありがとうございます。
0612デフォルトの名無しさんNGNG
下げ忘れた・・・すまそん・・(´・ω・`)
0613デフォルトの名無しさんNGNG
Chasing Arrowsコントロールとはこれのことです。
http://images.google.com/images?q=tbn:EruxJ3ZCH6cJ:developer.apple.com/documentation/Carbon/Conceptual/HandlingWindowsControls/art/chasingarrows.gif
このコントロールを任意の座標に描画するAPIを探しています。宜しくご教授お願いします。
0614デフォルトの名無しさんNGNG
>>613
Windowsのシステムカーソルにそんなものはない。

LoadCursorのドキュメントから用途にあったものを探せ。
OSが変わればカーソルも変わる。
0615デフォルトの名無しさんNGNG
>>613
Windowsアプリでそれ使ってるアプリあるか?
0616デフォルトの名無しさんNGNG
>>615
それがどうした?
0617595NGNG
レスありがとうございました

>>600
”伝える”の意味はそれで合っています
隠れるウィンドウは親子関係にないので、どうすればいいか分からなくなってしまいました
まずは隠れているウィンドウのハンドルを取得する方法を模索してみます

>>607, 609
レイヤードウィンドウについて調べてみましたが
完全に透明にしないとメッセージが裏のウィンドウに届いていませんでした
自分のウィンドウは見せる必要があるので、この方法では駄目でした
言葉が足りず、申し訳ありません
0618デフォルトの名無しさんNGNG
>>617
完全な透明にしなくても後ろのウィンドウにメッセージが行くのがTRANSPARENT
0619デフォルトの名無しさんNGNG
もしかしてWindowsにはChasing Arrowsコントロールそのものがないでしょうか。
長い処理などをユーザーに待たせる時にマウスカーソルを砂時計に変えるかわりに、
回転する矢印のコントロールをウィンドウに配置して、処理中を知らせる物です。
0620デフォルトの名無しさんNGNG
>>619
無いっつってんだろ。
0621デフォルトの名無しさんNGNG
ない。砂時計しかない。そこでWin糞とか言ってはいかん。
やる気があるならリソース埋め込んで自前で作れ。
0622595NGNG
WS_EX_TRANSPARENTで無事に目的の事が出来るようになりました
TRANSPARENTをレイヤードウィンドウと勘違いしていました

ありがとうございました
0623デフォルトの名無しさんNGNG
>606が素晴らしいヒントを書いたのにねぇ。郷に入りては郷に従うべし。
0624デフォルトの名無しさんNGNG
>>595
勘違いしたのは >>609 のせいだな
0625デフォルトの名無しさんNGNG
>>623
別に素晴らしくもないと思う。むしろ回りくどくて書いた本人が満足してるだけっつーか。
0626デフォルトの名無しさんNGNG
>>625
>>606 == >>623 なんだからそれ以上かまうな
0627デフォルトの名無しさんNGNG
OutputDebugStringのような機能を独自で作りたくて
# そのままこれを使うといろんなアプリの出力が混じってしまうので
TCP、プロセス間通信あたりで実装しようかと思っていますが
もっとよい方法、定石、ライブラリみたいなものはあるんでしょうか?
0628デフォルトの名無しさんNGNG
>>626
=ではなく==を使う辺りがプログラム板って感じだ
0629デフォルトの名無しさんNGNG
>>627
ファイル書き出しが定石じゃないか?
0630623NGNG
>>626
違うよん。この件に関しては漏れは突っ込み入れ損ねたから。
0631595NGNG
>>624
悪いのは自分で >>609 さんは的確な回答を示していました
622の書き方も変なので勘違いがないように訂正させてください

WS_EX_TRANSPARENTをWS_EX_LAYEREDを指定し
SetLayeredWindowAttributesを呼び出したウィンドウ=レイヤードウィンドウに付け加えることで、
自ウィンドウが存在しないかのようにメッセージがすり抜け、裏にいるウィンドウに送られるようになりました

何度も言葉足りずで混乱させて申し訳ありませんでした
0632デフォルトの名無しさんNGNG
>>629
それだとODPと同じにはならないし
0633デフォルトの名無しさんNGNG
>>627
そういうのを syslog といいます
0634デフォルトの名無しさんNGNG
>>606の言いたいことが全然解らん
0635デフォルトの名無しさんNGNG
>>634
日本語で「たくわん」に相当する英語 = 存在しない

じゃないか?
0636デフォルトの名無しさんNGNG
>>595 >>631
おお、すまそ。
あくまで SetLayeredWindowAttributes と WS_EX_LAYERED が使われていないと、
WS_EX_TRANSPARENT が有効にならないんだということが分かった。

お詫びのしるし
http://www.sutosoft.com/room/archives/000050.html
http://www.microsoft.com/japan/msdn/windows/windows2000/layerwin.asp
0637お助けお願いm(_ _)mNGNG
>>580
返事ありがとうございます。
残念ながら、その方法ではアプリケーションを終了するタイミングは
取れますが、私の欲しいOSのシャットダウン中であるという情報は
取れませんね。

何はともあれ返事をいただいた事に対して深く感謝いたしますm(_ _)m
0638お助けお願いm(_ _)mNGNG
>>584-585
返信ありがとうございます。
まだ試しておりませんので、なんともわかりませんが
まったく手がかりがなかったので参考にさせていただきます。
誠にありがとうございました。m(_ _)m
0639デフォルトの名無しさんNGNG
>>77にある他アプリのOLEドラッグ開始の検出方法ってどんなものですか?
0640デフォルトの名無しさんNGNG
スパイウェアの開発者ですか?
0641デフォルトの名無しさんNGNG
DispatchMessage()の仕様について聞きたいんですけど
このAPIの終了はプロシージャが終了して、そのリターン値を受け取ってから終了する
ってことでいいんですか
0642デフォルトの名無しさんNGNG
はい。
0643デフォルトの名無しさんNGNG
THX
てことはプロシージャは一つのWinMain()からは
1ループ(メッセージループ)毎に常に1回しか呼び出されないって理解してOKですか
0644デフォルトの名無しさんNGNG
↑
すんませんコレ
スルーしといてください
0645デフォルトの名無しさんNGNG
メニュー項目に半角の'&'を出したいんですけど、
そのままだと次の文字がアクセラレータキーになっちゃいます。
どしたらいいですか。
0646デフォルトの名無しさんNGNG
&&
0647645NGNG
>>646 thxです
0648デフォルトの名無しさんNGNG
すいません質問です
コンソールアプリケーションです
GetCurrentDirectoryを使ってパスを取得しています
アプリケーションをダブルクリックで実行させると正しいパスが帰ってくるんですが
他のファイルをドロップして実行させると「C:\Documents and Settings\hogehoge」というパスを取得してしまいます
もちろんアプリケーションはそれとは別のディレクトリですし、ドロップしたファイルも同様です
これはこういう仕様なのでしょうか?
0649デフォルトの名無しさんNGNG
>>648
そういう仕様です
0650デフォルトの名無しさんNGNG
>>648
シェル (Explorer) から exe ファイルをダブルクリックなりドラッグ・アンド・ドロップなりで起動した際の
カレントディレクトリはどこにも規定されていなかったと思います。

98系だと EXE のパスや開くべきファイルのパス、
NT系だとユーザのホームディレクトリになるんだったかな・・・
実行ファイルのパスを得るためには、GetModuleFileName という API が用意されています。
0651デフォルトの名無しさんNGNG
>649,>650
GetModuleFileNameで取得したパスを分解してディレクトリパスを取得して使ってみます
ありがとうございました
0652デフォルトの名無しさんNGNG
確かにね、そういう仕様だ罠

なんかM$のデフォ設定きらい
C:はブート用(入れなおせば済むファイル)
D:をミラーリング(消えたらガクブル系)
みたいな管理を徹底的に無視しやがる
0653デフォルトの名無しさんNGNG
わざわざGetModuleFileNameつかわなくても
argv[0]に入ってるみたいだけど
0654デフォルトの名無しさんNGNG
>653
ああぁっ!

コンソールアプリなのに忘れてましたw
0655デフォルトの名無しさんNGNG
こっちでいいのかわかりませんが、教えてください。
VB6でピクチャボックスにGetPixelつかうと、ウィンドウと重なっている場合、
前のウィンドウのピクセルを拾ってしまうんですが、
どうすれば重なって隠れているウィンドウの
ピクセル色が拾えますか?
0656デフォルトの名無しさんNGNG
__argvを忘れてやるなよ。
0657デフォルトの名無しさんNGNG
__argvはVCローカルなり
0658デフォルトの名無しさんNGNG
便乗質問だけど
GetCommandLineで得られる文字列にも「実行ファイルのパス」が含まれてますが
これが確実にフルパスである、という保証はありますか?

GetCommandLineとGetCurrentDirectoryとGetModuleFileNameとを比較してみたら
引数の順序や戻り値の仕様がバラバラで精神衛生上アレだと思った
0659デフォルトの名無しさんNGNG
全然ありませんが。>保証
引数や戻り値はまぁあれだ、作ってるやつ(チーム)がそれぞれ違ったりするんで許してやれ。
0660デフォルトの名無しさんNGNG
>>658
俺が試してみたら、ファイル名だけだったよ

ファイル選択ダイアログとかはGetCurrentDirectoryで良いけど、
実行ファイルのパスが知りたいならGetModuleFileName使うが宜しい
コマンドライン引数を任意のタイミングで知りたいなら、GetCommandLineを使えばよい
0661デフォルトの名無しさんNGNG
>>655
Windows 側でイメージは保持してくれません。
重なって隠れているピクセルは拾えません。

別のウィンドウが上に重なったら、その下にあるウィンドウのイメージは壊れます。
別のウィンドウの下になっている部分が表示される時には WM_PAINT
が送られますので自分で書かなければいけません。
よって、画面上にあるピクセルを取得しても別のウィンドウが重なっている時は
重なっているウィンドウのピクセルが返ってきます。
これを回避するにはあらかじめ画面に表示するイメージを別に作っておくしかありません。
「オフスクリーンビットマップ」で調べてみてください。

VB には他に逃げ道があるのかもしれませんが。
0662デフォルトの名無しさんNGNG
>>660
__argc, __argvは、VC6.0以降は非サポートなの?
0663デフォルトの名無しさんNGNG
指定したプロセスに対して,
どんなスレッドが起こされているのか
リアルタイムで表示するような
アプリケーションてないですかね?
0664デフォルトの名無しさんNGNG
spy++
0665デフォルトの名無しさんNGNG
リヤルタイムじゃないかもしれない
0666デフォルトの名無しさんNGNG
リストビューのアイテムがクリックで選択されたと同時に
そのアイテム番号(リストの行)を拾いたいのですが、
なんかメッセージ飛んできますか?
0667デフォルトの名無しさんNGNG
>>666
親へ WM_NOTIFY で NM_CLICK

http://msdn.microsoft.com/library/en-us/shellcc/platform/commctls/listview/notifications/nm_click_listview.asp?frame=true
0668デフォルトの名無しさんNGNG
>>667
ありがとん。
0669655NGNG
>>661
わかりました。
ありがとうございます。
0670デフォルトの名無しさんNGNG
すいません。質問させてください。
Susieのプラグインで

HLOCAL *pHBm : ビットマップデータ本体のメモリハンドルが返される

とあるんですが、メモリの内容を見るにはどうすればいいですか?
0671デフォルトの名無しさんNGNG
すいません。VBスレと間違えました。
0672デフォルトの名無しさんNGNG
>>670
http://www.microsoft.com/japan/developer/library/jpwinpf/_win32_locallock.htm
別にAPIスレはC/C++限定じゃないが。
0673デフォルトの名無しさんNGNG
文字リテラルは_Tまたは_TEXTを使用して定義する(_TEXT("heloo")という具合)と書いてあったのですが、実際のコードに_TEXTを使用するとコンパイルエラーになってしまいます。
サンプルプログラムを見るとTEXT("")という形で_が使われていなかったりして書いてあることと実際がぜんぜん違うじゃないかと困っています。
#include <windows.h>
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
MessageBox (NULL, _TEXT ("Hello, Windows 98!"), _TEXT("HelloMsg"), 0) ;
return 0 ;
}
本に書いてあるとおりならこれで間違いないはずなのですがどうしてもコンパイルできないのはPCの問題でしょうか?

VC++6.0使用してます
0674デフォルトの名無しさんNGNG
#include <tchar.h>
0675デフォルトの名無しさんNGNG
TEXT() や __TEXT() を使いましょう。
_T() や _TEXT() を使いたければ、tchar.h 等をインクルードしましょう。
0676デフォルトの名無しさんNGNG
/*--------------------------------------------------------------
HelloMsg.c -- Displays "Hello, Windows 98!" in a message box
(c) Charles Petzold, 1998
--------------------------------------------------------------*/

#include <windows.h>

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
MessageBox (NULL, TEXT ("Hello, Windows 98!"), TEXT ("HelloMsg"), 0) ;

return 0 ;
}
0677デフォルトの名無しさんNGNG
>>674-675
わかりやすい回答ありがとうございます。
御礼をしておいてまた質問するもの失礼かと思いますが、#include <tchar.h> と_TEXTの組み合わせか、TEXT()を普通に使用するとではどちらが望ましいのでしょうか?
0678670NGNG
>>672
ありがとうございます。
ロックを解除したいのではなく、中身を見たいんですが・・・
0679デフォルトの名無しさんNGNG
バカキター
0680デフォルトの名無しさんNGNG
>>655
AutoRedraw=Trueしれ
0681デフォルトの名無しさんNGNG
>>678
http://www.microsoft.com/japan/developer/library/jpwinpf/_win32_locallock.htm
0682デフォルトの名無しさんNGNG
   ∩___∩         |
   | ノ\     ヽ        |
  /  ●゛  ● |        |
  | ∪  ( _●_) ミ       j
 彡、   |∪|   |        >>678
/     ∩ノ ⊃  ヽ      J
(  \ / _ノ |  |
.\ “  /__|  |
  \ /___ /
0683670NGNG
>>682
つりじゃないんですけど・・・
0684デフォルトの名無しさんNGNG
>>677
他のヘッダやマクロを使う特別な理由がなければ、TEXT() でいいと思うよ。
0685デフォルトの名無しさんNGNG
>>678
戻り値がメモリへのポインタなんだから、それを取得して好きに読めばよい。
取得したポインタの中身を読む方法が分からないんだとしたら、スレ違い。
0686デフォルトの名無しさんNGNG
>>684
どうもですー。
0687デフォルトの名無しさんNGNG
Str系APIってMBCS考慮するんだな。
知ってた?
0688デフォルトの名無しさんNGNG
Win32APIで、メニューアイテムのテキストを収得、変更する方法はありますか
0689デフォルトの名無しさんNGNG
API で出来なくてどうやってメニューをハンドリングしろと?
GetMenuString
ModifyMenu
0690デフォルトの名無しさんNGNG
フックプロシージャをクラスのメンバー関数として持ちたいんですが、
staticで定義されたフックプロシージャにthisポインタを渡す方法は
何かないでしょうか?
0691デフォルトの名無しさんNGNG
>>690
SetWindowLong/GetWindowLong
0692デフォルトの名無しさんNGNG
>>690
自前の永続変数にthisアドレスをコピー。
0693デフォルトの名無しさんNGNG
>>691
回答ありがとうございます。
あと質問の際の情報が不足していました申し訳ありませんでした。
お教えいただいた対策は、WH_CALLWNDPROC等のプロシージャ側にWindowHandleが送られて
くるタイプのプロシージャに対しては有効なのですが、今回メンバー関数に入れたい
フックプロシージャは、WH_KEYBOARD、WH_MOUSEなのでプロシージャにWindowHandleは
送られてきません(WH_MOUSEは送られてきたかも..)。

こういった場合の対策法は何かありませんでしょうか?

0694690=693NGNG
>>692
やっぱり、その方法しかないんでしょうか..
0695690NGNG
>>693
自己レスです。
よく考えたらHookだと目的のWindow以外のHandleも受け取るので無理ですね
やっぱり>>692の方法が現実的なんでしょうか?

とりあえず、>>692の方法で組んでみます。他にスマートな方法を知っている方が
居られましたらお教えください。

>>691,>>692
ありがとうございました。
0696デフォルトの名無しさんNGNG
>>691はフックプロシージャをウィンドウプロシージャと読み違えて回答し、
>>690は見当違いな>>691の回答に丁重な謝辞を述べ、
まともな回答をした>>692を粗略に扱った、に10000ペソ。
0697デフォルトの名無しさんNGNG
>>693は照れ隠しにスマートな方法はないか?
と全く心のこもっていないダミーの質問をして、己の短慮を誤魔化そうとした、に10000ペソ。
0698デフォルトの名無しさんNGNG
実行した後、自分自身が消えるような実行ファイルはどのような
感じで作ったらいいですか?
0699デフォルトの名無しさんNGNG
>>698
>ウイルス、ハッキング・クラッキングを求めるような発言は禁止です。

だそうだが、それは真っ当な用途のための質問かい?
0700デフォルトの名無しさんNGNG
はい、そうです。
0701デフォルトの名無しさんNGNG
ま、いいや

実行ファイルのパス取得して、別プロセス起動後、自アプリを終了
ググれば、サンプルはいくらでもあるよ

NT系限定だけど、
MoveFileExでMOVEFILE_DELAY_UNTIL_REBOOTフラグを指定すれば、
再起動時に削除できる
0702デフォルトの名無しさんNGNG
>>699
アンインストーラ自身とかは自殺してくれないと困るだろ。
0703デフォルトの名無しさんNGNG
>>702
「アンインストーラを作りたいのですが・・・」
みたいに聞いてくれたら、
余計な突っ込みは入れないんだけどね
0704デフォルトの名無しさんNGNG
MSIとか、InstallWizardとかググればいいものを。
わざわざ自分でインストーラ作るのは車輪の再発明。
0705デフォルトの名無しさんNGNG
>>700-701
CreateFileでFILE_FLAG_DELETE_ON_CLOSEを指定する方法もある。
0706デフォルトの名無しさんNGNG
>>698
バッチファイルを作って、ループを回しそこで削除すればいい。
最後にバッチファイル自身を消す。
0707デフォルトの名無しさんNGNG
echo off
:start
del ほげほげ.exe
if exist ほげほげ.exe goto start:
del 自分自身.bat
0708デフォルトの名無しさんNGNG
前にここで聞いたときは
1) rundll32で削除用DLLを起動
2) ヒープ上に3)、4)をやるコードをコピーしてジャンプ
3) 自分自身のロックをFreeLibraryで解放
4) 自分自身を削除
という方法を教わった。

で、XPSP2 on Athlon64にしたらヒープにジャンプしたところで
エラーが発生しましたとさ(チャンチャン
0709デフォルトの名無しさんNGNG
ヒープにコードを書くのは、いまや非合法という扱いになったね。
ま、元々そうだったけど明確に弾かれるようになった。

SP2のデータ実行防止(DEP)機能なのか?
それとも多くのバイナリを/GSオプションでリコンパイルした結果?
0710デフォルトの名無しさんNGNG
virtualallocならいいの?
0711デフォルトの名無しさんNGNG
初めて質問します。

DirectXで描画している他人のウィンドウに落書きしたいのですが、
DirectXの描画速度が速いためにちかちかしてしまいます。

負けじとこちらもDirectXで描画してみたのですが、
やっぱりちかちかしてしまいました( つД;)

他人のDirectX描画をクリッピングとかできたりするんでしょうか?

テスト・開発環境はWinXP SP2+VC7+DirectX9cです
0712デフォルトの名無しさんNGNG
>>709-710
原因はDEPだった。VirtualAllocでPAGE_EXECUTE_READWRITEを
指定したメモリを確保するように変更して解決
0713デフォルトの名無しさんNGNG
タスクマネージャが立ち上がったら終了するようなウィスルを作りたいのですが、
どうすればいいですか?
0714デフォルトの名無しさんNGNG
タスクマネージャ.exeを事前にすり替えrp
0715デフォルトの名無しさんNGNG
がんばってウィスれ!
0716デフォルトの名無しさんNGNG
正攻法ならグローバルフックとpsapiを調べれ
0717デフォルトの名無しさんNGNG
>>711
DirectXの描画速度は99%無関係だと思う
0718デフォルトの名無しさんNGNG
>>711
リージョン使って落書きの形のウィンドウを作って、
そのDirectXなウィンドウの上に置くとか。
0719711NGNG
>>718

ウィンドウを重ねて(TOPMOST)で作成しても、
落書きしたい相手のウィンドウが上書きしてくるんです。
(言い忘れましたが、落書きしたい相手というのがゲームなので少し特殊なのかもしれません…)

DirectXでTOPMOSTよりも前面に上書きするオプションがあるかどうかなど当たってみます。
0720デフォルトの名無しさんNGNG
>>711
サーフェスぶんどってそこに描画ならできたはず。
詳しくは知らないのであとは調べてくれ。
0721デフォルトの名無しさんNGNG
>>719
フルスクリーンだと>>720しないときついけどウィンドウモードならリージョンでも
いけるはずなんだけどなぁ。nVidiaのカードだとドライバーのバージョンでいろいろ
挙動が変わったと思う。Layerd Windowも試してみるといいかも。
0722デフォルトの名無しさんNGNG
IHTMLDocument2のwriteでxmlデータを出力してみたのですが、どうにもxmlとして解釈してくれません。
なんとかxmlとして表示させられないでしょうか?
0723デフォルトの名無しさんNGNG
>689
できました。づもありがとうございます。
0724デフォルトの名無しさんNGNG
副スレッドを立てて処理をする時
一方のスレッドが参照のみを行う(NULLでない間ループ等)場合でも
クリティカルセクションオブジェクトというのは作る必要があるんでしょうか?
0725デフォルトの名無しさんNGNG
ない
0726デフォルトの名無しさんNGNG
たとえば状態の変化が
NULL 5秒
NULL 5秒
!NULL 5秒
NULL 5秒
NULL 5秒
ポーリング感覚が10秒だったら検出出来ない罠
0727デフォルトの名無しさんNGNG
>>724
ポインタがNULLかどうかなら大丈夫だけど
一般にCPUが一命令で処理できないようなデータの参照は駄目。
あと最適化でNULL突っ込むタイミングが変わらないとも限らないから
volatile指定しておくといいかも。
0728デフォルトの名無しさんNGNG
他から紹介されてここにたどりつきました
個々のプログラムが使用するメモリー容量を取得したいのですが・・・
(タスクマネージャのプロセスタブで表示できる仮想メモリサイズ)
APIはどれを使えばいいのか知りたいのですが解るかた教えてください。
0729デフォルトの名無しさんNGNG
serviceを作っています。
ある条件が真になるとserviceから現在logonしているuserのデスクトップ上で
applicationを起動したいのですが方法をご存知の方教えてください。

現在は、ターゲットapplication起動用のapplicationを
"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run"
に登録する方法を取っているのですが、serviceから直接起動できるのなら
そのようにしたいと考えています。
0730デフォルトの名無しさんNGNG
CreateProcessAsUser
0731デフォルトの名無しさんNGNG
便乗スマソ。現在ログオンしているユーザーのトークン取得ってどうするの?
0732デフォルトの名無しさんNGNG
てきとーにOpenProcessTokenする
0733デフォルトの名無しさんNGNG
HDCのデータをビットマップファイルで出力するにはどうすればいいですか?
0734デフォルトの名無しさんNGNG
>>733
GDIにはないから、BITMAPFILEHEADER構造体→BITMAPINFOHEADER→色値の順にへこへこ書き出す
GDI+にはあるらしいが俺は試してないんで、すまんがコメントを控えさせていただく
0735デフォルトの名無しさんNGNG
>>733
IPicture::SaveAsFile()もあるでよ
0736デフォルトの名無しさんNGNG
現在表示されている画面に直接描画をしたいのですが
どうしたらいいでしょうか?

単にデスクトップへの描画でなく
デスクトップよりも手前に表示されているウィンドウがあればそれも含めて
現在の画面に直接落書きするようなことをしたいのです

画面に落書きが表示された状態でも操作は普通にさせたいので
画面のハードコピーをとって表示させてその上に書くというのは無しで
0737デフォルトの名無しさんNGNG
>>736
ガッ = GetDC(ぬるぽ);
0738デフォルトの名無しさんNGNG
>>737
なるほどぉ
ありがとうございます
0739デフォルトの名無しさんNGNG
どこかのスレでC++を事前に勉強しておかないと、VC++を覚えるのは困難
だと言っている人がいましたが本当なのでしょうか?
できれば、Cから一気にVC++に飛びたいのですが……
0740デフォルトの名無しさんNGNG
>>739
言ってる意味ぜんぜん分からないから。
VC++はCやC++の延長上にあるものじゃないから。
雪と雪見大福くらい違うから。
0741デフォルトの名無しさんNGNG
740に突っ込みたいけどそれ以前にスレ違いだボケ>>739
0742デフォルトの名無しさんNGNG
>>740
VC++はCやC++の開発環境なんですけど・・・
0743デフォルトの名無しさんNGNG
>>742
VC++覚えるのにCの知識もC++の知識も要らないでしょ。
VC++でCやC++の開発したければそれぞれの言語の知識が必要だけど。
0744デフォルトの名無しさんNGNG
>>740
突っ込みどころ満載で・・・
0745デフォルトの名無しさんNGNG
みんないじめてるな

>>739
Windows のアプリが作りたいのに C++ をわざわざ他のプラットフォーム
で勉強してもしょうがないよ。
まあ、C の知識のみ API の知識なしで、 MFC 使って C++ のプログラム
を覚えるのはちと荷が重いけどね。

VC++ でアプリ開発するには
C言語 + API
C++言語 + MFC (+ API)
C++言語 + ATL+ API
等、選択肢はいくつもある。
段階的に覚えていけばよいよ。
0746デフォルトの名無しさんNGNG
>>743
君のいう「VC++を覚える」とは、エディタの使い方かよ。 (プ
0747デフォルトの名無しさんNGNG
>>746
あとは、プロジェクトの設定とかだな
0748デフォルトの名無しさんNGNG
Serviceと、そのServiceから起動されるExeを作ってます。
Serviceから現在ログインしているユーザでExeを起動すると
パスワード有りの場合は何も問題なく実行出来るのですが、
パスワード無しの場合LogonUser関数で失敗(ErrCode:1327)します。

原因を追いかけていくと
ローカルセキュリティの設定 → セキュリティオプション内の
『アカウント:ローカルアカウントの空パスワードの使用を制限する』
の設定で挙動が変化すると判ったので
Exeを起動している間だけここの設定を『有効→無効』にしたいと思っています。

ここの設定を変更する方法(APIとか)を教えてください。

0749デフォルトの名無しさんNGNG
でも、プログラミングを教えるようなサイトでも、VCを言語として表現してる所があったり…
MFCの意味で使ってるっぽい
0750デフォルトの名無しさんNGNG
とりあえず、MFCはバージョンアップも止まりドトネト対応しないから、M$が収束させる方向なんだが。
0751デフォルトの名無しさんNGNG
>>749
確かにね。仕事で引き合い貰って客先の案件要求見ると、言語の欄に.NET、VB、VC、C/C++、JAVAなんて書いてあったりするからね。
#VBって書いてあってExcelVBAだったりJAVAって書いてあってDeveloper2000なんか出てきた日にゃぁ…
0752デフォルトの名無しさんNGNG
MFCだとActiveXベースになってニッチもサッチもいかなくなるからやめるべし。
0753デフォルトの名無しさんNGNG
VCは開発言語でいいんじゃないか?
Cだってライブラリも言語のうちだし、
C++のクラス、テンプレートも言語のうちだろ

あとVisualStudioの開発ツール使わないでコーディングする場合もあるから
開発環境とは直接関係ないし
0754デフォルトの名無しさんNGNG
>>748
現在ログオンしているユーザーと違うアカウントで
起動したいのでなければ>>731-732
0755デフォルトの名無しさんNGNG
もう面倒くさいから"特技パソコン"でいいよ。
0756デフォルトの名無しさんNGNG
>>751
仕事や人事にでてくるそーゆー用語は
言語かどうかでは選んでないだろ
0757デフォルトの名無しさんNGNG
すいません。質問です。
Platform SDKとNET Framework SDKをインストールして
#include<windows.h>が使えるようになるんでしょうか??
0758デフォルトの名無しさんNGNG
環境に関係なくwindows.h持ってれば使えるだろ
0759デフォルトの名無しさんNGNG
windows.h持っててもコンパイルできるコンパイラがないと使い物にならないけどね。
VC++互換の言語拡張されてるやつ。
0760デフォルトの名無しさんNGNG
>>759
たしか、>>757にvc.exeが入ってたよね。
ヘッダは無かった気がするけど。
0761デフォルトの名無しさんNGNG
>>756
「言語」って書いてあるから>751のように書いたんだが。
0762デフォルトの名無しさんNGNG
ヘッダはPlatform SDKのほうに入ってる
0763デフォルトの名無しさんNGNG
>>758
>>759
レス、�dクスです。
コンパイラはbccの無料のやつを使ってるんですが。互換言語のところに、VC++と確か書いてありました。
今ボーランドのファイルを調べてみたら<windows.h>、ありやしたYO-!
0764デフォルトの名無しさんNGNG
とりあえずPlatform SDKのcoreSDKとやらを落としてみます
0765デフォルトの名無しさんNGNG
ありがとうございました。また来ます。
0766デフォルトの名無しさんNGNG
「プリプロセッサの定義」のところで,
_UNICODE を設定したとき,
Unicode にもいろいろありますが,
どのコードが使われるのでしょうか?
0767デフォルトの名無しさんNGNG
UTF-16
0768デフォルトの名無しさんNGNG
UCS-2じゃねの
0769デフォルトの名無しさんNGNG
UniscribeとかはWin9xでもUTF-16受け付けるけど
データ型が違うわけじゃないから(全部WCHAR)
0770デフォルトの名無しさんNGNG
>>767
正確にはUTF-16からサロゲートペアを取り除いた物、だったはず。
0771デフォルトの名無しさんNGNG
それをUCS-2っていうんじゃないのか?
Win2k以降ならサロゲートにも対応してるしWin9xでも>>769
0772デフォルトの名無しさんNGNG
あ、漏れの環境で試した限りではWin95だけは
どうあがいてもサロゲート文字が出せなかった
0773デフォルトの名無しさんNGNG
文字集合と転送形式は違うだろ
0774デフォルトの名無しさんNGNG
質問です。
WS_EX_TOOLWINDOWを使って作ったウィンドウを
子ウィンドウとして、出しているのですが、
Xボタンを押すとウィンドウを隠すのではなくて
完全に消去されてしまっていてShowWindow(hwnd,SW_SHOW)で
また表示することができません。
Xボタンの処理内容を変更するにはどうしたらよいでしょうか?
0775デフォルトの名無しさんNGNG
>>774
WM_CLOSE
で ShowWindow(hwnd, SW_HIDE) でウィンドウ消して
DefWindowProc を呼び出さない。
0776デフォルトの名無しさんNGNG
>>775
そーやってんだけどなぁ・・・ああ?ん?へ?
って、ソースが汚すぎてインデントが腐ってて
よくみるとbreakで抜けていましたw
ごめいわくおかけしました。逝ってきまつ。
レスありがとうございました。おかげで解決しました。
0777デフォルトの名無しさんNGNG
Cで、リソーススクリプトやMFCを使わずに、
ツールバーを使う方法がありましたら教えてください。
ボタンやメニューなどは分かったのですが、ツールバーは見つかりませんでした。
0778デフォルトの名無しさんNGNG
>>777
スリーセブンおめ!
いや、普通にCreateWindowExで作れるんじゃねぇ?
ぐぐっといたぞ。
猫さんが一番上にきてるね。
http://www.google.co.jp/search?hl=ja&q=%E3%83%84%E3%83%BC%E3%83%AB%E3%83%90%E3%83%BC+CreateWindowEx&lr=
0779デフォルトの名無しさんNGNG
>>773
質問がそもそも曖昧だし
UCS-2は転送形式をも含んだ意味で使われる場合もあるし
0780777NGNG
>>778
ありがとうございます。
確かに乗っていますが、リソーススクリプトを使っています。
ボタンの章では使わずに作られているのですが。
http://www.kumei.ne.jp/c_lang/sdk/sdk_28.htm
0781デフォルトの名無しさんNGNG
>>780
自作ライブラリから適当に抜き出した
構造体名とかから、ググれば解説ページも出ると思う

 TBBUTTON *tbButton
 TBADDBITMAP tb;

 hWnd=GetParent(hwToolbar);
 tb.hInst=(HINSTANCE)GetWindowLong(hWnd,GWL_HINSTANCE);
 tb.nID=IDD_BMP_BBOARD;
 iIndex=SendMessage(hwToolbar,TB_ADDBITMAP,1,(LPARAM)&tb);
 tbButton[1].iBitmap=iIndex;
 SendMessage(hwToolbar,TB_ADDBUTTONS,1,(LPARAM)&tbButton[1]);
0782777NGNG
>>781
ありがとうございます。調べてみます。
0783デフォルトの名無しさんNGNG
マルチメディアタイマー(timeSetEventなど)を使ってプログラムを組んでいるのですが、
処理が軽い時は一定のタイミングでコールバックが来るので良いのですが、
重くなった時は呼び出し回数が減り、その後に大量にコールバック関数が呼ばれます
重くなった時は回数が減っても良いのですが、軽くなった時に元通りのタイミングに戻って欲しい場合はどうすれば良いですか?

timeGetTime辺りで呼び出し間隔を記録して、
・前回からの呼び出し間隔が設定値よりかなり短い時は、丁度良い感覚のもの以外はすぐにreturnする
というだけの処理で良いのでしょうか?
重い状態が長続きした場合に、バッファがたまってオーバーフローを起こしたりしないのでしょうか?
0784デフォルトの名無しさんNGNG
>>780
え?
猫さんの63章は使って無いんじゃない?
リソーススクリプトはビットマップを読んでるだけでしょ。
0785デフォルトの名無しさんNGNG
>>783
それって単純にやっちゃ駄目なんじゃない?

つまり、重くなったときは処理が間に合わなくてメッセージだけ
蓄積されてて軽くなったら一気に処理しちゃってるってことでしょ?

こういうの解決するのってメッセージの送信側と受信側で
メッセージの蓄積状態を管理しなきゃ駄目なんじゃない?
よう知らんけどw
0786デフォルトの名無しさんNGNG
>>785
マルチメディアタイマーはWindowsが管理してるんで、送信側の管理が良く分からんのですよ
今実験してたら、しばらく負荷かけてたら、プログラムが落ちた…そのままでは問題みたいです
マルチメディアタイマーでは無理な場合は、自作タイマーで行くしか無いかな…
0787777NGNG
>>784
ホントですか?
結構いろんな所を調べていて、リソースとか、.rcとか見つけると、
またかと思い他のページに行くとかしていました。差し替えてやってみます。
0788777NGNG
>>784
できました。後は>>781さんのも参考にして理解を深めたいと思います。
お答えくださった方、ありがとうございました。
0789デフォルトの名無しさんNGNG
こんばんわ

今Windows内で開いてあるウィンドウのハンドルを全て得たいのですが、
どのAPIを使えばいいのでしょうか?

教えていただけると助かります。
0790デフォルトの名無しさんNGNG
>>789
EnumWindows
0791733NGNG
>>734-735
ありがとうございます。
色の値をへこへこ書く方法に挑戦しているのですが、
COLORREF rgb;に色の値が入っていて、
LPBYTE lpPixel;がピクセルビットの先頭を指しているという場合、
ここからどうすればいいのでしょうか。カラービットは24です。
0792789NGNG
>>790
ご返答ありがとうございました。


あと、一点ほど質問があるのですが、
人様のウィンドウハンドルを取得したとします。
そのウィンドウ(ハンドル)にイベントを送信できるのでしょうか?

たとえば、メモ帳が開いてあるとして、
そのメモ帳に自分が作ったアプリケーションからイベント(文字入力や改行など)を送ることができるのでしょうか?

もしできるとするなら、どのAPIを使えばいいのでしょうか?
再度の質問になりますが、ご返答いただけたらとても助かります。

申し訳ございませんが、よろしくお願いいたします。
0793デフォルトの名無しさんNGNG
>>792
できる。
イベントを送るにはPost/SendMessageを使う。
戻り値を知る必要のあるときと引数にポインタを渡すときにはSendMessage()。
どちらにも当てはまらないときにはPostMessage()。迷ったらSendMessage()。

ちなみにメモ帳はメモ帳自身のウィンドウにエディトボックスが子ウィンドウとして張り付いていることに注意。
0794デフォルトの名無しさんNGNG
ただし、文字列の送信は非常に面倒くさい。
0795デフォルトの名無しさんNGNG
質問です
MessageBox()のオーナーウィンドウのハンドルをNULLにした場合で
プロシージャからMessageBox()を呼び出し、無視してオーナーウィンドウを操作して終了させた場合
MessageBox()を呼び出しているプロシージャが終了しないまま
実行ファイルが終了することになると思うんですが

プロシージャが終了していない=WinMain()のメッセージループに制御が戻っていない にもかかわらず
どうやってプロシージャが終了のメッセージを受け取り、実行ファイルが終了しているんでしょうか
0796デフォルトの名無しさんNGNG
>>792
便利なAPIがあるぞ。
GetWindowThreadProcessId
GetGUIThreadInfo
これで得たフォーカスを持ったウィンドウに
SendMessageを送る。
0797デフォルトの名無しさんNGNG
>>795
MessageBoxの中でメッセージループが回ってるから
そいつが終了イベントを拾ってウィンドウプロシージャが呼ばれる。
0798デフォルトの名無しさんNGNG
MessageBox 内部のメッセージループは WM_QUIT がポストされると、
処理を終了するけど、もう一度アプリに WM_QUIT を送りなおしてたか
キューから取り除かなかったかしてたと思う。
その挙動を利用して MessageBox を自動的に閉じるテクニックがあったような。

で、MessageBox 関数から戻ってきた時にプログラムがどこまで解体されているかが
問題だね。WM_QUIT まで処理は進んでるんで、MessageBox 関数後の
処理でクラッシュするかもしれない。運良く本来のメッセージループまで
もどれたら、アプリは正常終了できるんじゃないかな。
0799733NGNG
自己解決しました。
0800デフォルトの名無しさんNGNG
>>797
>>798
THX
結局MessageBoxってWinMainのような
ウィンドウを生成してメッセージボックスをもつ仕様なんですね
0801デフォルトの名無しさんNGNG
EnumWindowsでウィンドウハンドルを取得すると、
タスクバーに無い(見えない)ウィンドウらしきものも取得されるみたいですね。

デスクトップには実際に3つしかウィンドウを開いていないのですが、
100個ちかくのウィンドウが取得されます。

タスクバーにあるウィンドウ(アプリケーション含め)だけを取得したい場合はどうすればいいのでしょうか?
0802デフォルトの名無しさんNGNG
// EnumWindows()ではIME等、不可視のウィンドウも全て列挙されるので
//ふるいにかける必要がある
if( ( IsWindowVisible( hWnd ) ) && // 可視状態か
( GetWindow( hWnd, GW_OWNER ) == NULL ) && // トップレベルウィンドウか
( lstrlen( szWindowName ) > 0 ) && // キャプションを持っているか
( lstrcmp( szClassName, "Progman" ) != 0 )) // シェルでないか
{
0803デフォルトの名無しさんNGNG
>802
お前・・・それ試したか?
0804デフォルトの名無しさんNGNG
試すのは >>801 の仕事
0805デフォルトの名無しさんNGNG
猫サンネコネコネコミミモード♥
0806デフォルトの名無しさんNGNG
>804
つまりお前の思い込みで書いたってことね。
納得。
0807デフォルトの名無しさんNGNG
>>801
ITaskBar とかっていうインターフェイスなかったっけ?
0808デフォルトの名無しさんNGNG
http://www1.harenet.ne.jp/cgi-bin/cgiwrap/unaap/bbs2/bbsdsp_itm.cgi?genrekey=api&logmode=2&tpckey=1035518663
0809デフォルトの名無しさんNGNG
IInternetProtocol を実装して、独自の情報をIEコンポーネントに表示することは出来るのですが。
URLOpenBlockingStream / URLDownloadToFile / ATL::CBindStatusCallback::Download
など、データを取得する関数がことごとく失敗します。
(URLDownloadToFile にいたっては失敗したくせに成功コードを返してきます)
それぞれ 結果の Stream が NULL / ファイルが作成されない / OnDataAvailable が呼ばれない
という症状が出ています。
IEコンポーネントでは表示できるし、
実際にプロトコルハンドラの方にリクエストが来ていることは確認しました。
http などの定義済みプロトコルではこれらの取得関数は成功します。

どなたか成功したことのある方がいらっしゃったらお知恵をお貸しください。
0810789NGNG
>>793
ご返答ありがとうございます。
試してみます。

ありがとうございました。
0811デフォルトの名無しさんNGNG
あるウィンドウに文字を送信したい場合、
SendMessegeの引数をどうすればいいのでしょうか?

ウィンドウハンドルは、hWnd
送信したい文字は「a」とするならば、どうなるでしょう?

教えていただきたいのですが、ご存知の方はいますか?
0812デフォルトの名無しさんNGNG
MSDN の WM_CHAR を調べればいいと思う。
0813デフォルトの名無しさんNGNG
>812
質問はそういう意味だったのか。よく分かるな。
0814デフォルトの名無しさんNGNG
>>812 は細木数子
普通は SendMessage(hWnd, WM_HOGE, TEXT('a'), 0); って思うのが関の山
0815デフォルトの名無しさんNGNG
GetWindowText
SetWindowText
0816デフォルトの名無しさんNGNG
質問です。
VisualBasic6.0でAPI呼び出す方法を勉強したいのですが
解説されているサイトでお勧めなのを教えてください。
0817デフォルトの名無しさんNGNG
http://www.google.co.jp/search?hl=ja&q=VisualBasic6.0%E3%81%A7API%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%99&lr=lang_ja
0818816NGNG
ありがとうございます。
でもgoogleは文章で検索するのは精度落ちるのであまりいい方法ではないですよ。
詳しくはこちらで
http://kagakuteki.poke1.jp/jokyu/google-shikumi.html

引き続きお勧めサイトの情報お待ちしております。
0819デフォルトの名無しさんNGNG
>818
うーん、お前は死んだ方がいいぞ。
自分の書き込みをよく見直してから投稿しろ。
0820デフォルトの名無しさんNGNG
>>818
このキーワードならどう?
http://www.google.co.jp/search?as_q=&num=100&hl=ja&c2coff=1&btnG=Google+%E6%A4%9C%E7%B4%A2&as_epq=Win32API&as_oq=VB+VisualBasic&as_eq=&lr=lang_ja&as_ft=i&as_filetype=&as_qdr=all&as_occt=any&as_dt=i&as_sitesearch=
0821デフォルトの名無しさんNGNG
ちょっと調べてわからないんで、安直ですが、教えて。
モニタの色の設定が 256 とか 24 bit color とか調べる API はなんですか。
0822デフォルトの名無しさんNGNG
>821
あんま自信ねーんだけど
GetPixelFormat と DescribePixelFormat でどうよ。
0823デフォルトの名無しさんNGNG
今アクティブにしているウィンドウから、別にウィンドウへ切り替えたらときに出るWMメッセージってなんでしたっけ?
忘れてしまいました。
教えてください。すいません。
0824デフォルトの名無しさんNGNG
>>821
GetDeviceCapsかな?
0825デフォルトの名無しさんNGNG
>>823
ttp://www.geocities.jp/winapi_database/Message/WM/index.html
0826デフォルトの名無しさんNGNG
>>816
このスレにはVBプログラマあんまりいないんじゃねえの…?
基本がわかってるなら「ダニエル・アップルマンのWin32 APIパズルブック」という本が面白かった。本だけど。
http://www.amazon.co.jp/exec/obidos/ASIN/4881357905/

>>821
GetDeviceCapsでどう?

>>823
SPYで調べろよ。WM_ACTIVATE
0827816NGNG
>>826
ありがとうございます。
早速三省堂へ行ってきます。

>>819
在り来たりな言葉だが

  厨 房 必 死 だ な w
0828デフォルトの名無しさんNGNG
うわ (;´Д`)y-~~ なんか俺と同じニオイがするな
0829821NGNG
>>824, >>826 ありがとうございます。
MSCN のサンプルに 1<<GetDeviceCaps(hDC, BITSPIXEL) で色数を求めている例が
ありました。24 bit 前提でソフト組んでて違うモニタで一瞬びっくりでした。
>>822
どうもありがとうございました。取り合えず多数意見に従いました。
ご指摘の API も知りませんので、後で、勉強させてもらいます。
0830デフォルトの名無しさんNGNG
ListViewの選択されているアイテムの選択色を
カスタムドローで変えるにはどうすれば良いのでしょうか?

CDDS_ITEMPREPAINTで(何故かuItemStateが全てCDIS_CHECKED | CDIS_SELECTED)
選択アイテムとそれ以外を区別する所までは上手くいっているのですが
選択アイテムの時に新しいカラーを指定しても反映されず、元の反転色のままで困っています。
0831デフォルトの名無しさんNGNG
>>827
819では無いが、Googleを使いこなす努力は必要だろ
適切なキーワードを入れれば、精度は上がるし、その努力が足りない事をGoogleの性にするのはどうかと思うぞ
0832デフォルトの名無しさんNGNG
わざわざ本など買わんでも
>>820の最初のリンク先で十分じゃん。
0833デフォルトの名無しさんNGNG
自作自演
0834デフォルトの名無しさんNGNG
>823
忘れたんじゃなくて元々知らないんでしょ。
見栄張らなくていいよ。ま、見栄にもなってないけど。
0835デフォルトの名無しさんNGNG
>>831
質問しに来て逆切れするのはそれ以前の問題だろ
0836デフォルトの名無しさんNGNG
>>831
よく分からん。誰に言ってるんだ?
0837デフォルトの名無しさんNGNG
いや 816 は逆ギレもしてねえぞ
ごく平静に礼儀をもって話しているつもりがあのとおり
要するに人格障害だ
一番苦しいのは本人てとこで許してやろうぜ(・∀・)ニヤニヤと
0838デフォルトの名無しさんNGNG
>>836
>>816→>>817→>>818→>>819→>>827
質問→ググれ→Googleは精度悪い、ちゃんとサイト出せ→煽り→煽り
って流れ。
>>818でGoogleがダメだから見つからないって言い訳してるが、
>>820のようにキーワードを工夫する事無く、サイトが見つからないのをGoogleの性にするのは問題ありって話
本質的には、>>835の言うように問題外だけど
0839デフォルトの名無しさんNGNG
SysMsgProcでMSGF_MENUなメッセージを捕まえてあれこれしようと思ったんですが、IEの「お気に入り」とか「スタートメニュー」は「メニュー」じゃないらしくて、メッセージが来ないんですよ(とりあえず、手元のW2K+SP4+IE6ではそうでした)。
こういう偽物(?)をひっくるめたメニュー由来のメッセージを扱う方法はないものでしょうか?
メニューも子ウィンドウの一種らしいんで、ウィンドウのハンドルからそれがメニューっぽいかどうか判別できれば良いんじゃないかと思うんですが…
0840デフォルトの名無しさんNGNG
エディットテイストで文字列を設定するのは、SetWindowText( HWND hwnd, LPCSTR lpString)ですが、
今エディットテキスト内にあるテキストの指定した部分に文字列を挿入したい場合は、どのAPIをつかえばいいのでしょうか。

申し訳ございませんが教えていただきたいです。
0841デフォルトの名無しさんNGNG
>840
GETしてSET
0842デフォルトの名無しさんNGNG
>>840
EM_REPLACESEL
0843デフォルトの名無しさんNGNG
>>841
ハッととしてグー
0844デフォルトの名無しさんNGNG
>>728
そろそろ、誰か答えてもらえないかのぉ
0845デフォルトの名無しさんNGNG
>844
まだ誰も答えてなかったんだ。
GetPageMemSize
でしょ。
0846モウモウNGNG
>>845 そんな API あるんですかい?
GetProcessMemoryInfo じゃないのか?
NT系限定だけど。
0847モウモウNGNG
あと、VirtualQueryEx でもできたような気がする。
こちらは 9x系でも使える。
0848816NGNG
>>826
本購入しました。少し難しいですけど頑張って勉強することにします。
どうもありがとうございました。

>>838
少々誤解されているので一応補足します。
>Googleは精度悪い、ちゃんとサイト出せ
これは全く的外れです。
Googleは精度悪いなど言ってません。
>>818で述べたように「文章で検索するのは精度落ちるから
「キーワードで検索するほうがよい」といった意味で教示したまです。
リンク先を読めば理解できると思うのですが。
私が希望したサイトの情報の回答がこの時点で得られてないので引き続き回答を
受け付けていると言ったまでです。
本当に意図が理解できなかったのか、それとも揚げ足を取りたかったのかどちらでしょう?
いずれにしても非常識極まりないですし、こちらとしても不愉快です。
長い間このスレにいますが、少々良識ない人間が最近入り込んでいて残念に思います。
0849816NGNG
もう一つ補足。
「文章で検索するのは精度落ちる」というのは
>>817に対するレスです。
「VisualBasic6.0でAPI呼び出す」という文章で検索してるので
キーワード絞って検索したほうがいいといった意味で
参考までに>>818のリンクを貼りました。
>>817が少しでも正しくgoogleを使えるようになるといいと思います。
0850デフォルトの名無しさんNGNG
>849
やっぱ死んだ方がいいよ、君は。
同じ失敗をまた犯している。もう救いようがないな。
0851デフォルトの名無しさんNGNG
>>850
死ななくて良いけど、ネットはしない方が良いな
人付き合いも問題がありそうだから、プログラミングよりそっちの勉強をした方が良い
最近は職業訓練所とか行けばやってくれるのか?
0852デフォルトの名無しさんNGNG
まぁ>>816の意図はどうあれ大抵の人は
「またカキコしてるようぜぇな」とレスを読んでません
0853デフォルトの名無しさんNGNG
バカって API 呼び出すのもいちいち本買わなきゃならんのか。
大変ですな。
0854デフォルトの名無しさんNGNG
全くもって残念極まりないです
0855デフォルトの名無しさんNGNG
ム板をリファレンス代わりにするのが天才。
0856デフォルトの名無しさんNGNG
調査方法の基本を知らんDQNがカメレオン現象でわめくから・・・
0857デフォルトの名無しさんNGNG
0858デフォルトの名無しさんNGNG
カメレオン現象ってなんだろ?Googleさんも15件しか知らない言葉だ
0859デフォルトの名無しさんNGNG
>858
つか、相手にするな。
0860デフォルトの名無しさんNGNG
>>846
さんくすこ
0861デフォルトの名無しさんNGNG
MFCを使用せずに、リッチエディットコントロールを使った簡単なテキストエディタを作成しています。
文中に特定のワードが現れたときに、その部分だけ色を変えたいのですが、うまくいきません。

普通に入力していき、特定ワードが完成した瞬間にその部分の色が変わり、
逆に一文字削除したらその瞬間に元の色に戻るようにしたいのです。

特定ワードをハイライトする部分は完成したので、
「テキストファイルを読み込んだ直後、一度だけ色付けする」
というようなことなら出来ていますが、リアルタイムに変更させることができません。

具体的には、
1)メインウィンドウの中にリッチエディットコントロールを貼り付ける
2)ウィンドウメッセージを監視して、WM_KEYDOWNの瞬間にリハイライトルーチンを呼ぶ
ということを行っていますが、
リッチエディットウィンドウ内で一度マウスをクリックして、カーソルが「I」の形に変化した状態になると、
いくら文字を入力してもWM_KEYDOWNを検知することができません。

C/C++は15年くらい経験があるのですが、Windowsプログラミングは全くの初心者なので、
根本的に違っていたらご指摘ください。
0862デフォルトの名無しさんNGNG
>>861
リッチエディトコントロールの中で起こる事はリッチエディトコントロールのウィンドウプロシージャが処理するから、
親ウィンドウではいくら待ってもWM_KEYDOWNは来ない。
代わりにWM_COMMANDでEN_CHANGE通知メッセージが来るのをを待てば良いんじゃないかな。
そしてEN_CHANGEが来るようにするにはリッチエディトコントロールへEM_SETEVENTMASKメッセージを送る必要がある。
0863デフォルトの名無しさんNGNG
>862
ありがとうございます。
0864861NGNG
>>862
ありがとうございます。
>>863
私の代わりにどうもです(w
0865デフォルトの名無しさんNGNG
#define UNICODE
#define _UNICODE
ではなにが違うのでしょうか?
0866デフォルトの名無しさんNGNG
ヘッダからのコピペ

#ifdef _UNICODE
#ifndef UNICODE
#define UNICODE // UNICODE is used by Windows headers
#endif
#endif

#ifdef UNICODE
#ifndef _UNICODE
#define _UNICODE // _UNICODE is used by C-runtime/MFC headers
#endif
#endif
0867デフォルトの名無しさんNGNG
>>865
UNICODEはWindows.h以下でAPIやTEXT/__TEXTマクロ、TCHARなどの切替。
_UNICODEはTChar.hでCライブラリ関数や_tmain/_tWinMain、_TEXT/_Tマクロ、_TCHARなどの切替。
0868デフォルトの名無しさんNGNG
>>866-867
レスありがとうございます。
CライブラリやMFCを使っている場合は_UNICODEもしろって感じですかね(自信なしです
0869デフォルトの名無しさんNGNG
>>868
>>866読め。どっちかが定義してあればもう片方も定義されるようになっている。
0870デフォルトの名無しさんNGNG
常に両方指定してても問題無いですよね?
0871デフォルトの名無しさんNGNG
>870
全部聞くなよ。最近この手の新人多いんだよなー
全ての判断を人に委ねる奴。
ひどい評価付けてやってるけどね。
0872865NGNG
>>870は私じゃありません
_UNICODEでコンパイルしてみたら「wsprintf・lstrlen・DrawText」が通らなかったので調べてました
とりあえず私は両方使います orz
0873デフォルトの名無しさんNGNG
>>872
単に渡してる文字列がcharになってるだけだな。
間違いない。
0874デフォルトの名無しさんNGNG
>873
うーん、それはありうりますなぁ
0875デフォルトの名無しさんNGNG
ありうりそがりいまそがり
0876デフォルトの名無しさんNGNG
>875
アホ
0877デフォルトの名無しさんNGNG
>>875-876
s/う/お/
古典スレ池
0878デフォルトの名無しさんNGNG
s/う/を/
0879デフォルトの名無しさんNGNG
>877-878
くだらん
0880デフォルトの名無しさんNGNG
「はべり」を指摘してないので全員アホ
0881デフォルトの名無しさんNGNG
>880
アホじゃないけど存在不要
0882デフォルトの名無しさんNGNG
ここはひどいインターネッツですね
0883デフォルトの名無しさんNGNG
>882
アホ
0884デフォルトの名無しさんNGNG
そろそろこのスレも閉鎖かな?
0885デフォルトの名無しさんNGNG
>884
そうだな。どうせろくな回答もないし。
0886デフォルトの名無しさんNGNG
じゃあスレ住民の総意で次スレは無しということで。
0887デフォルトの名無しさんNGNG
>>885
そもそもまともな質問がないからな。
0888デフォルトの名無しさんNGNG
>886
いいとも

>887
ごもっとも
0889デフォルトの名無しさんNGNG
次スレ
http://pc5.2ch.net/test/read.cgi/tech/1057225723/
0890デフォルトの名無しさんNGNG
質問です。

switch(msg)
case WM_COMMAND:
 //処理(ボタンとかメニューとかを処理)

 return 0;
case WM_NOTIFY:
 //処理(リストビューとかの処理)

 return 0;
}

ってやってたんですけど。
これってやっぱりreturnしちゃまずいですかね?
HIWORD(wp)とかLOWORD(wp)とかある場合だと自分が処理する以外の
他のメッセージとかDefWindowProcにいかないので処理されないですかね?
0891デフォルトの名無しさんNGNG
…
0892デフォルトの名無しさんNGNG
>>890
それ、動かしてみたか?
まともに動くわけ無いだろ。
0893デフォルトの名無しさんNGNG
>892
この手の質問する奴ってまともに動いてるかどうかの
判断もできてないから問題ないんじゃない?
0894デフォルトの名無しさんNGNG
>>890
場合による
0895581NGNG
>>581を教えて下さいお願いします。
0896デフォルトの名無しさんNGNG
素直にダイアログボックス作って貼れ
0897デフォルトの名無しさんNGNG
>>892
実際はDefWindowProcが一番下にあって
switch文のWM_COMMANDの中身は
switch(HIWORD(wp)とか判断してBN_CLICKとか
switch(LOWORD(wp)とかIDC_XXXとかあるわけですよ。

んで、実際に動いてます。
いまのところなんの支障もありません。
また、return 0で返してしまおうが、breakでぬけて
DefWindowProcに渡そうが動作はまったく変わりません。
0898デフォルトの名無しさんNGNG
WM_COMMAND に関してはシステムは何もしないから、
return で帰ろうと、DefWindowProc に渡しても違いは無いよ。
0899デフォルトの名無しさんNGNG
switch文の勉強しような
0900デフォルトの名無しさんNGNG
返却値はメッセージによって違う
同じメッセージでもSDIかMDIかによって変わる
ヘルプ読む
0901デフォルトの名無しさんNGNG
>>898,900
そうなんですか。
いまのところSDIのアプリしか作ったことがないので
その辺気にしたことがありませんでした。
ありがとうございます。
0902デフォルトの名無しさんNGNG
WINE って Win32 API を独自に実装しているのでしょうか?
それとも Windows のシステム DLL を逆アセして、
C 言語で書き直しているんでしょうか?
0903デフォルトの名無しさんNGNG
>902
アホ
0904デフォルトの名無しさんNGNG
こんばんわ

Winsockでヤフーのサーバwww.yahoo.co.jpへGET送信したんですけど、
返答してきたデータが文字化けをしてるんですね。
これってなぜこうなるのかご存知でしょうか?

HTTP/1.1 200 OK
Date: Tue, 23 Nov 2004 11:29:45 GMT
Cache-Control: private

(一部省略)

Content-Type: text/html;charset=euc-jp
Content-Encoding: gzip

domain=.yahoo.co.jp

25aa
・ミソノ・1」Xル^+<-箕tウ葎クmxョ・rヲ・�ロ厩ロ]鑒/lレ哩・@ュrq
&Y1i
ー諢ュ3ャヘT=JS^��x07ヘU

・4#2d!フh暮ォR)9「。リリ&ォ帥Rエャ 1ocW^?e+{・ィ3H験4y・ハラェTa・8蘇3・dA慢埒8&イ_・A ・リ

v咽「ェjゥ0オ<�フク=E{BC}Gナヲゥ-マHュ・K)9)%g・゚ヤエョコタE「
゚Fタt・S・・エサΜ怯設オ(t綉・

=g��V」ソbレXPGqヒ!イ啓~カ・qW'Nコ+ケ~%p&恩・・
0905デフォルトの名無しさんNGNG
> Content-Type: text/html;charset=euc-jp
> Content-Encoding: gzip

これ見た?
0906デフォルトの名無しさんNGNG
>904
すげーな。わかんないところは適当に読み飛ばしか。
0907デフォルトの名無しさんNGNG
>>904
Content-Type: text/html;charset=Shift_JIS
をつけてGETすれば、おk
0908デフォルトの名無しさんNGNG
>>907
なんか勘違いしてないか?
0909デフォルトの名無しさんNGNG
>>904
GET送信する際、恐らくAccept-Encoding: gzipと入れてるのでしょうか?

Accept-Encodingは圧縮されて受信しますので、そのような文字化けされた形になります。
Accept-Encodingを削除してGET送信してみてください。
プレーンのテキストで受信されますよ。
0910デフォルトの名無しさんNGNG
>>902 だれか知らない?
0911デフォルトの名無しさんNGNG
>>910
たぶん(最悪でも建前上は)前者じゃないと駄目だろ。
0912デフォルトの名無しさんNGNG
>>911
でも、相互運用のための逆アセは合法だって聞いたよ。
0913デフォルトの名無しさんNGNG
>912
誰に?
0914デフォルトの名無しさんNGNG
米国の話。
実際にそれをやった企業があるらしいし、
裁判になって勝った例もあるらしいよ。
0915デフォルトの名無しさんNGNG
EU の例だけど、↓ここを「相互運用」で検索すれば出てくる。
http://www.cric.or.jp/houkoku/h6_5/h6_5_main.html
0916デフォルトの名無しさんNGNG
>915
サンクス
0917916NGNG
    ヽ、  `;、                     .;            丿  ノ
      ` 、_,{ `‐、_                 ,*           ,、' ~`y'
         )  r' ~`'rr-、、,,,_          ,ノ"§        _,、<   ,;;ゝ
        `~`i'   ,'r´:::::::::`;丶、 ,_    _,,、-'´,ノ ,ノ      ,、 ‐'"`, ';‐'"
          ,'  ,','::::::::::::::,'    `````  `"´ `"´~`''''''''''T´::::::::::::::',', |
          i   ,','::::::::::::::,'         ( ) (ブリブリッ',::::::::::::::::::ii :!
         ,r'"  ,','::::::::::::: ,'           ).∧  )   ',::::::::::::::::::!! i、
       r''"'  ノノ:::::::::::: ,'            (:::::::::)    ',::::::::::::::::',', i!ヽ
       {____,、-'/:::::::::::::;;'     ポルポト  (:::::::::::::::)   ',:::::::::::::::::ヾ、__)
0918デフォルトの名無しさんNGNG
Win32APIのリファレンス本として「Win32 APIオフィシャルリファレンス改訂3版 グラフィック/GUI編 Ascii books」を買おうかと思うのですが、
どうでしょうか?
ほかにもっといいリファレンスなどありますでしょうか?
(MSDNライブラリなどは入っていますが、持ち歩きたいので)

http://www.amazon.co.jp/exec/obidos/ASIN/4756137482/qid=1101220486/sr=1-1/ref=sr_1_10_1/249-3121052-5258703
0919デフォルトの名無しさんNGNG
>>918
MSDNライブラリを持ち歩け
0920デフォルトの名無しさんNGNG
携帯用 MSDN ビューワ
http://www.vaio.sony.co.jp/Products/VGN-U50/
どぞ。
0921デフォルトの名無しさんNGNG
そんなお金があればうれしいのですが・・・・
0922デフォルトの名無しさんNGNG
>>918
それ買ってみたけど損したよ
関数の解説だけで構造体の解説が載ってないのがリファレンスとして片手落ち。
構造体の解説を読むにはMSDNを開く必要がある… 結局MSDNしか使ってない罠。
0923デフォルトの名無しさんNGNG
コンボボックスで、ボタンを押してアイテムを選ぶのではなく
何かメッセージを送って任意のアイテムを選択させるやり方を教えてください
0924デフォルトの名無しさんNGNG
CB_SETCURSEL
0925デフォルトの名無しさんNGNG
>>924
ありがとうございました
0926デフォルトの名無しさんNGNG
例えば20秒ごとにプログラムを動かす時に使うような
経過した秒数がわかるようなAPIを教えてください
0927デフォルトの名無しさんNGNG
GetTickCount

0928デフォルトの名無しさんNGNG
でも、起動には SetTimer() を使ってねっ♥
0929デフォルトの名無しさんNGNG
>>927
>>928
レスありがとうございます
GetTickCountとSetTimer()の長所と短所を教えてください
どっちを使った方がいいのか迷ってしまいました
0930デフォルトの名無しさんNGNG
>>929
両方やってみろ

それで分からなかったら、頭悪すぎだからプログラムやめとけ
0931デフォルトの名無しさんNGNG
火を見るより明らか
GetTickCount() 無限ループ
SetTimer() イヴェントドリヴン
0932デフォルトの名無しさんNGNG
>931
それは>929に対する回答にはなってないですね。
0933デフォルトの名無しさんNGNG
>>929
両者は、使用目的が違うので比較するようなものではないです。
ループで GetTickCount() の値の変化を待つのは
CPU時間の浪費につながるので、あまり望ましくないのです。
0934デフォルトの名無しさんNGNG
>>932
それがどうかしましたか?
0935デフォルトの名無しさんNGNG
>934
いいえ
0936デフォルトの名無しさんNGNG
すべてはわたしがつくったモノなのです
0937デフォルトの名無しさんNGNG
マルチメディアタイマー
0938デフォルトの名無しさんNGNG
TextOut (hdc, (22 * cxCaps) + (40 * cxChar), cyChar * i,
szBuffer,
wsprintf (szBuffer, TEXT ("%5d"),GetSystemMetrics (sysmetrics[i].iIndex)));
というコードがあったのですが%5dってどういう言う意味なんでしょうか。
%dとの違いがよくわからず困ってます。
0939デフォルトの名無しさんNGNG
APIの説明の width のところを読め
0940デフォルトの名無しさんNGNG
5桁
0941939NGNG
すいません。訂正します。
APIの説明の width のところを読んでください。
0942本物の939NGNG
騙るな、この野郎
訂正なんかしねえぞ
0943938NGNG
荒れ気味なのでほかで聞きます。
0944940NGNG
俺は無視かよ
0945デフォルトの名無しさんNGNG
当然無視
0946939NGNG
すいません。今精神が不安定で通院中なんです。
本当にすいません。病気なので許してください。
0947デフォルトの名無しさんNGNG
>>944
とりあえず、これからも頑張ってくれ
0948デフォルトの名無しさんNGNG
フォルダ選択ダイアログの出し方を教えてください。

開発環境はC言語、ボーランドです。
0949デフォルトの名無しさんNGNG
>948
SHBrowseForFolder でググってください。
0950デフォルトの名無しさんNGNG
SHFolderなんとかを使う
0951デフォルトの名無しさんNGNG
>949
それそれ
0952デフォルトの名無しさんNGNG
>>948
VisualC++逆引き大全500の極意
って本がかなりいいよ。
MSDNの100倍役に立つ。
これからは「MSDNの100倍役に立つVisual(以下略
って出してもいいくらい。

最近MSに下記原文まんま(ハゲ抜かしてw)で送ってみた。

おい!MS!てめぇんところにもう何年投資してやってるとオモテンだ!ハゲ!
いつになったらWin32APIが日本語訳されんだよ!ハゲ!
全然進歩してねぇよ。ハゲ!
最近じゃ英語ヘルプも含めて、日に日にWin32APIにヒットしなくなってるのは
どういうことだよ。ハゲ!
日本語訳そっちのけで、新機能なんか追加してんじゃねぇよ!ハゲ!
フィルタの種類ももニーズにあってないんだよ!ハゲ!
センスの悪さがMSDNからにじみ出てんだよ!ハゲ!

まだ、レスが返ってこないよw
0953デフォルトの名無しさんNGNG
>>952
ゲイツ「これだから英語も出来ない極東の小国の民は困る」
0954デフォルトの名無しさんNGNG
>>952
VisualC++逆引き大全500の極意
買ったけど損した。
使えるサンプルコードが少なすぎ。

たとえばSHBrowseForFolder の所なんかサンプルコードないだろ
0955デフォルトの名無しさんNGNG
>>954
でも、ここまで詳しく書いてあれば十分だよ。
俺はその存在をしっただけでもよかった。
0956デフォルトの名無しさんNGNG
逆引き大全、俺も VC++ を始めたての頃に買った。
誤植も多いけど、結構役に立ったよ。初心者にはいいと思う。
0957デフォルトの名無しさんNGNG
htmlでルビ付きの文字列を作成し、それをVB6で
WebBrowserを使用してフォーム上に表示してますが、
WebBrowserは透過が出来ないため、WebBrowserの背景が
長方形型にくっきりと残ってしまいます。
どうしても、枠を消してフォームの背景上にWebBrowserの
ルビ付き文字だけを表示させたいのです。

VBでWebBrowserを透過表示させる方法を教えてくらはい
0958デフォルトの名無しさんNGNG
たしかにMSDNは逆引きには向いてないな。
とくにShell/OLE/COM周りは。
0959デフォルトの名無しさんNGNG
>>957
特に簡単な手はないです。get_Documentでドキュメントを手に入れて、
body の style を操作して背景イメージを適切に設定するのが良いと思います。
0960デフォルトの名無しさんNGNG
逆引きだったら
VC++によるWin32プログラミングTips
http://www.expertmg.co.jp/html/cti/vctips/

フォルダ選択ダイアログの実装もちゃんとコードつきで説明がある。

0961デフォルトの名無しさんNGNG
なぁ?
ディレクトリリストボックスってなかったっけ?
なんか古いタイプのファイルオープンダイアログにはついてんだけどなw
単体では無いんだなw
0962デフォルトの名無しさんNGNG
LB_DIRのことか?
0963デフォルトの名無しさんNGNG
>>962
おお!それそれ!
なるほどリストボックスだったんか・・・
SHBrowseForFolderとどっちがいいかな?
0964デフォルトの名無しさんNGNG
>>936
ワラタ
0965デフォルトの名無しさんNGNG
コンボボックスのオプションで
HTMLのOPTGROUPの様なものはありますか?
0966デフォルトの名無しさんNGNG
コマンドラインやD&Dで渡されたファイル名を全部取り出すには
GetCommandLine() の返り値を全部解析するしかないですか?

またコンソールプログラムの場合はmain() の argc, argv でいいんですか?
0967デフォルトの名無しさんNGNG
Win2K、VB6で開発を行なっています。
NetUserGetLocalGroupsを使ってUserの所属するグループを取得しようとしているのですが、
同じUser名でドメインの違うユーザーの区別はどうすれば良いのでしょうか?

NetUserEnumでUser名を列挙すると、"UserName"、"VUSR_USERNAME"と区別されているよう
なので、返された名前をNetUserGetLocalGroupsに渡してみたのですが"VUSR_USERNAME"の
方で関数が失敗してしまいました。
0968デフォルトの名無しさんNGNG
MSDNに
<DomainName>\<UserName>
て書いてるけど
0969デフォルトの名無しさんNGNG
>>966
NT系ならCommandLineToArgvWがつかえる。
0970デフォルトの名無しさんNGNG
>>968
ああ、本当だ。吊ってくる..(´・ω・`)ショボーン
グループは取得できました。ありがとうございました。

それと、USR_USRERNAMEは何の関係も無かったです。
0971デフォルトの名無しさんNGNG
WriteFileにてテキストファイルを上書きするとき、
元々書いてあった文字列より短いものを上書きすると、
前の内容が残っているようです。

↓こんな感じになります。
ファイルの文字列「あいうえお」
上書きする文字列「OK」
更新後のファイル文字列「OKうえお」

解決法を賜りたいです。
0972デフォルトの名無しさんNGNG
>>971
SetEndOfFile
0973971NGNG
>>972
ありがとうございます。
それを調べてみます。
0974デフォルトの名無しさんNGNG
Windows XP 64-bit Edition上で32bitアプリから64bitアプリが
CreateProcess()で起動可能か検証したことのある方。
できましたでしょうか?
0975デフォルトの名無しさんNGNG
>>969
ありがとうございます。
0976デフォルトの名無しさんNGNG
例えばWindowsの検索を選んで、検索したいファイル名やフォルダを探すため、
エディットボックスのハンドルを得ようとしますよ。
その際、僕はVC++のSpyとか言うのを使って、子ウィンドウとなっているそれが
上から何番目になってるか調べてChildWindow(?)とかいう関数を使ってGW_NEXT
で順々にハンドルをとる、面倒で馬鹿な事やってるんですが、
これ以外にいい方法はありませんか?


なんかわかりにくいですが、要は一発で
検索のような入り組んだアプリケーションの、エディットボックスのハンドルを得たいんです。
無理でしょうか?
0977デフォルトの名無しさんNGNG
>>976
ウィンドウクラスで検索して、GetDlgCtrlIDでコントロールIDを取得して
目的のものかどうか判断するってのはどうでしょう?
0978デフォルトの名無しさんNGNG
前の方に出ていたOpenProcessToken()とCreateProcessAsUser()を使ってサービスからログオンユーザーの
デスクトップでアプリを実行させようと思ったんですが、ログオンユーザーのプロセスハンドルの取得
方法が分かりません。どうやってアカウント名からプロセスハンドルを引っ張ってこればよいですか?
0979デフォルトの名無しさんNGNG
CreateWindowExでリストボックスを作っているのですが、
コレは・・・高さが文字の高さの整数倍にしかならないみたいなんですけど、
ウィンドウの幅にぴったり合わせるにはどうしたらいいでしょうか?
今はMoveWindowでウィンドウに合わせようとしています。
0980デフォルトの名無しさんNGNG
>>978
LogonUser( "UserName", NULL, "Password", LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT,
& hToken );
でトークン作ったほうが簡単。
0981デフォルトの名無しさんNGNG
>>980
その方法だとパスワード引っ張って来るのに、gina.dllに細工するとかちょっと仕掛が必要ですよね?
ちょっち、難易度が高い気がするです。

各アカウントのパスワードをユーザーに開示してもらうっていうのも現実的ではないですし…困り
ました。
0982デフォルトの名無しさんNGNG
winsta0のプロセスと同じアカウントである必要はなしです。
適当な実行権があればCreateProcessAsUserはwinsta0\Default上に起動しますが。
(つかSIDからトークンにするやり方わからん)
0983デフォルトの名無しさんNGNG
だから>>732だっつってるのに。
このスレだけで三度目だぞその質問
0984デフォルトの名無しさんNGNG
ああ方法が分からないって言ってるのか。
現在ログオンしてるユーザーでいいんだろ?
だったら現在走行中のプロセス列挙してどれでもOpenProcessすればいい
どのプロセスもwinlogonが作成したトークンを引き継いでるはずだから
(Terminal Serviceや「ユーザーの切り替え」や「別のユーザーとして実行」は
考慮してないが)
0985 ◆Manna2uCLg NGNG
ちょっくら次スレたててきますよ。
0986 ◆Manna2uCLg NGNG
すまん、立てられなかった。orz

↓代わりによろしく
0987デフォルトの名無しさんNGNG
まかせろ
0988デフォルトの名無しさんNGNG
Win32API質問箱 Build25
http://pc5.2ch.net/test/read.cgi/tech/1101393155/
0989デフォルトの名無しさんNGNG
ほれ
http://pc5.2ch.net/test/read.cgi/tech/1101393155/
0990デフォルトの名無しさんNGNG
>>978
これじゃダメなんかい?
ttp://support.microsoft.com/default.aspx?scid=kb;ja;173687
0991デフォルトの名無しさんNGNG
>>990
それだと権限がLocalSystemのままだから危なくない?
ってリンク先にも書いてるけど
0992979NGNG
もう一つ質問です。
リストボックスの文字色を変えるにはどうしたらいいんでしょうか?
エディットボックスの場合には、WM_CTLCOLOREDITをつらまえて
SetTextColorで変更できたのですが、
リストボックスの場合は、WM_CTLCOLORLISTBOXをつらまえて
SetTextColorをやっても変更されません。
フォントの種類は変更できました。

リストボックスの文字色は、部分的にではなく、
全体としての文字色を変えたいです。
検索してオーナードローが出てきたのですが、
オーナドロー時にSetTextColorをやっても変更できませんでした。
よろしくお願いします。
0993デフォルトの名無しさんNGNG
>>992
    [SetWindowPos]
∀・)っ[カスタムドロー]
0994デフォルトの名無しさんNGNG
>>992
UIの部分だけVBで作るっていう手もあるけど・・・
0995デフォルトの名無しさんNGNG
指定したファイルが更新された場合に通知してくれる
APIがあったと思うんですが、関数名なんでしたっけ?

誰かご存知の方ご教授願います
0996デフォルトの名無しさんNGNG
FindFirstChangeNotification?
0997979NGNG
ありがとうございます。

>>993
それで頑張ってみます。

>>994
VBは触ったことがないので分かりません。
ごめんなさい。
0998デフォルトの名無しさんNGNG
リストボックスはカスタムドローできない。
できるのはリストコントロール。
0999デフォルトの名無しさんNGNG
>>996
これです。ありがとうございました!
1000デフォルトの名無しさんNGNG
1000
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。