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

Win32API質問箱 Build18

レス数が1000を超えています。これ以上書き込みはできません。
0001 ◆Manna2uCLg NGNG
スレ立てるまでもない、Win32APIについての質問はこちらへどうぞ。
やさしいオジサマ達が、熱く暑く答えてくれよう。
でも最低限、最新スレくらいは質問する前に検索を。
過去スレ・参考は>>2-5くらいを参照するッス!
0002 ◆Manna2uCLg NGNG
- 過去スレ
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
(★は「いやー ごめんなさい。」に巻き込まれた模様)

- MSDN Online
http://www.microsoft.com/japan/msdn/default.asp
- 猫でもわかるプログラミング
http://www.kumei.ne.jp/c_lang/index.html
- Platform SDK Update
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
- Google
http://www.google.com
0003デフォルトの名無しさんNGNG
3
0004デフォルトの名無しさんNGNG
 4
0005デフォルトの名無しさんNGNG
WriteFileの後にLastErrorをやってみると、6が返ってきました。
このエラーコードって簡単に調べる方法ないですか?

0006デフォルトの名無しさんNGNG
MSDN
0007デフォルトの名無しさんNGNG
>>5
Visual C++ エラールックアップ
00085NGNG
はやっ!
ヘッダーファイルとかに定義されては無いんでつか?
0009デフォルトの名無しさんNGNG
FormatMessage 関数を使って、GetLastError 関数が返したシステムエラーコードに対応するエラーメッセージ文字列を取得できます。次にサンプルコードを示します。
LPVOID lpMsgBuf;
FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
GetLastError(),
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // 既定の言語
(LPTSTR) &lpMsgBuf,
0,
NULL
);
// lpMsgBuf 内のすべての挿入シーケンスを処理する。
// ...
// 文字列を表示する。
MessageBox(NULL, (LPCTSTR)lpMsgBuf, "Error", MB_OK | MB_ICONINFORMATION);
// バッファを解放する。
LocalFree(lpMsgBuf);
0010デフォルトの名無しさんNGNG
>>8 WINERROR.H
00115NGNG
みなさん、さんきゅ

”#define ERROR_INVALID_HANDLE 6L” でいいや

でもCreateFileは、うまくいってみたいだしぃー
ハンドルも返ってきてるし渡してるしぃ・・・ブツブツ・・・
0012デフォルトの名無しさんNGNG
バッファオーバーフローでハンドル格納したメモリが破壊されてるに1票
0013デフォルトの名無しさんNGNG
じゃあ、WriteFileが成功してるのに、
エラーコードを取得しているに1票
0014デフォルトの名無しさんNGNG
夢オチに1票
0015デフォルトの名無しさんNGNG
夢の中でプログラム組んでた翌日は、とてつもなく疲労している自分がいる。
0016デフォルトの名無しさんNGNG
Win32APIでマウスの移動量を取得する方法ってありますか?
例えば、画面左端にマウスカーソルがある時に、さらに左に
動かしてもその移動量が取りたいのです。

DirectPlayならできるのはわかったんですが、それだけの為に
DirectX必須にするのも考え物なので…。
0017デフォルトの名無しさんNGNG
VBからのWin32APIでもいいですか?

Dim hFile As Long
Dim udtProcInfo As PROCESS_INFORMATION

hFile = CreateFile( _
"OUTPUT.txt", _
GENERIC_WRITE + GENERIC_READ, _
FILE_SHARE_READ, 0,CREATE_ALWAYS, _
FILE_ATTRIBUTE_NORMAL + FILE_FLAG_OVERLAPPED, 0)
ZeroMemory si LenB(si)
si.cb = LenB(si)
si.hStdOutput = hFile
si.hStdError = hFile
si.dwFlags = STARTF_USESTDHANDLES
rc = CreateProcess( _
0, "printf.exe", 0, 0, 1, 0, 0, 0, _
udtStartInfo,udtProcInfo)

OUTPUT.txtは出来ました。 
CreateProcessも一応通ります。
printf.exeは main(){printf("\nhelle world");}です。
でもOUTPUT.txtは、空のままです。

CreateProcessの5番目のパラメータを0にして
notepad.exeならうまく行きます。

なんでじゃい!?
0018デフォルトの名無しさんNGNG
>>17
フラグセットを+演算子で記述するのは始めて見た。
最上位ビットがおかしくなるかもしれない。
ま、最上位ビットまで使うフラグはあまりないけど。
0019デフォルトの名無しさんNGNG
発見された方 マルチをお許しください。
MFCのDLLを作成しているのですが
OnIdleイベントが発生しないんです。このメンバ関数って
もしかしてEXE(アプリケーション)のみ有効なメッセージ制御なのでしょうか?
DLLの場合 これに変わる処理ってどれにあたるかご存知ありませんか?
要はInitInstanceで構築したビューにメッセージキューがない場合
(ユーザーが何も命令を送らない間)
常に発生させたいです
0020デフォルトの名無しさんNGNG
> フラグセットを+演算子で記述
前にも見たことあるんだけど、例えば WS_CAPTION + WS_BORDER だけでもバグるよな。
0021デフォルトの名無しさんNGNG
>>19
OnIdle()は、メッセージキューがなくなる度に一回だけ呼ばれるって意味。
WM_TIMERなどの定期的なメッセージ処理があれば、
OnIdle()もそれに従って呼び出される。
また、逆にWM_TIMERでのOnIdle()呼び出しを避ける手法もMSDNに掲載されてる。
0022デフォルトの名無しさんNGNG
VBだと「Or」では視覚的に区切りとして分かりにくいから
あえて「+」を使うことがあるみたい
0023デフォルトの名無しさんNGNG
ビットフラグに"+"を使うやつは…
0024デフォルトの名無しさんNGNG
間違えて同じ値を二度書いたときに...
0025デフォルトの名無しさんNGNG
視覚的に間違えたと分かるケースならいいけど、
0026デフォルトの名無しさんNGNG
まあ、しょうがないよ
メイドロボだし
0027デフォルトの名無しさんNGNG
Win32APIではなくってリソーススクリプトの質問なのですが
MENUITEM "abc", 101, CHECKED
と書くと「v」みたいな印が abc の隣に表示されます

IEのメニューでも表示→ツールバー以下のメニューで
いくつかの項目のON/OFFを選択できますが、
この部分の仕組みに似ていると思いました

で肝心の質問なのですが、この CHECKED を付けても
ただ単に印がつくだけのようですが、ラジオボタンのように
いくつかの項目がグループになっていてどれかを選択すると
自動的に印が移動してただひとつだけが選択されている、とか
チェックボックスのように、選択するたびにON/OFFが切り替わる、とか
そういった自動機能をリソーススクリプトで書くにはどうしたら
いいのでしょうか?
もしかしたら、ないのでしょうか?
自分で GetMenuState() とか CheckMenuItem() とかを
プログラム内で使うのでしょうか?
0028デフォルトの名無しさんNGNG
>>26
0029デフォルトの名無しさんNGNG
BitBlt()について質問です。
MSDN libraryのラスタオペレーションPATINVERTとかの説明に
「指定したパターン」
とあるのですが、そのパターンはどうやって指定するんでしょうか?
0030デフォルトの名無しさんNGNG
>>29
指定したHDCに関連づいてるブラシを利用するはず。
どんな風にパターン作るかは、MSDNのCreateBrushIndirect()あたりでも見てくれ
0031デフォルトの名無しさんNGNG
>>27
そんな自動でやってくれる機能なんて多分無い。
APIにもそういった関数はないし。
だから、全部自前でやることになると思う。
0032デフォルトの名無しさんNGNG
クラスライブラリとかでそういうのを自動化しているものはあるかもな。
0033デフォルトの名無しさんNGNG
>>27
GUI周りで楽をしたきゃ、素直にMFCに移行した方がええで。
0034デフォルトの名無しさんNGNG
いまさら死滅寸前でGUI周りが全然楽じゃない
MFCに移行してもしょうがないだろ。
0035デフォルトの名無しさんNGNG
>>27
(`・ω・´)っ[ TMenuItem::RadioItem ]
0036デフォルトの名無しさんNGNG
>>21

レスありがとうございます。
ということはDLLであってもフレームウインドウ等のMN_TIMER
をメッセージとして追加する事で
OnIdleを有効にすることが可能となるのでしょうか?

希望となるヒントをいただき感謝しております。
003729NGNG
>>30
レスありがとうございます。

>指定したHDCに関連づいてるブラシを利用するはず。
そのHDCはどうやって指定するのでしょうか?
下記のようにやってみましたが真っ黒になりました。

PAINTSTRUCT ps;
HDC hdc = BeginPaint(hwnd, &ps);

HDC hdc2 = CreateCompatibleDC(hdc);
HBRUSH hbr = CreateSolidBrush(RGB(255, 255, 0));
SelectObject(hdc2, hbr); // 黄色ベタ塗り

// 青と黄色の模様が描かれたビットマップ(80 x 40)
HBITMAP hbmp = LoadBitmap(hInst, "MYBMP");
SelectObject(hdc, hbmp);

// 青はそのままで黄色→黒になる?
// 「黄色いビットマップ使ってSRCINVERT」と同じ?
BitBlt(hdc, 0, 0, 80, 40, hdc2, 0, 0, PATINVERT);
0038デフォルトの名無しさんNGNG
>>37
いくつか間違いを犯しているわけだが…

まず、画面のHDCにHBITMAPのSelectObjectはできない。
戻り値を確認しましょう。

次に、パターンを指定するのは描画先に指定する。
つまりBLACKNESS等と同様に6〜8番目引数は使わない。

最後に、成功したとしても青はそのままじゃなくて白になる。
0039デフォルトの名無しさんNGNG
キー入力を取得する時に、
初回から押しっぱなしの取得をするにはどの様にすればよいのでしょうか。

case WM_KEYDOWN:
int key_code = (int)wPlam

上記の方法ですと、最初のときだけ押しっぱなしにしている扱いにならず困っているのですが。
どうかご教授お願いします。
0040デフォルトの名無しさんNGNG
訂正 int key_code = (int)wParam;
0041デフォルトの名無しさんNGNG
>>39
GetAsyncKeyState
0042デフォルトの名無しさんNGNG
>>39
こういうのも

static BOOL key_code[256];

case WM_KEYDOWN: key_code[wParam]=TRUE; break;
case WM_KEYUP: key_code[wParam]=FALSE; break

//使う時
if(key_code[VK_○○]) 処理;


メモリがもったいなきゃ32バイト確保して各ビットごとに割り当てるとか
004339NGNG
>>41
>>42
レスありがとうございます。
GetAsyncKeyStateや、
WM_KEYUPを併せて使用する方法も検討したんですが、
ここまで簡素にできるとは思いませんでした。
両方とも試してみます。
004437NGNG
>>38
ありがとうございます。

>まず、画面のHDCにHBITMAPのSelectObjectはできない。
>戻り値を確認しましょう。
はい。確かに戻り値は0でした。

>次に、パターンを指定するのは描画先に指定する。
>つまりBLACKNESS等と同様に6〜8番目引数は使わない。
要するに、PAT〜を指定したときには
・ビットマップなんて関係ない
・矩形をハッチ等指定したブラシで埋め尽くす
・ってことはPatBlt()と同じ
ということで間違いありませんか?
0045デフォルトの名無しさんNGNG
http://black.sakura.ne.jp/~third/system/winapi/win.html
って、ペゾルト本のパクリ?
0046デフォルトの名無しさんNGNG
>>44
> ってことはPatBlt()と同じ
ほぼ正解。

ほぼというのは、PATPAINTだけはコピー元が必要だから
それだけはPatBltじゃ無理。まぁ、見落としてるだけだと思うが。
004744NGNG
>>46
レスありがとうございます。

>ほぼというのは、PATPAINTだけはコピー元が必要だから
>それだけはPatBltじゃ無理。
そうですね。

やっと理解できました。
0048デフォルトの名無しさんNGNG
.net frameworkが次windowsで標準となるらしいですが、
win32apiはまだまだ使えるのでしょうか?
0049デフォルトの名無しさんNGNG
>>48
使える。Windows 95 のときも 3.1 のアプリ動いたでしょ。
0050デフォルトの名無しさんNGNG
>>42
キーダウン中にマウス操作でkillFocusしてキーを放すとフラグがクリアされません。
0051デフォルトの名無しさんNGNG
>>50
MS謹製のIntelliPoint4.1でもそのバグがあったね(w
0052デフォルトの名無しさんNGNG
BO2Kのようにタスクマネージャから見えないようにするのはどうすればいいんだろう?
そもそもどうやってステレスにしてんのか原理が分からんし
悪いソフトをつくろうとしてるわけじあqwせdrftgyふじこl
0053デフォルトの名無しさんNGNG
> qwせdrftgyふじこl

CreateWindowEx
0054デフォルトの名無しさんNGNG
BMP,JPEG,GIF,TIFF,PNGなどの色々な形式の画像ファイルを読込んで、
HDCで描画したいのですが、画像ファイルを読込むのに便利なAPIはないでしょうか?
LoadImageは、BMP形式しか読込めないので却下です。
0055デフォルトの名無しさんNGNG
普通にファイル読んで解析してCreateBitmap汁
0056デフォルトの名無しさんNGNG
>>54

OleLoadPicture
0057デフォルトの名無しさんNGNG
>>54
Susie Plugin
0058デフォルトの名無しさんNGNG
>>54
GDI+

WIN32APIと言えるかどうかは知らぬ
ttp://www.kumei.ne.jp/c_lang/sdk4/sdk_336.htm
0059デフォルトの名無しさんNGNG
メッセージキューからある特定のメッセージだけを取り除きたいのですが
どうやればよいの?

その「取り除きたい」と思うタイミングにおいて、そのメッセージはそれ以上来ないという状況です。
つまり取り除き処理直後に飛んできた、ということはないです。

0060デフォルトの名無しさんNGNG
>>59
PeekMessage
0061デフォルトの名無しさんNGNG
PeekMessageじゃダメなのか?
0062デフォルトの名無しさんNGNG
>>60-61
ありがと♪
006350NGNG
テンキーの"1"をDOWM ---> WM_KEYDOWN VK_NUMPAD1
NUMLOCKをDOWN
NUMLOCKをUP
テンキーの"1"をUP ---> WM_KEYUP VK_END
0064デフォルトの名無しさんNGNG
#include <windows.h>
int main(void)
{
MSG msg;
GetMessageSuper(&msg);//☆
printf("%c\n",msg.wParam);
return 0;
}
//☆みたいにウィンドウズメッセージを戻り値かポインタ引数で
得ることが出来るAPIはないでしょうか。
何も無いときはそこ(OS)でとどまっています。

while(GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
これのコールバックを経由しなくてもいいバージョンです。
0065デフォルトの名無しさんNGNG
WindowProcが邪魔なら、WNDCLASS(EX)のlpfnWndProcにDefWindowProcを登録してみたら?
で、Get/Translate/Disptachをセットにして呼べばどうにかなるんじゃない?

ただ、その後でメッセージを処理してもWindowProc内と同じことにはならないと思うぞ。
006664NGNG
>>65
ありがとうございます。今調べていますが、難しいです。

後、>>64に追加で、いままでは以下のような感じで、
MSGの残骸を利用してやっていました。

void hoge(HWND hwnd)
{
 MSG msg;
 while(1)
 {
  GetMessageSuper(&msg);
  if(msg. ...) ;
 }
}

void GetMessageSuper(MSG*msg)
{
if(!GetMessage(*(&msg),NULL,0,0))exit((*msg).wParam);
TranslateMessage(*(&msg));
DispatchMessage(*(&msg));
}
0067デフォルトの名無しさんNGNG
つーか、Dispatchを呼ばなきゃ良いだろ?
あれは
(WNDPROC)GetWindowLongPtr(msg.hwnd, GWLP_WNDPROC)(msg.hwnd, msg.message, msg.wParam, msg.lParam);
を呼んでるだけだから。
006864NGNG
>>67
ありがとうございます。勉強になります。
006948NGNG
>>49
レスありがとうございます。

今学ぶなら.netの方がいいのでしょうか?
少しですがwin32apiが使える状態です。
基本的にジャンルが違う気もしますが
0070デフォルトの名無しさんNGNG
>>39
LPARAMの30bit目じゃダメなのか?
0071デフォルトの名無しさんNGNG
>>69
んーその質問は答えるのが難しいねぇ。おいらの場合は業務で
使う or 使いたい言語を学習するし。

ただまぁあれだ、.NET Frameworkは国際化対応を結構真面目に
考慮してる辺りが、おいらの業務にドンピシャなので、次回のプロ
ジェクトでは.NET Frameworkで進めようと画策中。

それに必要であれば.NET Frameworkでの開発でもWin32APIを
叩けるしね。
0072デフォルトの名無しさんNGNG
こんにちわ
初歩的な事で申し訳ないのですが
(だからこそ載ってなくてわからないんだけど)
兄弟ウィンドウ同士が重なり合った場合
その前後を決めるものは一体何なのでしょうか
作りたいのは
メインウィンドウ
┣子ウィンドウA
┗子ウィンドウB(スタティックスタイル)
 ┗ボタンやエディット

という状態のときに(本当はもっとごちゃごちゃしてるんですが)
この子ウィンドウAを常に最前面に出しておきたいのです が
SetWindowPosでHWND_TOPMOSTを指定しても
子ウィンドウBの下に表示されてしまうので
兄弟ウィンドウの間では
Zオーダーがどうとかアクティブがどうとか
そういう問題ではなくなるのか??と思ったんですが
HWND_TOPを指定すると
ちゃんとウィンドウAがとりあえずは最前面に表示されましたので
コレは一体どういうことなんだろうって感じになってます

超初心者の質問ですいません おねがいします
0073デフォルトの名無しさんNGNG
ホームページを開いた時になるMIDIを捕らえて
音量を制御したいです。

具体的には
WAVEを聴きながらMIDIの音量(dB?)を監視していて
検知したらWAVEの音量を下げるという感じです。

だいたいは実現方法がわかったのですが、
MIDIの音量の監視が出来ません。
MIDI音源のOUTを取得しそのまま出力するにはどうすればいいのでしょうか?
具体的な関数名を教えていただければうれしいです。
0074デフォルトの名無しさんNGNG
子ウィンドウをTOPMOSTにできるの?
0075デフォルトの名無しさんNGNG
>>73
仮想midiドライバ書いて、実際のドライバにリダイレクトさせたら?
007673NGNG
>>75
レスありがとうございます。

wave再生は割と簡単に出来たのでもう少しがんばれば
できるかと思いましたが、仮想midiドライバとなると
難しそうですね。

よく分からないのですが、
どのような感じになるのでしょうか?
007772NGNG
>>74

ありゃー やっぱ僕
基本がわかってないみたいですね
となると兄弟ウィンドウの前後関係(?)を決める要因は
なんなんでしょうか
それとも兄弟関係に前後も何も存在しないという
考え方なのでしょうか
HWND_TOPは使えてHWND_TOPMOSTが使えない理由は
どういうことなんでしょうか
0078デフォルトの名無しさんNGNG
char test1[128], *test2;

GetDlgItemText(hDlg, IDTXT, test1, (int)sizeof(test1));
GetDlgItemText(hDlg, IDTXT, test2, (int)sizeof(test2));
MessageBox(hDlg, test1, "test1", MB_OK);
MessageBox(hDlg, test2, "test2", MB_OK);

こうするとメッセージボックスにtest1は表示されるのですがtest2の方は何も表示されません。
何が異なるのでしょうか?
また、test2の宣言で表示させる方法はあるのでしょうか?
0079デフォルトの名無しさんNGNG
test2 = (char*)LocalAlloc(LMEM_FIXED, 128);
LocalFreeも忘れるなよ、約束だ!
0080デフォルトの名無しさんNGNG
>>79 氏に加えて
GetDlgItemText(hDlg, IDTXT, test2, (int)sizeof(test2));
を
GetDlgItemText(hDlg, IDTXT, test2, 128 );
にするのも忘れずにな!
0081デフォルトの名無しさんNGNG
>>78
API以前の問題で
char test1[128];
と
char* test2;
の違いを理解していないのではないかと思われる。
0082デフォルトの名無しさんNGNG
C標準ライブラリ関数のstr〜系の関数と
Win32APIのlstr〜系の関数は使い分ける必要があるんですか?
0083デフォルトの名無しさんNGNG
>>77
基本的には Zオーダー順になる。ただし、WS_CLIPSIBLINGS が付いている場合には、
Zオーダーとは関わり無く兄弟ウィンドウによってクリップされてしまうので、
普通に重ね合わせたような表示にはならない。
WS_TRANSPARENT とかの有無によっても再描画時の見かけは変わってくるし。

これでOK?
0084デフォルトの名無しさんNGNG
>>82
lstr〜、wsprintf 等の Win32 側の関数は、引数が TCHAR を基本としているので、
ユニコードでビルド可能。
0085デフォルトの名無しさんNGNG
>>55
それを言うなら CreateDIBSection() だろ。
0086デフォルトの名無しさんNGNG
>>82
しかしwsprintfは標準ライブラリのsprintfに比べて貧弱だったりするので注意。(BCB6の場合。VC++は知らん)
0087デフォルトの名無しさんNGNG
ランタイムを使った方が高速なんじゃなかったっけ。
0088デフォルトの名無しさんNGNG
msvcrtって結構アルゴリズム的には最適化されてるんじゃないか
0089デフォルトの名無しさんNGNG
>>86はなんだ。BCBを入れるとWin32APIの実装が変わるのか。
0090デフォルトの名無しさんNGNG
>>85
DIBは素人にはお勧めできない。
使い方間違えると、あっという間にメモリリークさせてOSぶっ飛ばす諸刃の剣。
0091デフォルトの名無しさんNGNG
>>89
どこをどう読めばそういう結論が出るのか小一時間(ry
0092デフォルトの名無しさんNGNG
>>89
じゃなくて、BCBのsprintfが、wsprintfより貧弱かもっつーことだろ。
0093デフォルトの名無しさんNGNG
>>92
逆だろ
0094デフォルトの名無しさんNGNG
自分の場合CreateThreadで作成したスレッド内でランタイム使うと
メモリーリークするってMSDNに書いてあるのでwsprintfとlstr系に統一した

ランタイム使いたい人は_bigenThreadExとかつかえばいいんだけどね
009582NGNG
>>84
ありがとうございます。
ユニコードの環境ではプログラミングしたことがないので知りませんでした。
Windowsでの文字列絡みのプログラミングでは
できるだけWin32APIを利用した方が良いということですね。
0096デフォルトの名無しさんNGNG
>>94
_bigenThreadExって(藁

どうせ、なかでCreateThread呼んでるんだし、
最初っから_beginthreadex呼んでいいと思うんだけどね
009792NGNG
>>93
そうだった。スマソ
0098デフォルトの名無しさんNGNG
>>95
そうでもないよ
0099デフォルトの名無しさんNGNG
16ビット環境ではAPI版は「FARポインタを渡せる」というメリットがあった
0100デフォルトの名無しさんNGNG
16bit環境でも、少なくともMSC/VCには_f〜っつー明示的FARポインタ用関数はあったが。
0101デフォルトの名無しさんNGNG
>>96
bigen早染めw
0102デフォルトの名無しさんNGNG
>>92-93
どっちでもいいけど、とにかくsprintfもwsprintfも仕様が決まってるだろ。
BCBはこれらに対して仕様外な何か特別なことしてるのか?
0103デフォルトの名無しさんNGNG
教えてください。
win32のlstrcpyと標準Cライブラリのstrcpyですが
これはどう使い分けるのでしょうか?
0104デフォルトの名無しさんNGNG
wsprintf は、書式に浮動小数点が使えません。

そういうことなんじゃねーの?
>貧弱
0105デフォルトの名無しさんNGNG
だからそれはBCBもVCも同じに決まってんだろゴルァって話じゃねーの?
0106デフォルトの名無しさんNGNG
要するにVCやBCのそれはANSIとかのそれより機能が豊富だったりするが、
wsprintfはそこまでも機能が無いということだろ。
0107デフォルトの名無しさんNGNG
こんな下らない事で論争が出来るおまいらは素敵過ぎる
0108デフォルトの名無しさんNGNG
論争になどなり得ない問題のはずなのだが。
0109デフォルトの名無しさんNGNG
APIスレの話題じゃないな
0110デフォルトの名無しさんNGNG
一応APIなんだがな。
0111デフォルトの名無しさんNGNG
話してるのは>>86のことだろう。
>>86だと、BCB6のwsprintfとVC++のwsprintf、
またはBCB6のsprintfとVC++のsprintfがあたかも別物のような書き方だから。
wsprintfもsprintfもそれぞれWin32APIとCで仕様が決まってるんだから、
「BCB6の場合。VC++は知らん」なんて、二つのコンパイラを区別する必要ないじゃん?と。
0112デフォルトの名無しさんNGNG
>>111
86 は VC++ のことは知らんから、「VC++ は知らん」って言ってるだけでは?
漏れは逆に VC++ 使いだから、BCB6 の sprintf が ANSI 準拠かどうか知らんし。
0113デフォルトの名無しさんNGNG
さて、収まったかと思ったら、またバカの出現で数歩後退しました。
0114デフォルトの名無しさんNGNG
>>112
持って無くてもそれくらいはわかるだろう・・・
何十年も前に発売されたものじゃないんだから・・・
0115デフォルトの名無しさんNGNG
それより>>106の意味がいまいちよくわからないんだけど。
「それ」って具体的に何?sprintfのこと?VCやBCのsprintfはANSIのより機能が豊富なの?
0116デフォルトの名無しさんNGNG
すべてはい(A)
0117デフォルトの名無しさんNGNG
スルーされてるけど>>45ってどのへんがパクリなん?
初めの方をペゾルド本と見比べてみたけど
特にパクった文章は見当たらないんだが。
0118デフォルトの名無しさんNGNG
>>83
WS_CLIPSIBLINGSって難しいね
挙動が理解できない
0119デフォルトの名無しさんNGNG
訪問者を増やすための作者の自作自演では
0120デフォルトの名無しさんNGNG
>>117
パクりかは知らないが、俺はあれでw32apiプログラミングを学んだ。猫より記述が正確、構造がマシ(猫の破綻しきった
論理構造よりはマシという意味)で変数の命名規則もそれほど腐ってなかったから。
0121デフォルトの名無しさんNGNG
関係無いがこんなクソスレあったんだな。

【漏れは】猫でもわかる質問スレ【猫以下です】
http://pc5.2ch.net/test/read.cgi/tech/1054813207/

でもレバーの指摘はちょっと笑った。
0122デフォルトの名無しさんNGNG
>>117
なんつーか、出てくる項目とその並びがほとんどペゾルト本なんだよな。
いきなりUnicode対応のための項があったり、最後にちょこっとWinSockの項があったり。
とか言いながら、俺も結構勉強させてもらったが。
0123デフォルトの名無しさんNGNG
質問なんですが、Win98vb6sp5の環境だとちゃんと機能するのですが。
WinXPvb6sp5の環境だとZip32.dllのところでオーバーフローしてしまいます。
これって直せるんでしょうか?ちなみにこんな感じです。
Dim FN As String
Dim SendStr As String
Dim Ret As String * 255
SendStr = "-r9 " & """" & FN & ".zip" & """" & " " & """" & pasu & "\" & """" & " " & """" & FN & ".bmp" & """"
Zip Me.hWnd, SendStr, Ret, 255
Retの数上げても意味ありませんでした。

VBのスレでも聞いてるんですが荒れてて答えかえって来そうに無いので
お願いします
0124123NGNG
同じプログラムのなかでLzhに圧縮するのも書いてるんですが
そちらは98もXPも問題なく動いてます。
0125デフォルトの名無しさんNGNG
>>122
あぁ、それは確かに。ビットマップの項目が長いところとかね。
0126デフォルトの名無しさんNGNG
> SendStr = "-r9 " & """" & FN & ".zip" & """" & " " & """" & pasu & "\" & """" & " " & """" & FN & ".bmp" & """"
鳥肌が立つほど気持ち悪かった
0127123NGNG
そう書かないとスペースありのフォルダ名とかくると
誤作動するんですよ、もっといい書き方ありそうですけど、、
初心者で申し訳ないです
0128デフォルトの名無しさんNGNG
>>126の部分がAAに見えたよ。コードにはどうしても見えない
0129デフォルトの名無しさんNGNG
>>123
zip32.dllはよくしらんが、-r9の後にスペースっていらんの?
0130デフォルトの名無しさんNGNG
Win32APIじゃねーだろ。
0131デフォルトの名無しさんNGNG
>>127
すれ違いだが...

Private Function DQ(Str As String) As String
 DQ = """" & Str & """"
End Function

SendStr = "-r9 " & DQ(FN & ".zip") & " " DQ(pasu & "\") & " " & DQ(FN & ".bmp")

とかするのは、どうだろうか ?
0132デフォルトの名無しさんNGNG
>>121
その指摘したの漏れだ・・・。思うに猫の中の人はBASICで論理構造がガチガチに固まってるんじゃないかと。
0133デフォルトの名無しさんNGNG
俺は「pasu」が気持ち悪いぞ。
0134123NGNG
>>129
-9rの後にスペースありますし98だと正常に動きます。

>>131
なるほど〜

すれ違いな事にも気づきませんでした、すみません

>>133
passとかaddとかつけたいけどなんかだめな気がするんで、、

すれ違いなようなので去ります。
ご迷惑おかけしました
0135デフォルトの名無しさんNGNG
べーしっ君ですな
0136デフォルトの名無しさんNGNG
>>134
> passとか

... pasu の方がましかも...。
0137デフォルトの名無しさんNGNG
パス付きlzhってのがあるのかとおもたよ
pathのことかorz
0138デフォルトの名無しさんNGNG
ってzipの話か。
013972NGNG
>>83
遅レスごめんなさい
クリップっていうのはどういうことなんですか?
前々からWS_CLIPSIBLINGSの説明とかでもでてきたのですが
検索して調べても本文と照らし合わせて納得のいく
説明がしてあるのは見つかりませんでした・・
そしてこの

メインウィンドウ
┣子ウィンドウA
┗子ウィンドウB(スタティックスタイル)
 ┗ボタンやエディット

子ウィンドウ二つにはWS_CLIPSIBLINGSが設定してあります。
コレはただ 設定してないで同じ位置に配置した場合
一方の子ウィンドウ他方の子ウィンドウに描画を行ってしまうから
と 勝手に推測して設定したものでありますが
よくはわかってないで使ってます
ウィンドウ Zオーダー 色々な概念を
正確にイメージできていないような気がします・・

0140デフォルトの名無しさんNGNG
>>123
> Dim Ret As String * 255
> Zip Me.hWnd, SendStr, Ret, 255

Retも怪しいんですが。
本当はByte型のテーブルにして、実行後にSJIS→UNICODE(String)コンバートするんじゃないかと。
0141デフォルトの名無しさんNGNG
SetTimer で設定して呼ばれたタイマプロシージャ内で
そのタイマをKillTimerしても問題ありませんか?
0142デフォルトの名無しさんNGNG
>>141
問題ありません。
つか、よくやることでしょう。
014378NGNG
>>79-81
ありがとうございます。
81さんのまったく仰るとおりなんでググって出直してきます。。。
動的に長さが変化する文字列の取得がしたかったんですが
string使うのかな・・・
てか↓逝きですなorz
http://pc5.2ch.net/test/read.cgi/tech/1054813207/l50
0144デフォルトの名無しさんNGNG
>>140
その辺の変換はVBがやってくれるよ。
0145デフォルトの名無しさんNGNG
>>143
文字列の長さを取得するwin32apiはlstrlen

勉強してらノシ
0146デフォルトの名無しさんNGNG
>>145
この場合はGetWindowTextLength(GetDlgItem(hDlg, IDTXT))だと思うが。
0147145NGNG
元のカキコを読まずに脊髄でレスしちまった・・・orz

フォローサンクス>>146
0148デフォルトの名無しさんNGNG
windowsのUNICODEってUTF-8だよね?
0149デフォルトの名無しさんNGNG
>>148
UCS-2/UTF-16
0150デフォルトの名無しさんNGNG
>>149
サンクスコ
ついでにWideCharToMultiByte関数は現在のロケールのコードページに基づくMBCSに変換すんのかな?
コードページってキャラクタセットと同じ?
0151デフォルトの名無しさんNGNG
>>150
ぐぐれ。つかMSDNの説明読んだ上でそんな質問してるのか?
0152デフォルトの名無しさんNGNG
>>150
日本語( Shift_JIS ) は コードページ 932 だ。
WideCharToMultiByte( 932, (以下略) ); と指定するのだぞ。
0153デフォルトの名無しさんNGNG
>>152だとOSがどこの国で動いていてもシフトJISになるわけだが
それではまずい場合は
WideCharToMultiByte( CP_ACP, (以下略) );
まあMSDNを見れば一目瞭然なわけだが
0154デフォルトの名無しさんNGNG
>>139
まず、全ての標準コントロール (static を含む。NT系列では Comboを除く) は、CS_PARENTDC クラススタイルを
持っているので、描画は親ウィンドウのデバイスコンテキストにを用いて行われます。つまり描画について考える際には、
クリッピング領域とWM_PAINTの発行順だけを考慮すればOKです。デバイスコンテキストは共通だから。

次に、WS_CLIPSIBLINGS は単に全ての兄弟ウィンドウ(の矩形)への描画が行われないように描画範囲をクリップ
するって感じの属性で、Z-Orderは考慮されません。片方を他方の前に持ってきたからといって、前のほうが見える
ようになるわけではありません。

・・・具体的に何がしたいのかを書いてもらった方がもうちょっと実のある返事を書けるような気がする。
0155139NGNG
>>154

レスありがとうございます。理解した・・と思いましたが
できませんでした。

わかっていないのか・・_| ̄|○

具体的に作りたいのは自分が何問、何ページ、どの問題集を解いたかを
その日付ごとに教科単位で分けた子ウィンドウBに
(実際には構造体型配列に)記録しておけるプログラムです。

国数理社英
4/11□□□□□
4/13□□□□□
4/14□□□□□  □=子ウィンドウB

こんな感じになります。
この子ウィンドウBにはさらにプッシュボタンを持つ
ボタン子ウィンドウやらエディットやらがつまっています。
そしてもうひとつ、常にメインウィンドウの右下の最前面に存在し
スクロールバーをスクロールしても
メインウィンドウ上での位置を変化させない子ウィンドウAを作り
ここに正解確率やら、こなしたページの数やらを計算して
表示させたいのですが・・
この常に最前面に表示させるという方法がわかりません。
0156139NGNG
(続き)
WS_CLIPSIBLINGSを外してAにSetWindowPosのHWND_TOPMOSTを使うと
子ウィンドウAとBが重なっているときに
Aが前面に表示されているんですが
下にあるBのエディットに入力できたりしちゃうので
TOPMOSTは常に最前面に出してくれるんじゃなかったのか と
思う一方 自分は最善面という概念もわかっていないような
感じがします。

A、Bの両方にWS_CLIPSIBLINGSを設定して
AにSetWindowPosのHWND_TOPを使ったら
Aは前面に表示されているし重なったとき下のBを操作することも
できなかったので自分の思うようになったのですが
なぜこうなったのかわからないので生きた心地がしません。

長レス&超ド級初心者で申し訳ありません
助けてください_| ̄|○
0157デフォルトの名無しさんNGNG
>>155
http://www.topposystem.co.jp/DL/Win32API/GUI/%E3%83%9A%E3%82%A4%E3%83%B3%E3%83%88%E3%81%A8%E6%8F%8F%E7%94%BB%E3%81%AE%E6%A6%82%E8%A6%81.html
0158139NGNG
>>157
サンクス!!!
まだちょっとしかみてないけど
今の自分にぴったりかもしれません
見てみます
0159デフォルトの名無しさんNGNG
win32APIにてアイコンの変更ダイアログを呼び出したいんですが
ググってもvbに関しての情報がなくつまってます・・・

誰か助けてくだされ
0160159NGNG
事故解決でけますた
失礼
0161159NGNG
>>160
お前誰だよ!まだ解決してねーよ!!
0162159NGNG
>>161は偽物です。
0163デフォルトの名無しさんNGNG
つかそれはVBでWin32APIの使い方がわからないのか?ならVBスレで聞いてこい。
0164159NGNG
>>163
うるせー馬鹿
0165159NGNG
>>163
159&160は自分です。
使い方はもちろんのことわかっております。
検索しても情報が少なく、accessについてるやつ引っ張れそうなんで
"解決"判を押させてもらいました。

スレ汚しスマソ
0166デフォルトの名無しさんNGNG
>>165
どうやって解決した?
気になるじゃないか。
0167デフォルトの名無しさんNGNG
ならねーよ
0168159NGNG
なれよ。
0169デフォルトの名無しさんNGNG
この時間帯は何とも香ばしいですな。
質問があったけどまた後で来まつ。ノシ
0170159NGNG
>>166
解決といこうとしたんですが・・・
ちっと戦ってます。

ACCESSのSHChangeIconDialogに関して情報が載ってるソースあったんで
Shell32.dllから隠しでもってきて使ってみました。

したらばmsgboxが出てきて、文字化けたような
"ファイルxxxxxxxxがみつかりません。"と表示され
%SystemRoot%\system32\SHELL32.dll内のアイコンのリストビューがでます。

ンデ戦ってます。
0171デフォルトの名無しさんNGNG
Dim strBuff As String
strBuff = StrConv("c:\winnt\explorer.exe" & vbNullChar, vbUnicode)
Call SHChangeIconDialog(Me.hWnd, strBuff, 0, 0)

で行けたにょ(Win2K)。細かい部分は任せた。
0172159NGNG
>>171
vbUnicodeじゃなくてFORMのユニコ指定してた。
神サンクスですわー
0173デフォルトの名無しさんNGNG
簡単なWin32プログラムを作ってみたのですが、メッセージループでSleep()を入れないとCPU使用率が上がってフリーズしたような状態になってしまいます。
音楽が流れていると音が細切れになることから、これはリソースを独占して他のスレッドにリソースがうまく行き渡っていないからなのだと思うのですが、ここまでの解釈は合ってますよね?

で、うちのPCは常時CPU使用率が100%付近にきていて、しょっちゅうフリーズしてしまうという状況なのです。
これが上述の自分で作ったプログラムの症状と酷似している事から、どうやらメッセージループでリソースを独占している常駐ソフトがある、と睨んだところまではいいのですが
一通りのスタートアップ&サービスを止めてみたのですがだめぽでした。

こういうリソースを独占して他のアプリに迷惑をかける常駐ソフト(スレッド?)を見つける手段というのはあるのでしょうか?
また、クロック数の高いCPUに取り替えれば力押しでフリーズしないようになるのかどうか聞きたいのですが。

参考までに、ここの方と似たような症状です。
http://www21.ann.co.jp/pas/bbs6/lg115620.html
0174デフォルトの名無しさんNGNG
それプログラミングの質問か?
0175デフォルトの名無しさんNGNG
>>173
それ本気で知りたきゃ、実際に配布して試してもらえば?
0176173NGNG
>>174
やっぱスレ違い、というか板違いですか?
誘導してもらえるとありがたいのですが。

>>175
誰もが一番最初に作るであろうウィンドウだけの何もしないプログラムです。
0177デフォルトの名無しさんNGNG
>>176
おまえのPCだけがおかしいんじゃないのか
ウィンドウだけのプログラムでそんなことにはならない。
0178173NGNG
>>177
そうですね。どうもありがとうございました。
0179デフォルトの名無しさんNGNG
>>173

> こういうリソースを独占して他のアプリに迷惑をかける常駐ソフト(スレッド?)を見つける手段というのはあるのでしょうか?
タスクマネージャ

Windows Xp 質問スレ 86ページ目
http://pc5.2ch.net/test/read.cgi/win/1081622045/
0180デフォルトの名無しさんNGNG
>>176
メッセージループでGETMESSAGEだっけを使ってない。のかも??
PEEKMESSAGEのみだとそんな感じだったような気がする。
WHILEでCPUリソース食ってるとかそんなんじゃなかったかな??
あと、スペル間違ってるかも。
0181139NGNG
>>157

子ウィンドウ の項目までとりあえず読ませていただきました
まず クリップっていうのは
描画するにあたって関係のない領域を
描画する領域から排除するっていう感じでよろしいのでしょうか??

本文中に
"システムはクリッピング リージョン外の描画を廃棄 (クリップ) するため"
と一応しっかり書いてあるのですがちょっと自信がなくて・・

それで、

>兄弟ウィンドウは、 Z順序と逆の順番でWM_PAINTメッセージを受け取ります
>このため、 Z順序の最上位の (いちばん前の) ウィンドウは、
>最後にWM_PAINTメッセージを受け取ります。

つまりはZオーダーというものは描画処理の順番を決めることで
前後関係をうまく表現しているだけであるということなんでしょうか。

Zオーダーが下であるウィンドウからWM_PAINTは呼ばれ
を指定したウィンドウは描画する際に
兄弟ウィンドウの領域をクリップするなら
を指定した兄弟ウィンドウ同士が重なる場合は
Zオーダーと逆の順番で重ねられたカタチになるのかな・・
使い慣れない言葉に正確にイメージできてるかわからない概念で_| ̄|○
変な文章になってたらすいません。
再び おねがいします。

0182デフォルトの名無しさんNGNG
(リッチ)エディットコントロールについての質問なのですが、

上記をコンソールウィンドウのように、printfの代用としてメッセージ表示に用いているのですが、
僕自身がEM_REPLACESELを使用しているためか、表示処理がかなり遅く感じます。
(可能な限り、行単位で表示できるように処理してはいますが)

より速度を求める場合は、ウィンドウに直接書く(TextOut)しかないのでしょうか?
0183デフォルトの名無しさんNGNG
リッチエディットより ということなら普通のエディットでもいいだろ
0184デフォルトの名無しさんNGNG
前スレ見てて不思議に思ったんだが
> 464 名前:デフォルトの名無しさん[sage] 投稿日:04/03/10 21:12
> >>463
> みなさん大人しくfopen使ってるんすかねー?

> 466 名前:デフォルトの名無しさん[sage] 投稿日:04/03/10 21:30
> >>464
> 使ってる。ローカルファイルの一般的な展開にわざわざWin32APIを使うのは稀。
> MFCのCFile系統も必要なし。
> 将来の別プラットホームや別プロジェクトへの移植も考えると、C標準でほぼ十分。


って言ってるけど、結局fopenもW32APIコールに変換されてるんじゃない?と考えてReactOSのソースを見てみた。
msvcrt.dllのfopen.cから_open() (open.c内)が呼ばれ、そこではオープンモードを調査した上でこうしている
 hFile = CreateFileA(_path,
             dwDesiredAccess,
             dwShareMode,
             &sa,
             dwCreationDistribution,
             dwFlagsAndAttributes,
             NULL);

ROSのソースであってWindows自体のソースではないが、設計とAPIコール体系を調べた上で書いているようだから
参考にはなるだろう。
0185デフォルトの名無しさんNGNG
>>184
あのね。標準関数というのは、その環境でちゃんと動くように作られてるんだよ。
0186デフォルトの名無しさんNGNG
>>184
WindowsというかVCのCRTも最終的にはCreateFileを呼んでるけど。
fopenはCの規格に含まれる関数であって、OSのそれじゃない。
ネイティブで実装しているOSがあるかもしれないけど、それは今関係無い。

OSのサービスをC標準に準拠するようにラップするのが普通。
>>184みたいな事を言い出したら、mallocを使っていたとしても
いちいちHeapAlloc使ってますって言わなきゃならんのか?
0187デフォルトの名無しさんNGNG
なんか懐かしいなぁ。私も高校の頃はそんな風に思ったもんだよ。

話は逸れるが、fopen()のオープンモード拡張して排他制御できたらいいとはちょっと思う。
0188デフォルトの名無しさんNGNG
>>184
引用もとの発言者がしているのは、標準Cライブラリだけに依存している
プログラムはソースコードレベルで移植性があるよね、という話。
標準Cライブラリが動作する環境ならMakeかけなおすだけで大抵動く。
標準Cライブラリ自体は、あなたの言うとおりOSに依存するので移植性はない。
0189デフォルトの名無しさんNGNG
>>188
別に移植性云々じゃなくてたしかにCreateFileのほうがfopenより多機能だが、
大抵の状況では必要ないからfopenで十分だろ、って程度じゃないか?
0190デフォルトの名無しさんNGNG
>>189

183氏が

> 前スレ見てて不思議に思った

のは

> > 将来の別プラットホームや別プロジェクトへの移植も考えると、C標準でほぼ十分。

のくだりに関してだから、ここでいう移植とはこういう意味である、という
事でああいう風に書いた。
元発言の主旨はなにか、という話なら多分あなたの言う事が正しいのだろう。
0191デフォルトの名無しさんNGNG
他スレからのコピペだけど、
Visual C++ Toolkit 2003
http://www.microsoft.com/downloads/details.aspx?FamilyID=272be09d-40bb-49fd-9cb0-4bfa122fa91b&DisplayLang=en

http://msdn.microsoft.com/visualc/vctoolkit2003/

> What is the Visual C++ Toolkit 2003?
> The Visual C++ Toolkit is a free edition of Microsoft’s professional Visual C++
> optimizing compiler and standard libraries ? the same optimizing compiler and
> standard libraries that ship in Visual Studio .NET 2003 Professional!
キタ━━━━(゚∀゚)━━━━!!
さよなら某ランド
0192デフォルトの名無しさんNGNG
IDEあるの?
0193デフォルトの名無しさんNGNG
配布制限あり、IDEなし
まだまだ某は生きると思われ
0194デフォルトの名無しさんNGNG
どんな配布制限?
0195デフォルトの名無しさんNGNG
Are there any restrictions on how I use the Visual C++ Toolkit?

In general, no. You may use the Toolkit to build C++ -based applications,
and you may redistribute those applications. Please read the End User
License Agreement (EULA), included with the Toolkit, for complete details.

インストールせんとEULA読めんのか。
0196デフォルトの名無しさんNGNG
>>193はインストールして読んだんだろ?どんな制限があったのか教えてクリ。
0197デフォルトの名無しさんNGNG
NetBIOSでのワークグループ名やドメイン名を取得するAPIって何になるんでしょうか?
Windows 2000/XPについてです。

GetComputerObjectName かと思って試したんですが
ドメインに入っていないマシンだとERROR_CANT_ACCESS_DOMAIN_INFOという
エラーが出てしまいます。
0198デフォルトの名無しさんNGNG
>>191
コマンドラインベースだと某のコンパイラの方が使いやすい
0199デフォルトの名無しさんNGNG
商用アプリ不可、$5.0を超える手数料の徴収不可
0200デフォルトの名無しさんNGNG
えーご苦手ながら読んでみたけど、コンパイラはVC7.1(VS.NET2k3)のと同じなんだよね?
0201デフォルトの名無しさんNGNG
>>199
落として一通りEULAに目通してみたけど、
どこをどう読んだら「商用アプリ不可、$5.0を超える手数料の徴収不可 」になるんだ?
0202デフォルトの名無しさんNGNG
>199
少なくとも、$5.0の解釈は間違ってる。ライセンスの中で$5.00が出てくるのは、第15項だが
これは、terrariumのEULAにも出てくる。
http://www.microsoft.com/japan/msdn/net/terrarium/download/ter_eula.asp
http://www.microsoft.com/japan/msdn/net/terrarium/download/ter_eula_JP.asp

一番下の、LIMITATION OF LIABILITY AND REMEDIES. Notwithstanding any damagesがどーのこーのだ。
上記したterrariumの日本語参考訳の一番下を見ると判るが、「仮令、大きな被害を受け手も、5$以上は
俺ら(Microsoft)は支払いませんよ」という話で、手数料がどーのこーのという話ではない。
0203デフォルトの名無しさんNGNG
配布制限に関しても「このソフト(Visual C++ Toolkit 2003)を無断で転載したら駄目」って感じなんだけど・・・
ここはちょっと英語力に自信が無いから微妙だけど
0204デフォルトの名無しさんNGNG
英語の読めないアンチが騒いでるだけだから放置しとけ
0205デフォルトの名無しさんNGNG
プ
0206デフォルトの名無しさんNGNG
ピ
0207デフォルトの名無しさんNGNG
QueryPerformanceFrequency()でゼロが返される
ハードウェアが高分解能パフォーマンスカウンタをサポートしてない
PCってあるのでしょうか?
0208デフォルトの名無しさんNGNG
>>207
rdtscをサポートしてないCPUだとおもう
pentium以降は大丈夫だろう
0209デフォルトの名無しさんNGNG
クロック可変のCPUで酷い目にあう悪寒
0210デフォルトの名無しさんNGNG
PCに搭載されているシリアルポート名を、例えば、COM1、COM2と言った
感じで列挙したいのですが、APIで実現できますでしょうか?

「シリアル 列挙 API」とかでググってたんですが、それらしいAPIが見つから
なかった…(´・ω・`)

0211デフォルトの名無しさんNGNG
とりあえずCreateFileとかしてみてハンドル取得してみるとか
でいいじゃん、めんどくさいし
0212デフォルトの名無しさんNGNG
と言いつつ他の解決法を知らない>>211であった。
0213デフォルトの名無しさんNGNG
HKLM\Software\Microsoft\Windows NT\CurrentVersion\ports
0214210NGNG
>>213のキーから"COMxx"を取得してCreateFileしてハンドルを取得出来た
ポートを列挙する事にしました(`・ω・´)
0215デフォルトの名無しさんNGNG
>210
HKLM\HARDWARE\DEVICEMAP\SERIALCOMM
0216デフォルトの名無しさんNGNG
CreateCompatibleBitmapを使用して、裏画面での描画を行っているのですが、

ウィンドウサイズが変わった時(=このビットマップサイズの元となるHDCのサイズが変わった時)は、
その都度DeleteObject→CreateCompatibleBitmapで良いんでしょうか?
0217デフォルトの名無しさんNGNG
Win32AppricationでCreateFont+TextOutで文字を出力しているのですが、
(y:32,x:16)のサイズのフォントを等幅にするにはどうすればいいのでしょうか。
文字のサイズがデフォルトの(16,8)、(40,20)等の時は大丈夫なのですが、
自分が使いたい(32,16)の時はずれてしまいます。
他にポイントとなりそうな、最後から2番目の引数はFIXED_PITCH | FF_MODERNで
最後の引数は、MSゴシックなどです。そこにメモ帳のFixedSysを指定すると、
フォントのサイズが強制的に(16,8)になってしまいます。
0218デフォルトの名無しさんNGNG
CreateProcess使って同じフォルダのexeを実行したいのですが、
どうすればいいのでしょう?
0219デフォルトの名無しさんNGNG
MSDN嫁
0220デフォルトの名無しさんNGNG
CreateProcess(NULL,"ここにexeのファイル名", 0, 0, FALSE, CREATE_NEW_CONSOLE, 0, 0, &startUpInfo, &procInfo ) ;
でやっても無理でした。
0221デフォルトの名無しさんNGNG
何がどう無理なのか書けよ。エラーなら、GetLastError使うとか。
0222デフォルトの名無しさんNGNG
コンソールアプリでHWNDを取得したいんでつがどうしたら良いでしょうか?
FindWindow(NULL, "test");
だとダメみたいだし、
GetModuleHandle(NULL);
で得たハンドルをHWNDにキャストしたらDirectSoundは初期化出来たんですが、
音が鳴りません。
教えてえろいひと!
0223222NGNG
ああ、お前等ごめんなさい。
FindWindow(NULL, "")でいけますた。
0224デフォルトの名無しさんNGNG
GetModuleHandleはHMODULEだろ。。。

Win2000以降ならGetConsoleWindow()
0225222NGNG
>>224
へたれwindowsなら強引にキャストすればいけるんでないかと思って・・・。

そんなAPIあったのね。
ありがとうえろいひと。
0226デフォルトの名無しさんNGNG
ヘタレなのはお前だろw
0227デフォルトの名無しさんNGNG
ビットマップの透過表示の仕方で、表と裏の2枚分のデータを重ねて
計算して透過させる方法は知っています。

別の方法で、すでに何かが表示してある位置にビットマップを
表示するとき、透過する色を指定するとそこの部分を表示しなく、
前に表示してあったものが消されずにすむみたいなのがあるなら
教えてください。TextOutでいうSetBkMode(hdc,TRANSPARENT);
みたいな感じです。
0228デフォルトの名無しさんNGNG
>>216
その通り。
これが嫌なら、MAXのサイズを前もって確保してみては?

>>217
1文字ずつ表示する。

>>227
BitBltのフラグとかどう?
0229216NGNG
>>228
有難うございます。
0230227NGNG
>>228
BitBltにそれらしきものがありますね。
今まではStretchDIBitsで表示してたのですが、
それには無かったので、気がつきませんでした。
探してみます。ありがとうございました。
0231デフォルトの名無しさんNGNG
Windows2000pro sp4
PlatformSDK + Visual C++ Toolkit 2003

この環境でUS MicrosoftのMSDNサイトを見ながら GetConsoleWindow() を
試そうとしたのですが、コンパイルが通りません。
ヘッダーファイルの中には GetConsoleWindow の宣言も確認できます。
また、他のコードではコンパイル&リンクができてるのでパスの問題でも無さそうです。
何が悪いか分かりますでしょうか?

---------------------------------------------------------------------
#include <windows.h>
#include <stdio.h>
#define _WIN32_WINNT 0x0500
int main()
{
HWND hWnd = GetConsoleWindow();
printf( "このコンソールウィンドウのハンドル : 0x%X\n", hWnd );
return 0;
}
---------------------------------------------------------------------
error C3861: 'GetConsoleWindow': identifier not found,
even with argument-dependent lookup
0232デフォルトの名無しさんNGNG
以下のビットマップを表示するプログラムについての質問です。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1060403548&res=59&fi=no

まず、お手数ですがexeのある位置になんでもいいのでビットマップを
用意してください。そして、マクロの名前をその名前にしてください。

コールバックの//1のShowBitmapのコメントを外しても
ビットマップが一つしか表示されないのはなぜでしょう。
ShowBitmap内部の//2のコメントを外したときはちゃんと2つ表示されるのに。
0233デフォルトの名無しさんNGNG
>231
Windowバージョンのdefineくらいは#includeの前にしてみなよ
0234231NGNG
>>233

通りました。
理屈をよく考えてみれば当然そうでしたね(汗
どうもありがとうございました。
0235デフォルトの名無しさんNGNG
>>232
BeginPaintとEndPaint

あとは自分で考えれ
0236デフォルトの名無しさんNGNG
>>232
BeginPaint()が二度呼ばれるから、が原因だな。

BeginPaintは、WM_ERASEBKGNDメッセージを発行するので、
DefWindowProcによって、Bitmapを描画する前に、
WNDCLASS.hbrBackgroundのブラシでクライアント領域を塗りつぶす。

処理の流れとしては、
WM_PAINT発行→BeginPaint呼び出し→WM_ERASEBKGND発行→Bitmap描画→
BeginPaint呼び出し→WM_ERASEBKGND発行(ここで先に描いたBitmapが上書きされる)→Bitmap描画→
となっている。
0237232NGNG
>>235
ありがとうございます。調べてみます。
0238232NGNG
リロードしてなかった。

>>236
詳しくありがとうございます。直してみます。
0239232NGNG
あっ、そもそも大きな勘違いをしていました。
StretchDIBitsの時に表示していると思っていました。
TextOutと違い、ShowBitmapなどの名前でないのは、
その場で表示するわけではないからですね。
0240デフォルトの名無しさんNGNG
bigenPaint()したんだけどヘヤーカラーしか変わりません
0241デフォルトの名無しさんNGNG
>>240
そうなる仕様でつ。
0242232NGNG
case WM_PAINT:
hdc = BeginPaint(hwnd, &ps);
for(y = 0; y < 10; y++)
for(x = 0; x < 10; x++)
ShowBitmap(hwnd, hdc, SHOW_BITMAP, y * 16, x * 16, 1, 1);
EndPaint(hwnd, &ps);
break;
こんな感じにしたら出来ました。

後、GetDCに変えてみると何回もWM_PAINTに行っているみたいで
CPU率がえらい事になっていましたが、return DefWindowProcを
defaultの所に書かずに関数の最後の所に書いたら直りました。
(どのイベントの時でもDefWindowProcを通るようにする)

しかし、ウィンドウズアプリケーションは難しすぎます。
いったいどのやり方でやるのが一番いいのでしょうか。
0243デフォルトの名無しさんNGNG
>>242
こういうやり方をするなら、フレームバッファを構築してそっちで書き換えた方がいいと思われ。
WM_PAINT内は、フレームバッファの内容をBitBltなどで展開するのみに徹した方がいい。
あと、ここまでやりたいのかどうかは知らないけど、途中で画像を書き換えたい場合は、
WM_PAINTメッセージを起こすのではなくGetDCを取得して張り付ける方がいい。
これで、大分負担は減るんじゃないかな。

しかしながら、CPU使用率を考えるくらいなら、まずWindowsプログラムを覚えることを
優先した方がいいんじゃない?
0244232NGNG
>>243
ありがとうございます。
初心者なので何となくは分かるのですが難しいです。
仰るように基本の部分から勉強します。
0245デフォルトの名無しさんNGNG
コールバックで特定のHWNDの時のみ処理したい場合どうすればいいのでしょう。
ウィンドウが一つのときは大丈夫だと思うのですが。
0246デフォルトの名無しさんNGNG
分岐にはif文を使う
0247245NGNG
>>246
ええとそういう事ではなくて。説明不足ですね。
WinMainで"hoge"と"foo"という2つのウィンドウを作ったとき、
どちらのウィンドウにイベントが起こっても同じコールバック関数で
受け取るので、そのときHWNDが"hoge"のHWNDか"foo"のHWNDかを
判断したいのです。
例えばif(strcmp(CheckHWND(hwnd),"hoge")==0)みたいな感じです。
0248デフォルトの名無しさんNGNG
HWNDじゃ無理です。
0249デフォルトの名無しさんNGNG
>>247
ちょっと考えれば解ると思うが、あんたの方法だと、何らかの方法でイベントの発生したウィンドウのHWNDを得なければならない。

で、「イベント」とはなんだ?
0250246NGNG
>>247
SetPropとかすればいいんじゃに?

>>249
ウィンドウプロシージャがよばれるんだろ
0251245NGNG
>>248
何ならできますか。

>>249
イベントとは左クリックとかのWM_**です。

実はひとつのウィンドウ毎にひとつのコールバック関数を作るもの
なんですかね。myProg.lpszClassNameとCreateWindowの第一引数、
myProg.lpfnWndProcとコールバック関数の名前を同じにしますが、
それを2つのウィンドウで別々にすれば、自然と"hoge"でのイベントは
hogeCallへみたいになるんじゃないかと。
実はまだ複数のウィンドウのプログラムを作ったことが無かったので、
実験をすることも無くどうなるんだろうと質問してしまいました。
0252デフォルトの名無しさんNGNG
>>251
定石的にはMFCやATLがやってるように(それぞれ多少手段は違った気がするが)
ウィンドウと対応するC++なりのオブジェクトをつくってウィンドウ毎に処理を分ける。
0253159NGNG
SHChangeIconDialogに関して質問いれたものです。
iconインデクス取得して絵画まではいけますたが

引数で送ったpath以外のディレクトリを参照で選ばれた場合の
pathをうけとる方法がわかりませぬ。

どなたかご教授願います。
0254245NGNG
>>252
やっぱウィンドウが複数あったり、長編なプログラムは、
MFCとかで作るもんなんですかね。自分はMFCに挫折したくちでして。
SDKのみで作っている所で創プロはすごく参考になるのだけど、
やさしめのなので(それでも難しい)。
0255デフォルトの名無しさんNGNG
>>253
VBでいいのかな? 漏れの作ったのでよければ。

Private Declare Function SHChangeIconDialogA Lib "shell32" Alias "#62" (ByVal hWnd As Long, ByVal szFilename As String, ByVal Reserved As Long, lpIconIndex As Long) As Long
Private Declare Function SHChangeIconDialogW Lib "shell32" Alias "#62" (ByVal hWnd As Long, ByVal szFilename As Long, ByVal Reserved As Long, lpIconIndex As Long) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)

Public Function ChangeIconDialog(ByVal hWnd As Long, strPath As String, Optional Iconidx As Long = 0) As Boolean
Const MAX_PATH As Long = 260
Dim strBuf As String * MAX_PATH, strRet(MAX_PATH) As Byte
Dim lPtr As Long, lRet As Long

strBuf = strPath & vbNullChar
If IsWinNT() Then           ←OSがNTかどうか判断。自分で作る
  lPtr = StrPtr(strBuf)
  lRet = SHChangeIconDialogW(hWnd, lPtr, MAX_PATH, Iconidx)
  CopyMemory strRet(0), ByVal lPtr, MAX_PATH
  strBuf = CStr(strRet)
Else
  lRet = SHChangeIconDialogA(hWnd, strBuf, MAX_PATH, Iconidx)
End If

If lRet Then
  ChangeIconDialog = True
  strPath = Left$(strBuf, InStr(strBuf, vbNullChar) - 1)
End If
End Function

呼ぶときは
Call ChangeIconDialog(Me.hWnd, パス, インデックス)
パス、インデックスに変更された値が戻ってくる。
0256246NGNG
>>254
おまえ俺を馬鹿だと思ってるだろ
0257デフォルトの名無しさんNGNG
MFCで無理なのにSDKで作れるって言うのはいったい・・・
0258デフォルトの名無しさんNGNG
WindowsXP sp1 Visual C++

Wininetを使った汎用的なクラス(class Internet)を作りたいんだけど、
アプリケーション定義コールバック関数とInternetSetStatusCallbackへ渡すコールバック関数を使うと
コンパイル時に「warning C4312: '型キャスト' : 'DWORD' からより大きいサイズの 'Internet *' へ変換します。」
と出て、実行するとハンドルされていない例外が出て止まってしまうんだけど問題なく動かす為にはどうしたいいんだろう?

こんな感じ
//アプリケーション定義コールバック関数
virtual void callback( DWORD dwStatus, LPVOID lpStatusInfo );

//InternetSetStatusCallbackへ渡すコールバック関数
static void CALLBACK _inet_callback( HINTERNET hInternet, DWORD dwContext, DWORD dwStatus, LPVOID lpStatusInfo, DWORD dwStatusInfoSize)
{
( (Internet*)dwContext )->callback( dwStatus, lpStatusInfo );
}
0259245NGNG
>>256
とんでもございません。
>>247の書き方に失礼があったのならここでお詫び申し上げます。

>>257
使い方が分からないんです。猫のリソース・スクリプトも分かりません。
VBも挫折しました。ソースだけで作れるのでないと分からないです。
0260デフォルトの名無しさんNGNG
>>259
じゃぁ、一緒にC#勉強しませんか?
割と良い感じですよ。
MFCの嫌だったところが全てなくなってる。
0261デフォルトの名無しさんNGNG
グローバル変数に記録しとけばいいだけの話だろ。
何を悩む必要があるんだ?

hWnd1 = CreateWindow();
hWnd2 = CreateWindow();

WndProc()
{
if (hWnd == hWnd1) {
...
}
else if (hWnd == hWnd2) {

}
}
0262デフォルトの名無しさんNGNG
糞プログラマが現れた
○戦う
○逃げる
0263デフォルトの名無しさんNGNG
たぶん>>259さんはメッセージ駆動に慣れていないだけだと思うんですよね。
C#からはじめればばっちりですよ。
0264159NGNG
>>255
VBでOKなんです。こちらの意図が完全にとおりました。
どうもありがとうございます。

ってかめちゃコード見やすい・・・見習わないと・・・
0265245NGNG
>>260
C#ですか。どんな感じなのかいろいろ調べてみます。
ただ自分は、新しいのを覚えようとしないで、今ある知識で
工夫して何かを作ろうと考えてしまう所があって、
そのままSDKで作るかもしれませんが、その時はすいません。

>>261
グローバル変数はいけないという概念があって。WinMainは
スタートファイルだから、externとかしなくてもいいので
逆に使うことで困ることは無いと思うのですが。
0266デフォルトの名無しさんNGNG
よしここらでいっちょ指摘しとこう。
×教授 ○教示
0267245NGNG
>>263
ええ、全然慣れていません。
ゲームを作ろうと思ったのですが、コンソールアプリでは
表現しきれないので、グラフィックを使いたいと思って、
勉強を始めました。昔少しやったことはあったのですが。
正直うざいだけです。PeekMessage+Sleepのメインループで
グルグルがいいのですが、勉強するチャンスでもあるのでやってます。

C#はいいんですかね。文章を読んだだけで2人の方が進めてくれたので
まさに自分にぴったしのなのかもしれません。
0268デフォルトの名無しさんNGNG
きょうじゅ けう― 【教授】

(名)スル
(1)0 1 (ア)児童・生徒に知識・技能を与え、そこからさらに知識への興味を呼び起こすこと。
(イ)専門的な学問・技芸を教えること。
「国文学を―する」「書道―」
(2)0 大学などの高等教育機関において、専門の学問・技能を教え、また自らは研究に従事する人の職名。助教授・講師の上位。


いいんでない?
0269デフォルトの名無しさんNGNG
>>265
ならstaticにすればいいじゃない。
変数名直で書くのがいやならクラスメンバにするとか。
形体はなんであれ、スタック以外の領域に、なんらかの形で
ハンドルを覚えておかないと分岐のさせようがないのはわかるでしょ?
0270245NGNG
>>269
そうですね。CheckHWNDみたいな関数があったとしても
もう片方の辺が無いから意味ないですし。
そういえば猫プロ(だっけ?)も始めに
char szClassNme[] = "ウィンドウクラス・ネーム" ;
みたいにWinMainの前にグローバル変数で書いてありますね。
0271デフォルトの名無しさんNGNG
もしや盲信的にグローバルは駄目といっているだけなのか?
0272245NGNG
>>271
そうだと思います。
ただ、長編のときはグローバル関数をあまり使わないで、
カプセル化(だっけ?)した方がよかったりするように、
極力使わないほうがいいのは分かっています。
ただ、逆に使わないと大変な所は、無理せず使うようにします。
0273デフォルトの名無しさんNGNG
>>272
まーそれでいいんじゃない。事情がわからんので適当だけど
普通は>>261よりは>>251のアプローチだと思うよ
0274デフォルトの名無しさんNGNG
すみません、質問させてください。

ウィンドウのタイトルバーの左側にあるアイコンを動的に設定する方法ってありますか?
今、
hIcon = LoadImage(hInstance, MAKEINTRESOURCE(IDI_ICON), IMAGE_ICON, 0, 0, LR_CREATEDIBSECTION);
DrawIcon(GetDC(hWnd), 0, 0, hIcon);
などとやっていたんですが、
これはアイコンの設定ではなくて描画ですよね……。

WNDCLASS を毎回 RegisterClass() して対処しようかとも思ったのですが、
直前に RegisterClass() した時の WNDCLASS を取得する方法もわかりませんでした。

何か解決策はありませんか?
0275デフォルトの名無しさんNGNG
>>274
WM_SETICON
0276デフォルトの名無しさんNGNG
>>274
WM_GETICON?
0277デフォルトの名無しさんNGNG
今C#いじってるけど、想像より実行が速いんで驚いてるよ。
ただ、俺のやり方が悪いんだろうが、すぐAPIが恋しくなってDllImport使いまくってる。
0278274NGNG
>>275
おお! あっさりできました!
ありがとうございます!

>>276
おはようございます。
0279デフォルトの名無しさんNGNG
>>277
.NET Frameworkのメモリ馬鹿食いはきにならない?酷すぎるんで結局W32APIに戻ってきたよ
0280デフォルトの名無しさんNGNG
>>277
実行中の重さは(GUI使わなければ)気になることはないね。
0281デフォルトの名無しさんNGNG
.NET Frameworkでアプリのローカライズをやっちゃうと、
他の開発環境に戻りたくなくなってしまいますた。
0282258NGNG
>>258の現象はvirtualをつけるとなるみたいです。
virtualをつけても大丈夫な方法はあるんでしょうか?
0283デフォルトの名無しさんNGNG
>>279
元々でかくなるプログラムを書いてるんで、メモリ消費量は気にならない。
むしろ今は、未知の言語を触っているという楽しさがあるので、
使い慣れてきたら気になってくるかもしれんけどね。
0284デフォルトの名無しさんNGNG
>>277
実行は早いね。
メモリーが気になるのも同意。
マイクロソフトがこれを主流にする気みたいだから、
これで行っても大丈夫だろうとは思う。
0285デフォルトの名無しさんNGNG
Cでやってるんですけど、MIDI再生ができませぇん。
コンパイルはできるけど、音がでない・・・OTZ

http://www.users.yun.co.jp/~studiowing/win32api/win-17.htm
ここの使ってるんですけど、何か注意する事とかありますか?
0286デフォルトの名無しさんNGNG
えらく大雑把なサンプルだなw
まあそれは良いとして、mciSendString の戻り値は確認したのか?
それなりのエラーコードが返ってるんじゃないか?
0287デフォルトの名無しさんNGNG
Windowsアプリケーションでコマンドライン引数を取得する処理を
自前でやってるので大変です。
main関数を使ったときのargc, argvみたいに
簡単に取り出せるAPIはないですか?
0288デフォルトの名無しさんNGNG
__argc __argvじゃいかんの?
0289デフォルトの名無しさんNGNG
>>288
おぉ。そういうのがあったのですか。
調べてみます。ありがとうございます。
0290デフォルトの名無しさんNGNG
__argc, __argvだっけ?
0291デフォルトの名無しさんNGNG
リロード忘れてた(鬱
0292デフォルトの名無しさんNGNG
>>290
うん。

>>291
(,,゚Д゚) ガンガレ!
029354NGNG
>>56-58
ありがとん。返事が遅くなってスマソ。

>>58さんのGDI+で問題解決しました。
ttp://www.kumei.ne.jp/c_lang/sdk4/sdk_336.htm
0294デフォルトの名無しさんNGNG
>>285
MIDIファイルの位置が悪いとか……
実行ファイルのあるフォルダにMIDIをおいて、VSを使わずに直接実行してみても駄目?
0295232NGNG
>>232です。
ビットマップを普通に表示するのは分かってきたのですが、
透過の仕方がわかりません。調べるとマスクとか書いてあるのですが分かりません。
以下のプログラムなら、どう発展させていけばいいのでしょうか。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1060403548&res=61&fi=no
0296232NGNG
>>295
すいません。ShowBitmap関数のStretchDIBitsの最後の引数を
dwRopに変更してください。

後、実はその変更を行った後、たまたま人(前景)のほうの引数を
SRCANDにしたら透過できてしまいました。
SRCANDは「論理 AND 演算子を使って、コピー元の色とコピー先の色を
組み合わせます。」らしいのですが、なぜ透過できたのでしょうか。
0297デフォルトの名無しさんNGNG
今日は、Charles Petzoldの刺青に萌えました・・・
ttp://www.charlespetzold.com/
0298232NGNG
すいません。>>295-296は人が黒のみだからうまく出来てたようです。
いろいろ調べていましたが分からないので、
1ピクセルずつ調べながら透過しない位置をGetPixelとかで
描画する方法でやってみます。お騒がせしました。
0299デフォルトの名無しさんNGNG
>>298
そこでなんで"たまたま"成功したかを追求すれば正解があるんだが。
0300232NGNG
>>299
自分はウィンドウズの基礎がなってないので難しいです。

一応>>298の方法で256色のはできました。
ただintのカウンタとforを使って普通にやっているので
表示するサイズが大きくなるとかなり遅そう。
0301デフォルトの名無しさんNGNG
>>298

1ピクセルずつやる、というのは妥当な方法だけど(マスク作るよりは楽)
それをやるならビットマップのメモリデバイスコンテキストに対してでは
なくDIBピクセル列に対して行うべきだね(DIBの操作は単純なメモリアク
セスなので、処理が圧倒的に早く正確)。

性能的には32ビットDIBで数百×数百ピクセルのビットマップを透過処理
しても、特に問題はない。
0302デフォルトの名無しさんNGNG
>>300
> ただintのカウンタとforを使って普通にやっているので
> 表示するサイズが大きくなるとかなり遅そう。

そういうもんです。
あとは、GetPixelみたいに1ピクセルごとに計算するのではなく、301さんが言うような方法で
メモリ上に展開することでループ計算や関数呼び出しのフィードバックを省略したり、
直接アセンブラをいじってMMXやSSEを呼び出し、数ピクセル分を一気に計算したりすることで
高速化を図ったりする。
0303デフォルトの名無しさんNGNG
斜体フォント文字の表示長方形領域を取得したいのですが、
DrawText(hDC, str, -1, &rect, DT_CALCRECT);
では、通常フォント文字の表示長方形領域を返してきます。

斜体フォント文字の表示長方形領域を正確に取得する方法をご存知の方、
教えていただけないでしょうか?
0304232NGNG
>>301>>302
以下を>>295のプログラムのStretchDIBitsを消して
その位置に加えれば透過描画が出来ます。(8ビットのみ)
透過の位置はビットマップの左上と同じ色の位置です。
どこを直すといいでしょうか。
if(bmpInfo->bmiHeader.biBitCount == 8) //256色ビットマップ
{
int i ;
int updw = bmpInfo->bmiHeader.biHeight > 0 ? 1 : -1; //up,downどっちの方式か
int sizeX = bmpInfo->bmiHeader.biWidth; //サイズx
int sizeY = abs(bmpInfo->bmiHeader.biHeight); //サイズy
int dot = sizeY * sizeX; //ドット数
int p; //パレットの種類
int x, y; //拡大をしない表示する位置
int x2, y2; //拡大の分
int touka = updw > 0 ? lpBMP[dot - sizeX] : lpBMP[0]; //透過する色のパレットの位置
for(i = 0; i < dot; i++)
{
p = lpBMP[i];
if(touka == p)continue; //透過する位置
x = (spotX + i % sizeX) * bairituX;
y = (updw > 0 ? spotY + sizeY - i / sizeY - 1 : spotY + i / sizeY) * bairituY;
for(x2 = 0; x2 < bairituX; x2++)for(y2 = 0; y2 < bairituY; y2++)
SetPixelV(hdc, x + x2, y + y2,
RGB(bmpInfo->bmiColors[p].rgbRed, bmpInfo->bmiColors[p].rgbGreen,
bmpInfo->bmiColors[p].rgbBlue)); }}
0305デフォルトの名無しさんNGNG
>>303
GetTextExtentPoint32はどう?
0306303NGNG
>>305
ダメでした。
DrawText(hDC, str, -1, &rect, DT_CALCRECT);
と同じ結果でした。
0307デフォルトの名無しさんNGNG
>>306
hDCにフォントの指定はしてあるよね…?
0308306NGNG
>>307
指定してます。
OldFont = (HFONT)SelectObject(g_mem.hSzDC, hfont);

ワードパッドで斜体文字を表示して、選択で色を反転した時にわかる領域サイズと
同サイズが返ってきていると思われます。
Win32APIでは、斜体文字の表示範囲を取得するのは無理なのでは?
と思いはじめています。
0309デフォルトの名無しさんNGNG
>> 308
私もやり方を知らない。
それらプラス tmOverhang が助けにならないのは知ってる。
GetCharABCWidths, GetCharWidth32, GetCharPlacement, GetGlyphOutline
あたりはためしてみた?
0310 ◆IGEMrmvKLI NGNG
VBからAPIをコールしています。
InternetConnectをコールしているのですが、そのあと、アプリケーション終了時に
応答が帰ってこなくなることがあります。
マシンによって違い、アプリケーション終了後、正常終了して普通に終わるマシンと
アプリケーション終了後、正常終了して、タスクに応答なしで残りつづけるもの。

InternetConnect関数コール直後、デバッカによる停止で上記事象が発生するので、
そのあたりだとは思うのですが、OSによっての違いでもないみたいですし。

環境は、VB6.0SP5
Window2000 SP4
です。

応答が帰ってこない事象は、今のところ、Win2kSP3とSP4で確認しています。
逆に、通常に終わる場合は、WinXP・Win2kSP3・SP4・WinNTなどで確認しています。

原因について、思い当たるような節のあるかた、いらっしゃいましたらご教示よろしくお願いします。
0311デフォルトの名無しさんNGNG
>>310
で、結局Win2kSP3・SP4ではどういう挙動を示すんだ?
0312310 ◆IGEMrmvKLI NGNG
すいません。解決しました。
Win2kSP3・SP4の場合、タスクマネージャーに応答なしアプリケーションとして、
30秒程度?居残りつづける状態でした。

原因ですが、FTPサーバへのログインにAnonymousを使用していると、
同様の事象が発生するようです。
ほかのユーザを切りなおしてそのユーザでログインすると、その事象は解決しました。

どうも、ご迷惑をおかけしました。
0313デフォルトの名無しさんNGNG
プロセスハンドルからプロセスIDって取れませんか?
ShellExecuteEXでプロセスハンドルしか帰ってこないんです。
0314デフォルトの名無しさんNGNG
>>313
GetProcessId()でいいんじゃないの。
XP sp1 以降なら。
0315デフォルトの名無しさんNGNG
>>313
CreateProcessを使うとプロセスIDを取得出来るねぇ。
0316デフォルトの名無しさんNGNG
>>313
GetWindowThreadProcessIdというのもあるよ。参考までに。
0317313NGNG
>>314
XP sp1以降ということは、それ以前では感嘆には取れないんでしょうか?

>>315
データファイルを関連付けアプリで起動したいので、ShellExecute(EX)が
いいんです。
CreateProcessだとEXE直接起動オンリーですよね。FindExecutableで
さがせますけど、openのほかにprintとか他のverbもサポートしないと
いけないかも、なのでレジストリ直読みして環境変数置き換えて・・・・
マンドクセ

>>316
それだとウィンドウハンドルがわかんないといけないですけど、
プロセスハンドルからそのプロセスのウィンドウハンドルって取れます?
プロセスIDが分かっているときにウィンドウハンドルをとるなら
EnumWindowsとGetWindowThreadProcessIdで出来るんですが・・・
そのプロセスIDがわからんわけです。
0318デフォルトの名無しさんNGNG
この辺が参考になるかな。

ttp://search.acty-net.ne.jp/mfc_search/archive/2001-1/msg03531.html

プロセスハンドルはシステム内で一意な値じゃないからそこから
プロセスIDを特定することは出来ないってことじゃないかな。

手間を惜しまないのなら、SetWindowsHookExかCreateRemoteThreadで
対象プロセスに自作のルーチンを進入させてGetCurrentProcessIdする手が
あるけど。
0319デフォルトの名無しさんNGNG
NtQueryInformationProcess
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/ntqueryinformationprocess.asp

Windows2000 と WindowsXP (SP適用前) の場合限定で使えるんでない?
WindowsXP SP1 以降は GetProcessId() を使う方向で。
WindowsMe 以前は諦め…
0320デフォルトの名無しさんNGNG
>>319
9xでは構造体を直接読むという荒業が使えると思われ
どうせ9xはdisconなのだから将来の互換性の問題は気にする必要ないし
0321デフォルトの名無しさんNGNG
キャレットの表示にCaret系使うのと自分でInvertRectとかで描くのと何が違うんですか?
0322デフォルトの名無しさんNGNG
CreateToolhelp32Snapshotでどう?
0323デフォルトの名無しさんNGNG
Taking a Snapshot and Viewing Processes
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/perfmon/base/taking_a_snapshot_and_viewing_processes.asp
0324デフォルトの名無しさんNGNG
で、便乗して質問なんだけど、SetWindowsHookExで全スレッドにフック取り付ける場合、
data_segとか使って全DLLで同じメモリ領域(HHOOKとか)を参照するようにしますよね?
でもそうすると、SetWindowsHookExを複数回呼ばれた場合に、
つまりSetWindowsHookExを含むDLLが複数のプロセスで呼び出された場合、
重複したフックが設定されてしまう可能性があります。

また、肝心のフック関数は処理結果を指定されたウィンドウハンドルに送るわけですが、
上記DLLを排他処理した場合、1つのウィンドウハンドルにしか送れなくなってしまいます。

これら問題を上手く解決する方法はないものでしょうか?

つまり、
SetWindowsHooExを呼び出す関数は、どのタイミングでどのプロセスから呼び出されても、
安全・確実に実行する事が出来き、かつその全ての呼び出し元が要求したウィンドウハンドルに、
全ての呼び出し元が開放を要求するまで、フック関数からのメッセージが確実に送信される、
というふうにしたいのです。
0325デフォルトの名無しさんNGNG
どっかでも以前議論してたが、フックハンドルを共有メモリ領域に置く必要は無かった筈
0326デフォルトの名無しさんNGNG
>>325
すみません。"フックハンドル 共有メモリ"でググってみましたが、見つかりませんでした。
共有メモリ領域を使わない方法とはどのようなものなのでしょうか?
0327デフォルトの名無しさんNGNG
http://pc.2ch.net/tech/kako/991/991576947.html
にそれらしきレスがありますが、
CallNextHookExにNULLを渡すというのはソースが見つかりませんでした。
0328デフォルトの名無しさんNGNG
>>325
それでも一応動くけど
CallNextHookExで正しいフックハンドルを渡さないと環境によってはシステム自体が著しく不調になる
0329324NGNG
現在のソースはこんな感じ:
HANDLE hMutex = NULL;

hMutex = ::CreateMutex( NULL, TRUE, SYSTEM_HOOK_MUTEX_NAME );
if ( hMutex == NULL ) {
// exception
}

if (::GetLastError() == ERROR_ALREADY_EXISTS) {
DWORDdwWaitResult;

dwWaitResult = ::WaitForSingleObject( hMutex, 1000 );

if (dwWaitResult != WAIT_OBJECT_0) {
// exception
}

}

g_hMouseHook = ::SetWindowsHookEx(
WH_MOUSE,
(HOOKPROC)g_MouseProc,
hinstDLL,
0
);

if (g_hMouseHook == NULL) {
// exception
}

::ReleaseMutex( hMutex );
0330デフォルトの名無しさんNGNG
>>329を見たら腹が痛くなってきた
0331デフォルトの名無しさんNGNG
俺はどっちかっていうと腹が減ってきた
0332デフォルトの名無しさんNGNG
俺なんて最近腹が出てきた
0333デフォルトの名無しさんNGNG
つまんねーレスに腹がたってきた
0334デフォルトの名無しさんNGNG
はらたいらさんに1000点
0335デフォルトの名無しさんNGNG
同じグローバルフックを複数使う理由がわからん
0336324NGNG
>>335
フックを使用するプログラムが、
ユーザ意思によって多重起動される可能性がある場合。
0337デフォルトの名無しさんNGNG
>>336
その場合フックハンドルを共有したらまずいじゃないか
0338デフォルトの名無しさんNGNG
>>337
RegisterWindowMessageをしてブロードキャストするか、
ウィンドウハンドルだけ配列にしようかと・・・

もっと良い方法ありますか?
0339デフォルトの名無しさんNGNG
根本的に勘違いしているな。
SetWindowsHookExの第4引数を0にした場合は、起動中の全てのスレッドに
フックをかけるだけでなく、SetWindowsHookEx呼び出し後に起動したスレッドに
対しても、システムが勝手にフックをかけてくれるようになる。
あなたが考えるべきことは、多重起動されたときにSetWindowsHookExを
複数回呼び出すことではなく、多重起動されても1回しか呼び出さないことだ。
0340デフォルトの名無しさんNGNG
書きかけで送信しちゃった、スマン。
要するにこういう風にすりゃいいだろ、って事だ。

HHOOK g_hMouseHook = NULL;


HANDLE hMutex = NULL;
hMutex = ::CreateMutex( NULL, TRUE, SYSTEM_HOOK_MUTEX_NAME );
if ( hMutex == NULL ) {
// exception
}

if (g_hMouseHook == NULL) {
g_hMouseHook = ::SetWindowsHookEx(
WH_MOUSE,
(HOOKPROC)g_MouseProc,
hinstDLL,
0
);

if (g_hMouseHook == NULL) {
// exception
}
}
::ReleaseMutex( hMutex );
0341デフォルトの名無しさんNGNG
多重起動しても一回しかSetWindowsHookExしないように
Mutex用意してあるんでしょ?











ってことで解決なのかそうでないのかはよく知りません
0342デフォルトの名無しさんNGNG
>>341
ソースをよく読め。
Mutexの作成に失敗した場合でもエラーコードがERROR_ALREADY_EXISTSの
場合(Mutexをすでに作成済みというエラー)はSetWindowsHookExの呼び出しに
行っちゃってるだろ。
0343313NGNG
>>318-320
むう、わかりましら。
レジストリ直読みでなんとなく出来てるんですが、APIがあるならそっちで
逝ってみます。
0344デフォルトの名無しさんNGNG
>>342
ソースうんぬん言う前に投稿時間をみろよ
0345デフォルトの名無しさんNGNG
>>344
342じゃなくて329のことだよ。
0346デフォルトの名無しさんNGNG
>>343
9xでもパフォーマンスデータのレジストリってあったっけ?
0347デフォルトの名無しさんNGNG
>342
WaitForSingleObject

>324
とりあえず SetWindowsHookEx() を呼ぶ関数は DLL 内にあるという解釈でいい?
で、>339 の言うとおり SetWindowsHookEx() 自体は全体で 1回だけ呼べばいい。
後は、>338 で自分でもいってる通り、呼び出し元のウィンドウハンドルの管理をする。
登録関数で追加、解放関数で削除、フック内部ではリストを見ながらメッセージ送信すれば OK かと。
0348デフォルトの名無しさんNGNG
>>339-342
SetWindowsHookEx自体は1回だけ呼び出すようにするつもりです。
元のソースは書きかけだったもので・・・お手数おかけしました。

>>347

こんな感じでいいんでしょうか?

bool g_InstallHook( HMODULE hModule, HWND hwndNew ) {
HANDLEhMutex = NULL;
boolresult;

hMutex = ::CreateMutex( NULL, TRUE, SYSTEM_HOOK_MUTEX_NAME );
if ( hMutex == NULL ) return false;// fatal error

if (::GetLastError() == ERROR_ALREADY_EXISTS) {
DWORDdwWaitResult;

dwWaitResult = ::WaitForSingleObject( hMutex, 1000 );

if (dwWaitResult != WAIT_OBJECT_0) return false;// fatal timeout

}

if (g_hMouseHook == NULL) {
g_hMouseHook = (HHOOK)::SetWindowsHookEx(
WH_MOUSE, (HOOKPROC)g_MouseProc, hModule, 0
);
}
0349デフォルトの名無しさんNGNG
if (g_hMouseHook == NULL) result=false;// hook failed
else {
HWND*newWndList = NULL;

newWndList = (HWND*)GlobalAlloc( 0, sizeof(HWND)*(g_WndCount+1) );

if (newWndList == NULL) result=false;// hook succeeded even here
else {

CopyMemory( newWndList, g_WndList, sizeof(HWND)*g_WndCount );

newWndList[g_WndCount] = hwndNew;

g_WndList = newWndList;

result=true;
}
}

::CloseHandle( hMutex );

return result;
}
0350デフォルトの名無しさんNGNG
C#からW32APIって呼べますか?
0351デフォルトの名無しさんNGNG
呼べます
0352デフォルトの名無しさんNGNG
ありがとうございます。呼べると分かればあとはどうにか調べます。
0353デフォルトの名無しさんNGNG
>>348
・g_WndCount のインクリメントが抜けてる
・GlobalAlloc で確保したメモリはプロセス間共有されないのでフック内で使えない。
 共有領域に固定長で確保するか、FileMapping を使う。
 ただし、FileMapping 使うとプロセスごとに MapViewOfFile しなきゃいけないし、
 本当に動的にするのはかなり厳しいと思われ。不可能じゃないとは思うけど。
 適当に最大値決めて仕様にするのはどうよ?

後、個人的には毎回毎回動的メモリの拡張をやるのはあまり好きじゃないがその辺は趣味の問題だな。
0354デフォルトの名無しさんNGNG
>>353
レスありがとう。
こんな感じにしますた。
ウィンドウへの通知はブロードキャストに。


if (g_hMouseHook == NULL) result=false;// hook failed
else g_WndCount++;

::CloseHandle( hMutex );

return result;
}
0355デフォルトの名無しさんNGNG
bool g_UnInstallHook( HWND hwnd ) {
HANDLEhMutex = NULL;

hMutex = ::CreateMutex( NULL, TRUE, SYSTEM_HOOK_MUTEX_NAME );
if ( hMutex == NULL ) return false;// fatal error

if (::GetLastError() == ERROR_ALREADY_EXISTS) {
g_InstallHookと同じなので略
}

g_WndCount--;

if (g_WndCount <= 0) {

::UnhookWindowsHookEx( g_hMouseHook );

g_hMouseHook = NULL;
}

::CloseHandle( hMutex );

}
0356デフォルトの名無しさんNGNG
CreateProcessWithLogonW で起動した子プロセスの標準入出力を
親プロセスのパイプにつなげてやりたいのですが、CreateProcess の
bInheritHandles に相当するものがないので、パイプハンドルを継承
させることができません。
なにかうまい方法はないもんでしょうか。
対象OSは2000以降です。
0357デフォルトの名無しさんNGNG
>>354
もはや API の話でもなんでもないが、デクリメント前に g_WndCount が 0 以下なら即 return した方が
安全なんじゃないだろうか。
基本的にないケースだとは言え、UnhookWindowsHookEx() に NULL 渡しても大丈夫だろうかとか
余計な不安が消える。
0358デフォルトの名無しさんNGNG
CreateProcessAsUserでも使えば?
0359デフォルトの名無しさんNGNG
あるソフトのWS_POPUPスタイルのウインドウをタイトルバー付きのウインドウに変更したいのですが
SetWindowLongは他のプロセスのウインドウに使えないので、他に何かいい方法はないでしょうか?
検索してもフックする方法しか見つからないのですが、他に方法無いですかね?
スクリプト言語使ってるので、DLL作るのは面倒なんです。
0360デフォルトの名無しさんNGNG
まずはSetWindowLongに関する認識を改めたほうが良い
0361356NGNG
>>358
すいません。親プロセスは一般プロセスなので LogonUser が使えないんです。
0362デフォルトの名無しさんNGNG
>>361
CreateProcessWithLogonWを使ったとき実際に子プロセスを
起動しているのはRunAsサービスなのでどうしようもない
0363デフォルトの名無しさんNGNG
>>357
了解しました。
よく考えたらg_UnInstallを複数回呼び出した後で、
g_Installとg_UnInstallの組み合わせを複数回呼び出すと・・・
0364デフォルトの名無しさんNGNG
>>360
どういうことですか?
0365デフォルトの名無しさんNGNG
ドラッグ&ドロップハンドル用のHDROPがMSDNに書かれておらず、MinGWのヘッダにも無いのですが
HANDLE型で代用してよいのでしょうか?
猫によると実体は同じ物のようなのですが・・・。http://www.kumei.ne.jp/c_lang/sdk2/sdk_105.htm
0366デフォルトの名無しさんNGNG
>>365
少なくとも、Platform SDK Documentationには書いてありました。>HDROP
0367デフォルトの名無しさんNGNG
>>366
ありがとうございます。
shellapi.hの中を捜してみるとMinGW側でもちゃんと宣言されていました。
自分の書いたコード側の問題のようなのでそちら側で調べてみます。
0368デフォルトの名無しさんNGNG
原因がわかりました。Cの原則を忘れてswitch〜case内で変数宣言してましたorz
0369デフォルトの名無しさんNGNG
Cでも{}で括れば変数宣言できるだろ。
0370デフォルトの名無しさんNGNG
コンソールアプリでBASICで言うところのLOCATEに相当するAPIって何でしたっけ?
なんか有ったと思いましたが再発見できず・・・。
0371デフォルトの名無しさんNGNG
SetConsoleCursorPosition?
0372デフォルトの名無しさんNGNG
与えられた文字列がフォルダかファイルへの形式的に正確なパスかどうかを判定するのはどうやりますか?
0373デフォルトの名無しさんNGNG
>>371
ですね、有難うございました。
そーか、猫のページで見たんだ。
0374デフォルトの名無しさんNGNG
>>372
そんなAPIあったな。
0375デフォルトの名無しさんNGNG
Path〜系のであったと思う。
0376デフォルトの名無しさんNGNG
>>372
MASAPICOでぐぐれ
0377デフォルトの名無しさんNGNG
win32アプリでWinMainでreturn msg.wParamと終了するのではなく、
他の潜り先でGetMessageの戻り値が0以下の時にexit(msg.wParam);
ではダメなのでしょうか。
0378377NGNG
>>377
すいません。自己解決しました。
0379デフォルトの名無しさんNGNG
フォントについて教えてください。
以下のようにコーディングしているのですが
出力されるフォントが普通の明朝体のようなフォントで
出力されてしまいます。どこがまずいのでしょうか?

hFont = CreateFont(25,
0,
0,
0,
FW_BOLD,
FALSE,
FALSE,
0,
SHIFTJIS_CHARSET,
OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY,
DEFAULT_PITCH,
"Comic Sans MS");
0380デフォルトの名無しさんNGNG
明朝体になったのはもしや全角文字?
0381379NGNG
>>380
半角文字です。出力はTextOutで行っています。
0382デフォルトの名無しさんNGNG
とりあえず、気になったのは
CharSetをANSI_CHARSETにしてないのと、
ちゃんとDCに関連付けてるかどうか
0383379NGNG
>>382
べりーさんくすです。
ANSI_CHARSETにしたら丸っこい字になりました。
ほんとうにありがとうございました。
0384デフォルトの名無しさんNGNG
自分でパラメータを組み立てないでEnumFontFamiliesExで
帰ってきたものをCreateFontIndirectに渡すか
GetStockObjectを使うのが鉄則
どうしても自分で組み立てる必要があるときは
フォント名よりcharsetの指定のほうが優先度が高いことを
押さえとけ
0385デフォルトの名無しさんNGNG
一歩遅かった_| ̄|○
0386379NGNG
>>384
なるほどー
勉強します。
0387デフォルトの名無しさんNGNG
はじめまして。
任意のフォルダをクリックするとそのフルパスを表示するようなものを
作りたいと思っています。
フックをかけて処理を行おうと思っているのですが、
肝心のフルパスを取得する方法が分かりません。
何かよい方法がありましたらよろしくご教授お願いします。

0388デフォルトの名無しさんNGNG
> 任意のフォルダをクリックする

「フォルダをクリック」の意味が不明
0389デフォルトの名無しさんNGNG
>>387
explorer.exeの各フォルダウィンドウで、
ファイル・フォルダを表示しているSysListViewで
WM_LBUTTONDOWNが発生した時に、
カーソルの下にあるファイルのパスを表示したいって事?
0390387NGNG
文章が分かりにくくてすみませんでした。
389さんの通りです。
0391デフォルトの名無しさんNGNG
"フォルダアイコンにマウスカーソルを合わせるとフルパスを表示する"
ならShell Extension書けば終わると思うが。
0392デフォルトの名無しさんNGNG
そもそも表示すると言ってもどこに表示するのやら。
0393デフォルトの名無しさんNGNG
Explorerのオプションでタイトルバーに表示できますね。win2000
0394387NGNG
Shell Extensionですね。
知らない言葉なので調べてきます。
ありがとうございました。

0395デフォルトの名無しさんNGNG
マウスでサイズ変更可能な子ウィンドウがあり、
親ウィンドウより大きなサイズにまで変更可能にしたいのですが、
どのようにしたら良いのでしょうか?

WM_GETMINMAXINFO で ptMaxSize と ptMaxTrackSize に大きな値を設定しても
サイズ変更枠のドラッグ中に、
親ウィンドウの外までカーソルを移動させることがでませんでした。

よろしく願いします。
0396デフォルトの名無しさんNGNG
>>395
ウィンドウスタイルを見直してみな。
0397デフォルトの名無しさんNGNG
>>396
解答ありがとうございます。

早速、Spy++で親ウインドウの外まで広げられるウインドウと
広げられないウインドウのスタイルを
比較しようと思ったのですが、
手元にあるアプリケーション(DF,VC6等)は全て広げられず、比較することができませんでした。

MSDNを見ても、それらしいスタイルが見つからないのですが、
具体的にどのスタイルが必要なのか教えて頂けないでしょうか?
0398デフォルトの名無しさんNGNG
>>397
CreateWindowでどんな指定をしているか見せて
0399デフォルトの名無しさんNGNG
ポップアップウィンドウ>>(超えられない壁)>>チャイルドウィンドウ
0400395NGNG
>>398
HWND hWnd=CreateWindow(
  szWindowClass, szTitle, WS_CHILD | WS_SIZEBOX | WS_VISIBLE,
  100, 100, 100, 100, hWndParent, NULL, hInstance, NULL);

各変数は VC7.1 の Win32 プロジェクトウィザードで作成された物をそのまま使用しています。

>>399
子ウィンドウが必要なのでWS_POPUPを付けるわけにはいかないんです。
0401デフォルトの名無しさんNGNG
>>400
WS_CHILDを外すしかない。
0402デフォルトの名無しさんNGNG
WS_CHILDをつけなければいいだけで、
子ウインドウに出来ないというわけではない。
それとも、WS_CHILDが必要なの?
0403デフォルトの名無しさんNGNG
メインのウィンドウとWS_CHILDではない子ウィンドウがあるとして、
例えばモーダルなダイアログボックスを表示したときに、
子ウィンドウがEnableなままというような事は発生するんだが、
こういうのはどうにでもなるしなあ。。。なんだろ?
0404デフォルトの名無しさんNGNG
割り込んで申し訳ないが、質問させてくれ。
「画面のプロパティ」ダイアログの「デザイン」タブみたいな事をしたいんだけど、
やはり、GetSysColorとかGetThemeとか使って、ちまちまやるしかないの?
それとも便利な関数とかある?
0405デフォルトの名無しさんNGNG
DrawFrameControlとか?
0406デフォルトの名無しさんNGNG
>>405
確かにボタン類やスクロールバーはそれで良いんですが、
それだと、タイトルバー等が描画できなくないですか?

また、XPのビジュアルスタイルにも対応したいのですが、
GetTheme等を用いなくても、たとえばウィンドウスタイルだけ渡したら、
その通りに描画してくれる関数・・・なんてのは無いですか?
0407デフォルトの名無しさんNGNG
uxtheme(.dll)でMSDN調べる
0408404NGNG
>>407
いや、ビジュアルスタイルの場合は、
各種関数用意されてて簡単なんだよ・・・

問題は、2000とか9x系での話で、
DrawEdgeやらDrawCaptionやら使うしか無いのか・・・と。
0409デフォルトの名無しさんNGNG
特定のネットワークアダプタのIPアドレス等の値を
設定するAPIを探しているのですが、探し方が
悪いようで一向に見つかりません。

どなたかご存じないですか?
よろしくお願いします。
0410404NGNG
http://hp.vector.co.jp/authors/VA020801/lnkpg/sample/drwnd.txt
こんなの見つけた・・・
0411デフォルトの名無しさんNGNG
正規の方法では設定を調べつつDrawCaptionだのを組み合わせるしかないだろうな
あとはサブクラス化あたりでOSにむりやり描画させるか
0412デフォルトの名無しさんNGNG
>>402-403
WS_CHILDを持たないウィンドウは「所有されたウィンドウ」であって
「子ウィンドウ」ではない(少なくともMSDNの定義では)。
0413デフォルトの名無しさんNGNG
リッチエディットコントロールの行間を詰める方法を教えていただきたいのですが、

「こんな風に

行間が空いて

表示されて

みっともないので...」

よろしくお願いします。
0414myPrintf() userNGNG
Edit_ReplaceSel() でC文字列を送り込んだことしかないが、
どうやって表示しているかがわからないと...
0415413NGNG
>>414
エディットコントロールは指定したフォントの高さ=行の高さで処理されるのですが、
リッチエディットコントロールで同じフォントを使用した場合、
フォントの上下に少し隙間ができて>>413のように表示されてしまいます。
CHARFORMAT以外にもいろいろ指定しないと駄目なのでしょうか?
0416デフォルトの名無しさんNGNG
行間は設定できないはず。
0417デフォルトの名無しさんNGNG
スレの趣旨とは少し外れるかもしれませんが質問させてください。
ダイアログやメニューはリソーススクリプトを書いて読み込ませることも、自分でCreateWindow(Ex)でガリガリ書く事も出来ますよね。
コンパイル後に外部からResourceHacker等でいじりやすくしようと思うとこれらを極力リソーススクリプトに追い出すべきかと
思っているのですが、保守性等の面でどちらが有利なのかは経験が浅いので良く分かっていません。

皆さんはこの二つの方法をどのように使い分けてらっしゃるんでしょうか?
0418デフォルトの名無しさんNGNG
>>417
ダイアログエディタ使わないの?
rc変更するだけで配置を変えられるので、rcのほうがお手軽でしょ。
0419デフォルトの名無しさんNGNG
>>418
使ってないんです。。多国語対応等も考えるとやはりリソーススクリプトに追い出した方がよさそうですね。
ありがとうございます。
0420デフォルトの名無しさんNGNG
>>417

配置する部品が多い、特にボタンやテキストボックスなどをグリッド状
に配置するような場合は自分でCreateWindowする。こうしておけば、配置
処理を書き換えるだけで簡単に配置を変更できる上に動的な位置・サイズ
変更もやりやすいからね。
0421デフォルトの名無しさんNGNG
>>411
非表示ウィンドウを作ってWM_PRINTでOSに書かせるのが簡単では?
0422デフォルトの名無しさんNGNG
>>413
Win98のrichedit32.dllをコピーすると詰まります
検索すると配布しているサイトも見つかったはずです
0423413NGNG
>>422
有難うございます、見事に詰まりました。感謝です。

0424デフォルトの名無しさんNGNG
C++でWin32APIプログラミングをする際にはどのような事に気をつけるべきですか?
0425デフォルトの名無しさんNGNG
くだらない質問をしないように気をつけるべき。
0426デフォルトの名無しさんNGNG
>>425
くだらねーレス付けてんじゃねーよ、市ねボケ!
0427デフォルトの名無しさんNGNG
くだらない煽りをしないように気をつけるべき。
0428デフォルトの名無しさんNGNG
>>424
ウィンドウプロシージャとしてメンバ関数を登録したい
というFAQ中のFAQを質問しないこと。
0429デフォルトの名無しさんNGNG
CMyWindowClass::WndProcをウィンドウプロシージャにしたいんですが、どうしたらいいんですか?
0430デフォルトの名無しさんNGNG
VC6でダイアログベースのアプリを作っています。
どのコントロールにフォーカスが移っても
IMEの入力モードを直接入力に強制的に固定したいのですが
どのようにすれば実現できますか?

また似たような質問になりますが、全角モードで入力されてもIMEを通さずに直接入力されたように
扱いたいのですが、どのようにすればよいでしょうか?

よろしくお願いします。
0431デフォルトの名無しさんNGNG
IME操作のAPIをチェックしてから言え馬鹿
0432デフォルトの名無しさんNGNG
コンボボックスの入力エリアに入力されたキーメッセージを
感知・処理するため、処理の行き掛り上、コンボボックスの
CB_GETDROPPEDSTATEがきた時に次の関数を呼び出していますが
いまいち不安定です。
どうすればよろしいでしょうか?

void func(){  
 MSG   msg;
 HWND ComboEditHandle = ::GetWindow(ComboHandle,GW_CHILD);
 if(ComboEditHandle==NULL)
    return;
 ::GetMessage(&msg,ComboEditHandle,0,0);

  switch(LOWORD(msg.wParam)){
    case VK_RETURN:
       ::SendMessage(ComboHandle,WM_KEYDOWN,VK_RETURN,0);
       break;
    case VK_LEFT:
       ::SendMessage(ComboHandle,WM_KEYDOWN,VK_LEFT,0);
       break;
    case VK_RIGHT:
       ::SendMessage(ComboHandle,WM_KEYDOWN,VK_RIGHT,0);
       break;
    case VK_UP:
       ::SendMessage(ComboHandle,WM_KEYDOWN,VK_UP,0);
       break;
    case VK_DOWN:
       ::SendMessage(ComboHandle,WM_KEYDOWN,VK_DOWN,0);
       break;
 }
}
0433デフォルトの名無しさんNGNG
>>432
サブクラス化してるの?
0434デフォルトの名無しさんNGNG
ちょっと根本的なことで疑問に思ったんだけど、
APIを呼び出すって事は各APIごとに決められたアドレスにジャンプさせること
っていう認識でいい?
API群は起動時に全てメモリに読み込まれるのかな。
0435デフォルトの名無しさんNGNG
お前沢村だろ?
0436デフォルトの名無しさんNGNG
Win32 APIの実体は単なるDLLからexportされた関数。
それ以上でもそれ以下でもない。
0437デフォルトの名無しさんNGNG
VBのプロパティ入力コントロールの作るには、どのAPIを利用すればよいのでしょうか?
HTMLのタグエディタを予定しています。
0438デフォルトの名無しさんNGNG
>>437
いっぱい
0439デフォルトの名無しさんNGNG
>>438
いやいや・・・、微妙に突っ込み方がわからなくてすみません。
0440デフォルトの名無しさんNGNG
>>437
CreateWindow()
0441デフォルトの名無しさんNGNG
特定のソフトのメモリを書き換えるソフトを作っているのですが、
"WriteProcessMemory"のアドレスと書き換えるデータの型指定が分かりません。
プロセスの取得までは出来たのですが、どうにも分かりません。
どうか教えてもらえませんでしょうか?
0442myPrintf() userNGNG
>>422-423
「猫でもわかる...」の説明通りにやっていると、win98 VC++ 6.0 で作った
application で、winXP でも、行間は詰まって表示されているが、これは
どういうことかなあ。フォント設定とか付けてレジストリ記憶です。
0443デフォルトの名無しさんNGNG
>>409
もしかして、これって不可能なのでしょうか?
0444デフォルトの名無しさんNGNG
>>443
GetAdaptersInfo
0445デフォルトの名無しさんNGNG
>>440
そうではなくて・・・
VBで開発するときに使う、プロパティ設定が出来るコントロールを作りたいのです。
0446デフォルトの名無しさんNGNG
>>445
だから自分でちまちま既存のコントロール組み合わせて作れっていわれてんだろ。
0447デフォルトの名無しさんNGNG
WC_LISTVIEWを指定しろ
てかここのアマグラマは使えないな
0448デフォルトの名無しさんNGNG
>>445
COM ATL ActiveX

あたりでググってみな。
多分途中でやる気が萎えると思うが。
0449デフォルトの名無しさんNGNG
>>447
> WC_LISTVIEWを指定しろ
それはCreateWindow()を使えってことだろうが
0450デフォルトの名無しさんNGNG
CreateWindowじゃぐぐれもしないだろ
質問に対する解決になってないな
0451デフォルトの名無しさんNGNG
>>450
なに言ってんのあんた?
あんた445?
CreateWindowでググれなんて誰も言ってないぞ。
キーワードは COM ATL ActiveX だ。
とってもややこしい話だからここでかいつまんで説明するって訳にはいかないんだよ。
だからググれといってるの。
上のキーワードの意味が理解できなてなきゃVBのコントロールは作れない。
CreateWindow以前の問題なんだよ。
0452デフォルトの名無しさんNGNG
エディタ作るのにそんなのいらねーだろw
0453413NGNG
>>442
それが解からないんですよね。
自分のPCにWin98用のriched32.dllが無くても、
行間が詰まって表示されているソフトがあったので疑問に思っていました。
そういうのはどうなんでしょうね?組み込みなのか、独自にラップしたものか...

ググってみて、OSによってdllが異なる動作をするのは解かりました。
(当方Win2000)
0454デフォルトの名無しさんNGNG
>>444
それって、取得だけじゃなくて設定もできるんですか?
0455デフォルトの名無しさんNGNG
画面は16bit〜32bitの環境でパレットアニメーションは出来ません。
なので8bit以下のオフスクリーンビットマップを使って、
パレットアニメーションをしようと思うんですが、やり方がまずいのか
失敗してしまいます。

いろんなサイト見て回ったんですが、
画面のシステムパレットをアニメートする方法しか、
見つけられませんでした。

オフスクリーンのビットマップのパレットを使って
GDI関数だけでパレットアニメーションさせる事は、
そもそも可能なのでしょうか? 漏れ、不可能な事やってます?
0456デフォルトの名無しさんNGNG
>>455
可能です。
0457デフォルトの名無しさんNGNG
>>456
って事は漏れのやり方が悪いんですね。
いろいろ試してみます。
どうもありがとう。
0458455NGNG
CreateDIBSection で返る HBITMAP を
SelectObject した HDC では
SetPaletteEntries&RealizePaletteを使った
パレットの変更は出来ないみたいなんですが、
他のやり方など、有りますか?
0459デフォルトの名無しさんNGNG
手でやったほうが早い/速い気がせんでもない
0460デフォルトの名無しさんNGNG
ウィンドウを複数作りたいのですが、どうもうまくいきません。
ボタンが押されたら、新しいウィンドウを表示させたいのですが、
どのようにしたらよいのでしょう。
0461デフォルトの名無しさんNGNG
>>458

8ビットDIB/DIBSectionならカラーテーブルを書き換えるだけ。
システムのパレットは関係ないよw
0462デフォルトの名無しさんNGNG
>>460
WM_KEYDOWNとかWM_LBUTTONDOWNとかでCreateWindow
0463460NGNG
>>462
WNDCLASSを作るときで引っかかっています
インスタンスとかはどんなやってつくればいいのでしょうか?
0464デフォルトの名無しさんNGNG
DIBSECTION 構造体に BITMAPINFOHEADER がメンバーとして入ってますが、
このメンバーが BITMAPV4HEADER や BITMAPV5HEADER になることはある
んでしょうか。

BITMAPV[45]HEADER を渡して CreateDIBSection() しても、できあがった
DIBSECTION 内では BITMAPINFOHEADER ?
0465デフォルトの名無しさんNGNG
>>463
>作るときで
>どんなやってつくれば
日本語を勉強しましょう。
0466デフォルトの名無しさんNGNG
>>463
WNDCLASS作んなくていいから、
とりあえず、"EDIT"とかで作ってみろ。

それで出来たら、今度はクリックとか考えずに
オリジナルのWNDCLASSを持つウインドウを作ってみる。

今度はそれの応用だ、簡単だろ?
0467460NGNG
>>466
コントロールを作るのではなく、ウィンドウを作ろうと思っています。

ウィンドウごとに別のプロシージャを使いたいので、
WNDCLASSを新しく作るしかないと思ったんですが、ほかに方法があったりするのでしょうか?
0468デフォルトの名無しさんNGNG
>>467
知ってるよ。
コントロールを作るのは練習だ、練習。
エディットコントロールは、EDITという名で
WNDCLASSが登録されてるの。
0469460NGNG
サブクラス化しようとしたができませんでしたが、
なんとなくで新しく作るWNDCLASSのhInstanceに
メインのウィンドウのインスタンスと同じものをいれたら普通に通りました
ご迷惑をおかけしてすみませんでした^^
0470デフォルトの名無しさんNGNG
こういうやつっていったい何を資料にしてるんだろw
0471404NGNG
結局、WS_CHILDで子ウィンドウ作る事にしました。
とっても簡単・確実。
0472デフォルトの名無しさんNGNG
Windowsタスクマネージャーのアプリケーションのところに
作ったアプリケーションを表示させないようにするにはどのWSを
消せばいいの?
0473デフォルトの名無しさんNGNG
WS_EX_TOOLWINDOWだっけな。
0474デフォルトの名無しさんNGNG
物凄い黄金アマグラマ群が湧いてるようだな
0475デフォルトの名無しさんNGNG
まだ表示されるんですけど
0476デフォルトの名無しさんNGNG
>>475 ウィンドウスタイルに「追加」
0477デフォルトの名無しさんNGNG
>>474
春だからね。
0478デフォルトの名無しさんNGNG
>>477
GWだからだと思う。
0479デフォルトの名無しさんNGNG
>>472はタスクマネージャから消したいんだろ?少なくとも俺はどうすればいいか分からない。
サービスにしてsvchostあたりから動かせば可能かもしれないが方法によってはそれでも見れる。
0480デフォルトの名無しさんNGNG
>>479
「アプリケーション」タブに非表示 == タスクバーに非表示
「プロセス」タブじゃない。
0481デフォルトの名無しさんNGNG
そもそも、見えないようにする意図がいまいちピンと来ないんだが。
0482デフォルトの名無しさんNGNG
>>481 愚か者
0483デフォルトの名無しさんNGNG
今までプログラムしたことない新人さんも大量に発生しているからな。
俺も、初GWはプログラミングの勉強に費やした。
0484デフォルトの名無しさんNGNG
>>483
0485デフォルトの名無しさんNGNG
大量の学生をウォッチ出来るスレはここですか?
0486デフォルトの名無しさんNGNG
>>481
典型的にはタスクトレイ常駐型アプリだろ。
ついでに非表示ウィンドウを親にするという手もある。
0487デフォルトの名無しさんNGNG
なんか、ぐだぐだだな。
0488デフォルトの名無しさんNGNG
タスクマネージャとタスクバーの区別がつかない奴がいるスレはここですか?
0489デフォルトの名無しさんNGNG
bigenPaintでヘアカラーする奴がいるスレはここですか?
0490デフォルトの名無しさんNGNG
もともとそんなにレベルが高いスレじゃなかっただろ
それとも叩いてるほうも学生なのか?
0491デフォルトの名無しさんNGNG
>>488
それはお前だけ
0492デフォルトの名無しさんNGNG
>>489
いやそれはここじゃないって
0493デフォルトの名無しさんNGNG
>>492
>>240
0494デフォルトの名無しさんNGNG
部屋カラー?
0495デフォルトの名無しさんNGNG
ちがう
0496デフォルトの名無しさんNGNG
タスクトレイ常駐型でもタスクマネージャのアプリケーションタブのとこに
出る奴と出ない奴があるけど、あれは何が違うん?
0497496NGNG
あ、今自分でわかったからいいや。今のなし
0498デフォルトの名無しさんNGNG
>>497
そういう情報は横展開しましょう。
0499デフォルトの名無しさんNGNG
DIB をクリップボードにコピーしようとしています。
下のようなコードを書いたのですが、クリップボードにコピーされた画像がズレてしまい、
しかもコピーした後でアプリが終了させられてしまいます。

修正方法を教えてください。

hMem = GlobalAlloc(GHND, sizeof(BITMAPINFO) + Bi.biSizeImage);
hGlobal = (LPBYTE)GlobalLock(hMem);

lpBitmapInfo = (LPBITMAPINFO) hGlobal;
lpBitmapInfo ->bmiHeader = Bi;
lpBitmapInfo ->bmiColors->rgbBlue= 0;
lpBitmapInfo ->bmiColors->rgbGreen= 0;
lpBitmapInfo ->bmiColors->rgbRed= 0;
lpBitmapInfo ->bmiColors->rgbReserved= 0;

memcpy(lpBitmapInfo + sizeof(BITMAPINFO), image, Bi.biSizeImage);
GlobalUnlock(hMem);
OpenClipboard(hWnd);
EmptyClipboard();
SetClipboardData(CF_DIB, hMem);
CloseClipboard();
0500デフォルトの名無しさんNGNG
lpBitmapInfo + sizeof(BITMAPINFO)
↓
lpBitmapInfo + 1 もしくは hGlobal + sizeof(BITMAPINFO)
0501499NGNG
>>500
ありがとうございました。そんなところだったとは。
で、今度は色がおかしくなったんですが、
lpBitmapInfo ->bmiColors->rgbBlue= 0;
lpBitmapInfo ->bmiColors->rgbGreen= 0;
lpBitmapInfo ->bmiColors->rgbRed= 0;
lpBitmapInfo ->bmiColors->rgbReserved= 0;
は、あってますか?
0502デフォルトの名無しさんNGNG
>>501
パレットを使わないのなら、BITMAPINFOじゃなくてBITMAPINFOHEADERを使え。
0503デフォルトの名無しさんNGNG
>>498
俺も知りたい。教えてください>>496
0504499NGNG
>>502
BITMAPINFOHEADER でうまくいきました。
ありがとうございます。

ところで、msdn には、
クリップボードの中身として、 CF_DIB を指定するときは
BITMAPINFO + ビットマップを中身にしろと書いてありますが、
いいんでしょうか?
0505デフォルトの名無しさんNGNG
BITMAPINFO⊃BITMAPINFOHEADER

本来はBITMAPINFOのbmiColorsは[0]なんだけど、
C89の仕様によってサイズ0の配列が作れないから[1]となってるだけ。
パレットを使う場合は、必要に応じて動的確保でサイズを拡張するの。
0506デフォルトの名無しさんNGNG
ものすごい問題外な質問かもしれませんが
関数名で検索して出てくるページにあるやつを
コピペするだけでその関数使えますか?
いまいち。何とかの値とか言われてもどうやって入れたり。。その関数呼び出したりするかわからない・・・
0507デフォルトの名無しさんNGNG
>>506
一つ言っておくことがある。

分らない物を使うな
0508デフォルトの名無しさんNGNG
ここまでくると逆におもしろい。
ウチの新入社員だったら笑えないけど。
0509野次馬NGNG
>>507-508
分からずに使って、バグが出たらどうするんでしょ。
楽しみ。ホント。
0510デフォルトの名無しさんNGNG
>>506
http://msdn.microsoft.com/library/読むか
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/を入れて同梱のドキュメント嫁

0511デフォルトの名無しさんNGNG
GetSaveFileName()
で、保存するファイル名を取得して、
CopyFile()
で一時ファイルを保存したいのですが、

GetSaveFileName()
でディレクトリを移動させると、ファイルが保存されなくなります。
なぜでしょう。
0512デフォルトの名無しさんNGNG
はらたいらに3千点
0513デフォルトの名無しさんNGNG
>>511
何故って言われても普通はありえないので、動作しないコードをあげるべし。
0514511NGNG
よろしくお願いします。
memset(&ofn,0,sizeof(OPENFILENAME));
ofn.lStructSize = sizeof(OPENFILENAME);
ofn.hwndOwner = hWnd;
ofn.lpstrFilter = TEXT("Jpeg image [*.JPG, *.JPEG]\0*.jpg;*.jpeg\0\0");
ofn.nFilterIndex = 1;
ofn.lpstrFile = fn;
ofn.nMaxFile = MAX_PATH;
ofn.Flags = OFN_HIDEREADONLY;
if(GetSaveFileName(&ofn)) {
id = CopyFile("tmp.jpg", fn, TRUE);
}
0515デフォルトの名無しさんNGNG
>>514
CopyFileの"tmp.jpg"という指定がカレントディレクトリのファイルを指すからだ。
0516511NGNG
コピー元、コピー先の両方が相対パス ---- ○
コピー元、コピー先の両方が絶対パス ---- ○
コピー元は絶対パス、コピー先は相対パス ---- ×
コピー元は相対パス、コピー先は絶対パス ---- ×

ということですか?
0517デフォルトの名無しさんNGNG
違う。カレントディレクトリ(フォルダ)とパスの関係について考えてみると分かるが、
仮に、C:\TESTがカレントディレクトリだとして、"tmp.jpg"と書けば、
C:\TEST\tmp\jpgを指すが、GetSaveFileNameによってカレントディレクトリが
変更され、C:\DOCとなった場合、"tmp.jpg"と書くと
C:\DOC\tmp.jpgを指すからだ。

最も簡単で確実な解決法は、すべて絶対パスで表すことだけどな。
0518デフォルトの名無しさんNGNG
狙ったようなtypoだな
C:\TEST\tmp.jpg
0519511NGNG
GetSaveFileName がカレントディレクトリを変えるとは思ってもみませんでした。

「カレントディレクトリ」ではなく、プログラムファイルが置いてあるディレクトリ
を取得する方法はありますか?
0520デフォルトの名無しさんNGNG
>>519
argv[0]
0521デフォルトの名無しさんNGNG
APIスレ的には
GetModuleFileName(NULL, &lpString, MAX_PATH);
argv[0]ってパス入ってないOSが無かったっけ。
0522デフォルトの名無しさんNGNG
CreateProcessのやりかたによっては入ってなかったりするな
0523デフォルトの名無しさんNGNG
>>521
少なくともUnixは起動したとおりに入っている。
パスはないかもしれないし、そもそも実行モジュール名と違う別名(alias)かもしれん。
0524デフォルトの名無しさんNGNG
スレ違いだが

> 少なくともUnixは起動したとおりに入っている。

ダウト。
0525デフォルトの名無しさんNGNG
要はカレントディレクトリなんか当てにするなってことですよ
0526デフォルトの名無しさんNGNG
絶対パス指定でDLLを読み込むにはどうすればいいんですか?
0527デフォルトの名無しさんNGNG
LoadLibraryに絶対パスを渡すだけだろ?
0528デフォルトの名無しさんNGNG
>>527
それでも同名のDLLを同ディレクトリに置いておくとDLLオーバーライドによって勝手にそっちが読まれませんか?
0529528NGNG
In Win2K and higher, if there is a file called 'app.exe.local' in the same
directory as app.exe, then all dll's will be loaded from the app's load
directory -- even if its delay loaded with an absolute path that points
elsewhere. the .local. may also override the 'current directory' part of the
search order listed above, but I'm not sure.

というやつです。
0530デフォルトの名無しさんNGNG
それならはじめからそう書いてくれよ

localファイルをユーザーに消させればいいだろ
0531デフォルトの名無しさんNGNG
絶対パスでって指定は無視かいw
役に立たない質問箱だな
0532528NGNG
>>531
いえ、確かにlocalファイルが無くなれば絶対指定が効くようになるので解決策になっていると思います・・・
0533デフォルトの名無しさんNGNG
わざわざ逃げ道を作るためにローカルがあれば読む仕様にしたんなら、
別にそれに逆らう必要も無かろう。
ユーザーがローカルに同名のDLLを置いたんなら
それなりの理由があるんだろうさ。
0534デフォルトの名無しさんNGNG
こんばんわ

Excelのような多機能List操作APIって無いですかね?
ListControlでは貧弱すぎて、使い物になりません。
0535530NGNG
>>532
どーしてもいやならlocalがあるときは起動できないようにすれば?
localを消して新しく起動するっていうのも状況によっては可能なんじゃない
↓

typedef int (WINAPI *GET)();
int main() {
char buf[1000];
::WIN32_FIND_DATA fd;

HANDLE h = ::FindFirstFile("load.exe.local", &fd);
if ( h != INVALID_HANDLE_VALUE) {
::CloseHandle(h);
::BOOL r = ::DeleteFile(".\\load.exe.local");
if (r) {
::MessageBox(0, "deleted exe.local", "", 0);
::ShellExecute(0, "", "./load.exe", "", "", SW_SHOW);
} else {
::MessageBox(0, "could not delete exe.local", "", 0);
}
} else {
HMODULE h = ::LoadLibrary("C:\\absolute\\dll.dll");
GET get = ::GetProcAddress(h, "get");
sprintf(buf, "%d\n", get ? get() : -1);
::MessageBox(0, buf, "", 0);
}
return 0;
}
0536デフォルトの名無しさんNGNG
>>531
自分でファイルを読んでメモリ上に展開すれば良い
ハンドルの扱いなどの都合で関連APIをフックする必要があるかもしれない
0537デフォルトの名無しさんNGNG
絶対パス指定してもlocalがあればローカルを読みます。
0538デフォルトの名無しさんNGNG
MapAndLoad使え
0539デフォルトの名無しさんNGNG
質問いいですか?

メモリDCに赤色でFillしたんですが、
その後、ウィンドウDCにBitBltで描画したんですが、
ウィンドウDCになぜか描画されません。
何かしらの間違いをしているはずですが、わかりますかね?


hdc = BeginPaint(hWnd, &ps);

RECT r;
HDC hmdc;

GetClientRect(hWnd,&r);

hmdc = CreateCompatibleDC(hdc);
FillRect(hmdc , &r , CreateSolidBrush(RGB(0xFF , 0 , 0)));
BitBlt(hdc, 0, 0, 300, 300, hmdc, 0, 0, SRCCOPY);

EndPaint(hWnd, &ps);//描画の終了
0540デフォルトの名無しさんNGNG
ビットマップがない
0541デフォルトの名無しさんNGNG
>>539
DCはただの製図道具。紙を用意しなきゃ何も描けん。
メモリDCの場合はビッマップをセットしてやれ。
0542539NGNG
>>540-541
失礼しました。

ただ、ウィンドウのコンテキストに直接描画すると、再描画のたびにフリッカーが発生するので、
オフスクリーンを用意して、初めにそちらに描画し終えてから、BitBltでウィンドウコンテキストに描画したいのです。
そのオフスクリーンがメモリDCだと思ってました。

オフスクリーンを使った描画方法って無いのですか?
0543デフォルトの名無しさんNGNG
>>542
だからコンパチなビットマップを作れって。
0544539NGNG
表示されました。
Win32はこれまた回りくどいやり方ですね。

どうもでした。
0545デフォルトの名無しさんNGNG
ダイアログとフォームの違いはなんですか?
0546デフォルトの名無しさんNGNG
フォームとは?
0547デフォルトの名無しさんNGNG
GDI+ならスッキリするよ
0548デフォルトの名無しさんNGNG
すいません、ダイアログとフォームではなくて、
ダイアログとウインドウでした。

ウインドウ上に、コントロールはおけるの?
0549デフォルトの名無しさんNGNG
全てはウィンドウであり、ウィンドウを適当にまとめあげて都合のいい形にでっちあげたのがダイアログ
0550デフォルトの名無しさんNGNG
>>544 回りくどい

どういう仕様なら満足なんだろう。
0551デフォルトの名無しさんNGNG
>>548
ウインドウの上にでも、CreateWindowでコントロールを置けます。
ダイアログは、(たいていの場合)コントロールも含めてあらかじめ
リソースとして作成しておいたウインドウです。
コントロールをたくさん持つウインドウなら、あらかじめ
リソースとして(ダイアログとして)持っておいたほうが便利。
0552デフォルトの名無しさんNGNG
msdn に、CreateToolBarEx は obsolete なので、
代わりに CreateWindow を使えって書いてあったけど、
信じるべき?

0553デフォルトの名無しさんNGNG
MSDNを信じないで何を信じるんだ
0554デフォルトの名無しさんNGNG
KB
0555デフォルトの名無しさんNGNG
CPU使用率を取得する関数はWinAPIにありますか?
0556デフォルトの名無しさんNGNG
リソースエディタで作ったコントロールの集まりを
親ウインドウの上に乗せる方法を教えてください。
0557デフォルトの名無しさんNGNG
>>555
RegQueryValueEx
0558デフォルトの名無しさんNGNG
>>556
CreateDialog
0559デフォルトの名無しさんNGNG
>>539
ps.rcPaintとrc={0,0,300,300}をIntersectRectしてFillRectしたら駄目?
0560デフォルトの名無しさんNGNG
>>539
それよかCreateSolidBrush(RGB(0xFF , 0 , 0)はどこでDeleteObjectしてるんだ?
0561デフォルトの名無しさんNGNG
CreateSolidBrush(RGB(0xFF , 0 , 0)
↓
CreateSolidBrush(RGB(0xFF , 0 , 0))

OTZ
0562デフォルトの名無しさんNGNG
どーでもいいが、矩形塗りつぶしならExtTextOutのほうが楽だぞ、と。
0563デフォルトの名無しさんNGNG
CreateWindow( "BUTTON", "hogehoge",
WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
20, 20, 100, 30, hWnd, (HMENU)ID_MI, hInst ,NULL);
で、ボタンがウインドウ上に追加されるのと同じようなやり方で、
リソースファイル中のダイアログをウインドウ上に追加できますか?
0564デフォルトの名無しさんNGNG
>>563
そのリソースが子ウィンドウならおK。
0565デフォルトの名無しさんNGNG
mciSendCommandを使ってドライブのトレイを開閉させるとき、web上にある
ほとんどの例がMCI_WAITを指定して完了するまで制御を戻さないように
しています。

この場合にMCI_WAITを抜くのはあまりよろしくないのですか?
0566デフォルトの名無しさんNGNG
>>564
リソースID が IDD_DIALOG だった場合、実際のコードはどうなりますか?
0567デフォルトの名無しさんNGNG
>>566
リソースデータをハンドリングして
一つ一つCreateWindow
0568デフォルトの名無しさんNGNG
>>565
MCI_WAITをはずした場合、処理が終了しなくてもmciSendCommandが返ってしてしまうので、
MCI_NOTIFYを使って処理終了を待ってから次のコマンドを送信するようにせなあかんくなる。

なので、再生時はともかく初期化処理しているときはいちいちNOTIFYを待つのはめんどいので、
WAITで呼び出したりする。
0569デフォルトの名無しさんNGNG
続き。
トレイ開閉は、たとえば開いている最中に閉めるコマンドを送信した場合、
どういう状況になるか分からないから、安全策としてWAITしてるんじゃないかね。
0570デフォルトの名無しさんNGNG
>>568 >>569
ご意見ありがとうございます。

それが目的であると思われそうですね。CDを入れた状態でトレイを閉めると
しばらく反応なしになるので何となくすっきりしませんでした。ほとんど自分用に
作っているので、SetTimerで開閉直後はしばらく受け付けないようにしようかと
思います。
どうもありがとうございました。
0571デフォルトの名無しさんNGNG
スクロールバーを動かすと数字が増えていくサンプルを作りたいのですが、
矢印ボタンを押している間に数字がかわりません。
(離すと一気に数字が変わってしまう)
押しっぱなしにしてる間、絶えず数字が変化するようにするにはどうしたら良いでしょうか?
教えてください。

↓は上手くいかないソースコードです
case WM_HSCROLL:
switch(LOWORD(wp)) {
case SB_LINERIGHT:
if (scr.nPos < scr.nMax) {
scr.nPos++;
SetScrollInfo(hwnd , SB_HORZ , &scr , TRUE);
wsprintf(ch, "%d", scr.nPos);
TextOut(Back_DC, 300, 300, ch, strlen(ch));
}
break;
}
0572デフォルトの名無しさんNGNG
>>566
CreateDialog で出来るって書いたじゃん。

IDD_DIALOG をリソースエディタ上で作るときに
ダイアログプロパティのスタイルタブで
スタイル:「チャイルド」
境界線:「しない」
にしとけば、

hChildDlg = CreateDialog(hInstance, MAKEINTRESOURCE(IDD_DIALOG), hWndParent, (DLGPROC)DlgProc);

BOOL CALLBACK DlgProc(HWN hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
return FALSE;
}

で hWndParent の上に貼り付く。
IDD_DIALOG 上のコントロールからのメッセージは全て DlgProc に行くから
後はそこで処理するなり、親ウィンドウに送りなおすなり好きにしな。
0573デフォルトの名無しさんNGNG
GDI+でテキストのバウンディングボックスのサイズを正確に取得する方法
を教えてください。
ドキュメント上は
Gdiplus::Graphics::MeasureString()
で取れる仕様になってるんですが、実際に取得すると幅が若干広いので、
この情報を信用して描画すると、テキストの間が空きすぎてしまうのです。
試したところ、半角スペース一文字の幅を↑で取得して返ってきた
値を引いてやると、大体ちょうどいい感じになるようですが、こんなやり方で
いいのかという疑問があります。
Fontの色や属性を一部変えつつ描画するといった場合には必須だと
思われるのですが……
0574デフォルトの名無しさんNGNG
MCIでmciSendString()を使ってゴリゴリやっているんですが、

↓自作クラス
C_MCI::open
C_MCI::saisei

っていうのが同じものを操作するとしても、
WNDCLASSAでオープンしてWNDCLASSBから再生すると、
オープンされていません
っていうエラーがでました
同じエイリアス名でも、WNDCLASSが違うと呼び出せない気がする・・・

なにか方法はありませんでしょうか?
0575デフォルトの名無しさんNGNG
>>573
終端文字のサイズも計算してないか?
0576デフォルトの名無しさんNGNG
>>575
終端文字とは?
仕様上、trailing spaceの幅はデフォでは計算しないようですが
一文字ずつ食わせると、はっきり「幅が広すぎる」ことが分かります。
0577デフォルトの名無しさんNGNG
なんだ、フォントがプロポーショナルというオチか。
0578デフォルトの名無しさんNGNG
>>577
は?
プロポーショナルフォントだからこそ、メトリックスをシステムに
図らせたいんですが?
Aという文字に続いてBという文字をレンダしたいときに、
Aの幅情報が必要でしょう。
別にカーニングやリガチャのような複雑な処理を求めている訳ではありませんよ。
0579デフォルトの名無しさんNGNG
見た目の印象から言うと、Gdiplus::Graphics::DrawText()はどうも
左右に半角スペースの1/2程度の幅のマージンを入れたがるようなのですね。
で、Gdiplus::Graphics::MeasureString()はそのマージン含みの
バウンディングボックスを返してくる、という印象です。

GDIならば::GetTextExtentPoint32()を使うところでしょうが、
Gdiplusではどうやるのが正しいの?というのが質問内容です。
C#ではくくりつけのGraphics2DエンジンがGDI+ですから
同じ問題に遭遇するでしょうしね。
0580デフォルトの名無しさんNGNG
×DrawText()
○DrawString()
ですた。
0581デフォルトの名無しさんNGNG
ボタンの上にアイコンを描きたいのですが、どうしたらできるんでしょうか。
0582デフォルトの名無しさんNGNG
おーなーどろー
0583デフォルトの名無しさんNGNG
http://dobon.net/vb/dotnet/graphics/measurestring.html
こういう話か。
0584デフォルトの名無しさんNGNG
>>574
WNCLASSが違うとって、何を言ってるのか分からんのですが、
別スレッド同士だとエイリアス名共有できないというのは体験したことある。
そのときは、Aスレッドでオープンした曲をBスレッドで操作したかったのですが、
結局Aスレッドのウィンドウにメッセージ送って制御させました。

あまり参考にならないかな。。。
0585デフォルトの名無しさんNGNG
>>574
オープンしたデバイスを共有したいってこと?
mciSendCommandでMCI_OPENして、取得したデバイスIDをstatic宣言した領域に格納するとか。
0586デフォルトの名無しさんNGNG
>579
http://www.codeproject.com/cs/media/measurestring.asp
> I found this technique through a GDI+ KB article (Q307208) at http://support.microsoft.com/default.aspx?scid=kb;EN-US;q307208
> Summary: to measure a string without resolution dependent effects and 1/6 em gaps you must use a GenericTypographic StringFormat.
> Something like:
> sfmt = StringFormat.GenericTypographic;
> size = graphics.MeasureString( m_Text, m_ActiveFont, 1000, sfmt );
> Although the article doesn't say it, I believe the GenericTypographic StringFormat sets some internal bits that are not available through the API any other way, at least I haven't found them (and I've been trying).
0587デフォルトの名無しさんNGNG
>>583
>>586
Thx.
MeasureCharacterRange()を使え、ということですね。
ありがとうございました。
0588デフォルトの名無しさんNGNG
MessageBox関数の戻り値は、いつの間にINT_PTRに変わったの?
0589デフォルトの名無しさんNGNG
変わってないだろ
0590588NGNG
typedef _W64 int INT_PTR, *PINT_PTR;
0591588NGNG
INT_PTR DialogBox(HINSTANCE hInstance,
    LPCTSTR lpTemplate,
    HWND hWndParent,
    DLGPROC lpDialogFunc
);
だってさ。

VisualStudio.net 2003 Pro に付属のMSDNより。
0592デフォルトの名無しさんNGNG
MessageBox関数とDialogBox関数は全く別のものですが。
0593588NGNG
ごめん、588が間違いだった。
正解は、
DialogBox関数の戻り値は、いつの間にINT_PTRに変わったの?
だった。
0594デフォルトの名無しさんNGNG
何でそれが気になるの?
0595デフォルトの名無しさんNGNG
たぶんWINVER==0x0500ぐらいから。
0596588NGNG
こないだVS.net買って、うれしくて昔作ったのをビルドしてみたら、
型違い警告が出てちょっといやな感じだから。
まぁ、正直あまり気にしてないけどVisualStudio買った記念カキコ
したかっただけ。
0597デフォルトの名無しさんNGNG
休み厨の中でもGW厨が一番ひどいな
0598デフォルトの名無しさんNGNG
telnet:// に割り当てられているアプリケーションのパスとかを
取得するにはどうしたらよいのでしょうか?
0599デフォルトの名無しさんNGNG
HKCRを漁れ
0600デフォルトの名無しさんNGNG
>>596
そんなおまいは、とりあえず警告レベルをあげろ
0601デフォルトの名無しさんNGNG

hMemDC = CreateCompatibleDC(hDC);

で、画面を作成して、

WM_PAINT:

FillRect(hMemDC, &rect, CreateSolidBrush(RGB(100, 100, 128)));
〜中略〜
BitBlt(hDC, 0, 0, MEM_SX, MEM_SY, hMemDC, 0, 0, SRCCOPY);

で画面を塗りつぶしているんですが、
何秒か経過したところでFillRectが実行されなくなってしまいます。
(背景色が表示される)

安定して画面を塗りつぶすのにはどうしたらよいのでしょうか?
どなたかご教授お願いします。
0602デフォルトの名無しさんNGNG
>>601
100,100,128のブラシDeleteObjectしてんのか?
0603デフォルトの名無しさんNGNG
>>601
559あたりから読み直してください
0604デフォルトの名無しさんNGNG
>>601
GDI Object大量生成(w
0605デフォルトの名無しさんNGNG
>>602 >>603 >>604
ブラシ削除するの忘れてました。吊ってきます∧‖∧
ありがとうございました。
0606601NGNG
↑名前入れ忘れました、601です。
0607ミナツキ サヤ ◆SAYAC2HJWE NGNG
607
0608デフォルトの名無しさんNGNG
CreateWindowEx でツールバーを作っているのですが、アイコン描画されません。
なにが悪いんですか?

case WM_CREATE:
InitCommonControls();
hToolBar = CreateWindowEx(
0, TOOLBARCLASSNAME, (LPSTR) NULL,
WS_CHILD | CCS_TOP,
0, 0, 0, 0, hWnd, (HMENU) NULL, hInst, NULL);
SendMessage(hToolBar, TB_BUTTONSTRUCTSIZE,
(WPARAM)sizeof(TBBUTTON), 0);
tbarddbitmap.hInst = NULL;
tbarddbitmap.nID = (int) LoadBitmap(hInst, "IDB_BITMAP1");
SendMessage(hToolBar, TB_SETBITMAPSIZE,
0, (LPARAM)MAKELONG(32, 32));
SendMessage(hToolBar, TB_SETBUTTONSIZE,
0, (LPARAM)MAKELONG(32, 32));
SendMessage(hToolBar, TB_ADDBITMAP, 3, (LPARAM)&tbarddbitmap);
SendMessage(hToolBar,
TB_ADDBUTTONS, (WPARAM)3, (LPARAM)&tbb);
SendMessage(hToolBar, TB_AUTOSIZE, 0, 0);
ShowWindow(hToolBar, SW_SHOW);
0609デフォルトの名無しさんNGNG
ダイアログ作ってGetDlgItemTextした文字を普通にウインドウに表示したいんですけど
GetDlgItemTextで得た文字をどうやってメインで使ったらよいのかわかりませぬ
0610デフォルトの名無しさんNGNG
TextOutとか。
0611デフォルトの名無しさんNGNG
メッセージループ関係の質問です。

PeekMessageの第四引数にPM_REMOVEを指定するのと、

PeekMessageの第四引数にPM_NOREMOVEを指定して次に
GetMessageを使用するのとでは何か違いがあるでしょうか?

例えば

if (PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE)){
  if(!GetMessage(&msg, NULL, 0, 0)) return msg.message;
  TranslateMessage(&msg);
  DispatchMessage(&msg);
}

と、

if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)){
  if(msg.message == WM_QUIT) return msg.message;
  TranslateMessage(&msg);
  DispatchMessage(&msg);
}

です。
0612デフォルトの名無しさんNGNG
メッセージがないときにブロックするかどうか。
0613デフォルトの名無しさんNGNG
LoadBitmap(hInst, "IDB_BITMAP1");
が、NULL を返します。どのような原因が考えられるでしょうか?
IDB_BITMAP1 は確かに存在します。

開発環境がWin98なため、GetLastErrorは使えません。
0614デフォルトの名無しさんNGNG
GetLastError

対応情報
Windows NT: バージョン 3.1 以降
Windows: Windows 95 以降
Windows CE: バージョン 1.0 以降

まぁあとは
"IDB_BITMAP1" なんてのは無いんだろうなぁ。

とりあえず、MSDNライブラリをよく見るべし。
0615デフォルトの名無しさんNGNG
リソースファイルは
IDB_BITMAP1 BITMAP DISCARDABLE "bitmap1.bmp"
となっています。もちろん、bitmap1.bmp もあります。

あと、MSDN には、
LoadBitmap
Windows NT/2000/XP: To get extended error information, call GetLastError.
と書いてありました。
0616デフォルトの名無しさんNGNG
リソースをリンクしてないとか
>Windows NT/2000/XP: To get extended error information, call GetLastError.
Win98じゃ使えないとは書いてないね
0617デフォルトの名無しさんNGNG
>>615
resource.hとかに
#define IDB_BITMAP1 xxxx
みたいに定義されてないか?
それならMAKEINTRESOURCE(IDB_BITMAP1)を使え
0618デフォルトの名無しさんNGNG
そりゃそうだけど、普通に考えて対応してないだろ。
0619デフォルトの名無しさんNGNG
昔、resource.hから #define IDB_BITMAP1 を削除して解決した猛者を見たことがあるが
普通はMAKEINTRya
0620デフォルトの名無しさんNGNG
Win32APIよりもCに近い話なのかもしれませんが、質問させてください。
返り値無し(void)のAPIが色々ありますよね。これをGetProcAddress/LoadLibraryして呼び出し、
返り値をintに格納させると一定の値を返す事があるのですが、どのように実装されているのでしょうか?
関数からreturnで値を返していることはないと思うんですが、、、
0621デフォルトの名無しさんNGNG
>関数からreturnで値を返していることはないと思うんですが、、、

たまたま EAXレジスタの値がそうだっただけではないかな?
0622デフォルトの名無しさんNGNG
リソースは普通に作った場合自動的にリンクされますよね?
同じリソースファイル中のアイコンは読み出せます。

GetLastError は 87 (ERROR_INVALID_PARAMETER)が入ってました。
0623デフォルトの名無しさんNGNG
MAKEINTRESOURCE で解決しました。こんなことに数時間もかけてしまうなんて……
ありがとうございました。

このマクロはいつごろ追加されたんですか?
0624デフォルトの名無しさんNGNG
少なくともWindows95のときにはあった。
0625デフォルトの名無しさんNGNG
See Also
Bitmaps Overview, Bitmap Functions, CreateBitmap, DeleteObject, LoadCursor, LoadIcon, LoadImage, MAKEINTRESOURCE

くらいみろよ。
0626620NGNG
>>621
そうですね、、一応不定の値ではなく一定値が返ってはくるようなんですが、同じ演算をした結果が返るわけですから
当然なのかもしれません。ありがとうございました。
0627デフォルトの名無しさんNGNG
640x480ピクセルのビットマップを表示したいのですが、
どうしたらウインドウの大きさを調節できますか。
0628デフォルトの名無しさんNGNG
>>623
私が3.1でプログラミングを始めた時にはすでにありました。

長老と呼ばせてください
0629デフォルトの名無しさんNGNG
>>627
SetWindowPos
0630デフォルトの名無しさんNGNG
>>627
AdjustWindowRect
0631デフォルトの名無しさんNGNG
rect.top = 0; rect.left = 0;
rect.right = 640; rect.bottom = 480;
AdjustWindowRect(&rect, 0, TRUE);
SetWindowPos(hWnd, HWND_TOPMOST, 0, 0,
rect.right - rect.left, rect.bottom - rect.top, SWP_NOMOVE);

とすると、ウインドウの外枠を含めて 640x480 になってしまいます。
クライアント領域だけで640x480にしたいのですが、方法はありますか?
0632デフォルトの名無しさんNGNG
>>631
ウインドウサイズとクライアントサイズの差分だけ広げろ
AdjustWindowRectはメニューの折り返しを自動で考慮してくれないし、
折り返し状況を取得する方法がないからだめ。
0633デフォルトの名無しさんNGNG
#include <stdio.h>

int main(){
MessageBox(NULL, "Hello World!", "Caption", MB_OK);
return 0;
}

これがコンパイルできません。何故ですか?
0634デフォルトの名無しさんNGNG
#include <windows.h>
0635デフォルトの名無しさんNGNG
タワラ

-#include <stdio.h>
+#include <windows.h>
0636デフォルトの名無しさんNGNG
-int main(){
+int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ){
0637デフォルトの名無しさんNGNG
>>636
それはもんだいではない
0638デフォルトの名無しさんNGNG
(ノ∀`)アチャー
0639デフォルトの名無しさんNGNG
最近PCはじめたやつは>>633のような発想を平気でする。
もうPCにはウインドウしかなくコンソールやDOSなどというものは考えもしないのだろう。
だから>>633のようなコードを書いておいて平気で
「コンパイルできません」
のような発言をする。
たのむからLSI-C86の試食版あたりからプログラムの勉強をしてくれ。
0640633NGNG
ありがとうございました。
0641デフォルトの名無しさんNGNG
>>639もコミュニケーションの勉強をした方がいいな
0642デフォルトの名無しさんNGNG
釣れたw
0643デフォルトの名無しさんNGNG
リソースファイルに項目を追加したときに、
自動的に resouse.h が書かれるようにするにはどうしたらいいですか。
0644デフォルトの名無しさんNGNG
支援のあるIDE使ってるなら自動でやってくれるだろ
テキストエディタで弄ったら自動でってのなら、そんなキモイことして欲しくない。
0645デフォルトの名無しさんNGNG
>>643
IDEかなんかの話か?
もちっと状況を説明しないとたたかれて終わるだけだぞ。
0646デフォルトの名無しさんNGNG
>>643
禿しくスレ違い。



それに "resource.h" の間違いにちまいまい。
0647デフォルトの名無しさんNGNG
いやもしかしてIDEを作ろうとしているのかもしれない
しかしAPIってかofstreamだな
0648デフォルトの名無しさんNGNG
それはAPIと呼ぶのか
0649デフォルトの名無しさんNGNG
ha?
0650デフォルトの名無しさんNGNG
hi ?
0651デフォルトの名無しさんNGNG
hu?
0652デフォルトの名無しさんNGNG
中身はAPIだがAPIの話題ではないな
0653デフォルトの名無しさんNGNG
レジストリや.iniならセーフってことか
0654デフォルトの名無しさんNGNG
次のコードについて質問です。
hFile = CreateFile(TEXT("file.txt"),
strFile = (LPSTR)malloc(GetFileSize(hFile, NULL));
ReadFile(fh, strFile, GetFileSize(hFile, NULL), &wReadSize, NULL);
CloseHandle(fh);
filelist[wReadSize] = '\0';

1.このコードは安全(確保されたメモリ以外の場所に書き込みを行わない)ですか?
2.filelist[wReadSize] = '\0' が必要なのはなぜですか?
0655デフォルトの名無しさんNGNG
filelist でなくて strFile でした。
0656デフォルトの名無しさんNGNG
>>654
いいえ。
0657デフォルトの名無しさんNGNG
>>654
1.
最後の行でぶち壊している。

2.
必要ではない。
0658デフォルトの名無しさんNGNG
0659デフォルトの名無しさんNGNG
1.いいえ。
 理由1:最後に埋める\0分のサイズが足りない
 理由2:該当ファイルが3.5GBとかあったらどうするのか。
0660デフォルトの名無しさんNGNG
>>654
Cなの?C++ならmallocはやめてnewを使おうよ
1.1バイトリークしてる
2.strFile[wReadSize-1] = '\0';
とすべきでしょう。必要なのはprintf(strFile);とするときに文字列終端
であるNULLが無いと困るから
0661デフォルトの名無しさんNGNG
>strFile[wReadSize-1] = '\0';
>とすべきでしょう。
正気か
0662デフォルトの名無しさんNGNG
>>654
1. いいえ。2回目のGetFileSize()の戻り値が、最初のGetFileSize()の
戻り値より大きい可能性がある。
0663660NGNG
>>661 スマソ、ループさせてるのかとおもったヨ
CloseHandle()してるな。
リークしないけど1バイト壊すとこだった(w
0664660NGNG
hFile = CreateFile(TEXT("file.txt"));
strFile = (LPSTR)malloc(GetFileSize(hFile, NULL)+1);
ReadFile(fh, strFile, GetFileSize(hFile, NULL), &wReadSize, NULL);
CloseHandle(fh);
strFile[wReadSize] = '\0';
...
free(strFile);
0665デフォルトの名無しさんNGNG
>>660
喩えファイルが短く、直接printf()したい場合であったとしても、
終端のナルキャラは必要ではない。
つーか、ちっとも困らない。
0666デフォルトの名無しさんNGNG
というか、
FILE* fp = _tfopen(TEXT("file.txt"),TEXT("rb"));
char* pBuf = new char[nFSize+1];
memset(pBuf,0,nFSize+1);
fread(pBuf,1,nFSize);
pBuf[nFSize] = '\0';
fclose(fp);
...
delete [] pBuf;

のほうがいいな、俺は
0667666NGNG
> pBuf[nFSize] = '\0';
これ要らなかった(w
0668デフォルトの名無しさんNGNG
>>666
freadの引数が足りない
0669デフォルトの名無しさんNGNG
C++ならSTLコンテナなりスマートポインタ使おうや。
0670デフォルトの名無しさんNGNG
>>668 あ、ほんまや(w
0671デフォルトの名無しさんNGNG
ファイルポインタはどこ逝った。
0672デフォルトの名無しさんNGNG
>665
nande?
0673デフォルトの名無しさんNGNG
>>666
中途半端にC++使うのは好きじゃないなあ。
0674デフォルトの名無しさんNGNG
>>672
printf("%.*s", nFSize, pBuf);
ってことでしょ。
0675デフォルトの名無しさんNGNG
すいませんVC++6.0 でMFCを使用しないで開発を行ってるんですが
「PrintScreen」キーが押された際に送られてくるメッセージが判らないのです。

WM_KEYDOWN 時に VK_SNAPSHOT,VK_PRINTSCREEN 等調べてみてそれっぽいことをしても
巧くいきませんでした。
なにか良い方法はないでしょうか?
0676デフォルトの名無しさんNGNG
675ですがすんませんです。
ホットキーというものを使ったところ思った処理ができるようになりました。
お騒がせしてすいませんでした。
0677デフォルトの名無しさんNGNG
>>611-612
PeekMessageってメッセージが無ければ0を返すんだから
どちらもメッセージ無い時は条件入らないんじゃ?
あまり詳しくないんで、違ってたらスマソ。
0678デフォルトの名無しさんNGNG
ACPI温度管理ゾーンをCreateFile()するところまで上手く行ったんだけど、DeviceIOControl()でアクセスエラーが帰ってきて何も取れない....

handle = CreateFile(
detail->DevicePath,
0,
0,
NULL ,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL );

THERMAL_INFORMATION thm;
ret = DeviceIoControl(
handle,
IOCTL_THERMAL_QUERY_INFORMATION,
0,
NULL,
&thm,
sizeof(thm),
&bsize,
NULL );

ひょっとして、根本的に間違ってるのかな?

0679デフォルトの名無しさんNGNG
>>678
というか、CreateFile の第2引数が 0 なんですが。
DeviceIoControl で必要なアクセスタイプを指定する必要があるんじゃない?
DeviceIoControl 使ったこと無いが…
0680678NGNG
>>679

0がデバイス問い合わせアクセスとなっていたので0にしていた。
ひとまず、GENERIC_READを指定してみたけどやはり取得できない。。。

ただ、DeviceIoControlのエラーコードが0のときは”アクセスできません”で
GENERIC_READのときは"ファンクションが違います"になるようです。


0681taroNGNG
他サイトで回答が得られないっぽいので、マルチポスターをお許しください
m(__)m

定額PHSパケット通信AirH"のVenturi Client(通称:竜巻)という圧縮プロキ
シを使用時に、自作アプリの通信が出来なくて困っています。
ttp://www.ddipocket.co.jp/customer/download/tornado/

SDKでWinSockを直接叩いて、同期ソケットで単純に
WSAStartup()して、gethostbyname()して、getservbyname()して、
socket()して、connect()して、send()して、recv()して
そこら辺の普通のHTTPサーバからHTML文書をダウンロードしているのですが
send()で「GET http://www.odn.ne.jp/index.html」などと送信してから
recv()で受信しようとするとrecv()から処理が戻ってきません。
send()ではちゃんと全バイト数の返り値が返ってくるので、送信は
たぶん出来ていると思うのですが(自信ありません。。)

竜巻を動かしていない時には一応ちゃんとダウンロード出来ているのですが
全くの初心者状態なので、プロキシサーバを間に入れて通信するには
どうしたらいいのかとかもわからないというような状態です。。
どなたかご存知の方がいましたら、アドバイスをお願い致しますm(__)m

申し遅れましたが環境は、Windows2000pro・VC++6.0pro・SDKです。
どうぞ宜しくお願い致します。
0682デフォルトの名無しさんNGNG
Winsockスレで聞けば?
Sendは内部で処理されるため実際に送信されて無くても送信したことになってる。
0683デフォルトの名無しさんNGNG
>>681
何となくだけど、プロキシーに規制がかかってるんじゃないのかな。
GETを飛ばすときにUser-Agentを騙す必要があるとか(w
0684デフォルトの名無しさんNGNG
だいたいそのプロクシの仕様がわからないとどうしようもない。
ローカルで動いてるのか別のとこにあるのかポートはなにかとか。
0685デフォルトの名無しさんNGNG
仕組み読んだけど全然わかんね。
0686デフォルトの名無しさんNGNG
クライアント→圧縮プロクシ→サーバーって事なんだが
クライアントにもローカルプロクシが立つのかがわからない。
0687デフォルトの名無しさんNGNG
こんにちは

リージョンをメモリDCに適用することはできないのでしょうか?
どうも、うまく適用されません。

hdc = GetDC(hWnd);
hMemDC = CreateCompatibleDC(hdc);

(略)

SelectClipRgn(hMemDC , hRgn);
0688687NGNG
すいません。
メモリDCにクリップリージョンが適用されました。
単純ミスでした。
すいません。
0689デフォルトの名無しさんNGNG
Window内の任意の場所にスクロールバーを配置したいのだが
どのライブラリーを使えばいいのか教えてほしい
0690689NGNG
解決しました。
すいません。
0691デフォルトの名無しさんNGNG
GWはもうすぐ終わりだ!みんながんばれ!
0692689NGNG
ごめん。
もう一回。
CreateWindowsExで作成したスクロールバー(単独)のものを操作するには
何のAPI使えばいいの?

スクロールバー内の情報をセットしたいのです。
ただ、SetScrollInfo(hwnd , SB_VERT , &scr , TRUE);だと、ウィンドウ内にある両端のスクロールバーを操作するものですよね?
私が作ったスクロールバーは、単独のものです。

         CreateWindowEx(
0L,
"SCROLLBAR",
(LPSTR) NULL,
WS_CHILD | WS_VISIBLE | SBS_VERT,
0693デフォルトの名無しさんNGNG
SetScrollInfoの説明をよく見よう。
SB_HORZとSB_VERT以外に何がある?
0694689NGNG
>>693
解決しました。
本当にすいませんでした。
0695taroNGNG
すみません、鈴木亜美ちゃんの復活スレ見てたので遅レスすみません。。

POP3通信をしてみたら普通に動いたので、もしやと思い、今までHTTP0.9形式で
リクエストしてたのを、HTTP1.0or1.1風味でやってみたら無事通信できました。
レスくれた方々ありがとうございましたm(__)m
0696デフォルトの名無しさんNGNG
Win 2000/XP だけが通知してくるメッセージを処理する
コードを書いた場合、そのプログラムは Win 9x でも
(メッセージ処理用のコードを除いて)動作しますか?

0697デフォルトの名無しさんNGNG
ソフトウェア仕様云々より、むしろ使用しているAPIで決まる。
0698デフォルトの名無しさんNGNG
>>682
Winsockスレってどこにありますか?
教えてください。
0699デフォルトの名無しさんNGNG
後方互換性意識してDLL作るときはDEFファイルで序数指定するもんだって
思ってたし、MSDNにもそんなこと書いてあるんでそうしてたんですが、
それって過ちじゃないかと今日気づきました。

DependencyWalkerで見ると、序数指定つきで作られたインポートライブラリ
からインポートしているプログラムは、当然のように序数でインポート
してるんですね。ところが、__declspec(dllexport)、あるいは
序数指定無しのDEFファイルで指定されたシンボルは、
名前でインポートしてるのが分かる。あくまでやってみて気づいた
経験則であって、どこにもそんなことは書いてないですけどね。
これ、どっちがいいかっつったら勿論後者ですよね。スタブコードが
ちゃんと名前でGetProcAddress()してくれるなら、
バージョンアップの際にいちいち序数管理する必要ないから。

で、面白くなって色々調べてみると、MS謹製のライブラリでも、ものに
よってまちまちなんですよ。kernel32, user32, msvcrtのような奴は
名前エクスポートなんだけど、mfc42, oleaut32, wsock32あたりは
序数エクスポートになってる。
いったん序数エクスポートにしちゃうと、後方互換性のためにはそれを
維持しなきゃいけないからそうなってるのかなあ、とか思ったりしました。

皆さんは、この辺、どうやってますか?
0700デフォルトの名無しさんNGNG
CD-R にデータをベタで書き出したいのですが、特別な API があるのでしょうか。
0701デフォルトの名無しさんNGNG
開こうとしているファイルが他のプログラムによって
開かれている(WriteOpen)ことを検知するAPIはありますか?
0702デフォルトの名無しさんNGNG
>>699
互換性維持っていうほど簡単じゃないと思う
俺はすっかり放棄
0703デフォルトの名無しさんNGNG
>>699

昔は序数リンクしかできなかったんじゃなかったっけ?

序数リンクのほうがリンクがごく僅かに速いだろう、というのはあるけ
ど、互換性目的以外で今の時代にわざわざ序数リンクを使う理由なんて
ない。
0704デフォルトの名無しさんNGNG
OS板のK&Lキチガイさんたちなら僅かなファイルサイズ・メモリ節約のために序数リンクするかもなぁ。
0705699NGNG
>>703
その「昔」というのはWin16時代のDLLですか?
kernel32が名前エクスポートになってるということは、Win32は最初からそれを
サポートしていたということになりますね。
ていうかGetProcAddress()が名前でDLLのシンボルをfetchできる
以上、できないはずがないのだけれど。

>>704
ご丁寧にNONAMEまでつけてしまうということですか。Unixでstripをかけるのと同じ
感覚なのだろうか。

序数つきで作成したimport library(NONAME指定無し)にも、ちゃんと名前シンボル
は入ってるんですよ。で、私には序数「無し」で作成したものとの違いがlibファイル
だけでは分からないのですが、MSのリンカは不思議なことにこれを区別する
んですよね。
序数指定無しの場合はlibが勝手に序数を指定するだけだと思ってました。ていうか
ドキュメントにそう書いてあるし。
0706デフォルトの名無しさんNGNG
メッセージループについてなんですが、

時間のかかる処理をしている最中にも、
ウィンドウ操作ができるようにと、
PeekMessageを定期的に呼び出すようにしたのですが、
その時に、メニューとかの操作を行うとその処理が終わるまで、
呼び出し元(=ここでは「時間のかかる処理」)が止まってしまいます。

呼び出し元を止めずに処理することはPeekMessageでは出来ないのでしょうか?
0707デフォルトの名無しさんNGNG
>>706
そこでマルチスレッド。
0708デフォルトの名無しさんNGNG
>>706
処理の流れは常に一元的だ。
0709デフォルトの名無しさんNGNG
>>707
>>708
頑張ってマルチスレッドに取り組んでみます。
レスありがとうございました。
0710デフォルトの名無しさんNGNG
>>709
地獄に片足つっこんだな・・・
0711デフォルトの名無しさんNGNG
きっちりセマフォ仕込めば地獄でもないっしょ。
0712デフォルトの名無しさんNGNG
>>711
片足だから。
でも原因がすぐにわからないバグがあったときなんか
あってるのにものすごいスレッド部に自信がなくなる・・・
0713デフォルトの名無しさんNGNG
UIと処理で2スレッドだけならそれほど複雑ではないけどなあ。
0714デフォルトの名無しさんNGNG
勝負は三スレッド目からと言うじゃないですか
0715デフォルトの名無しさんNGNG
4つめ以降は結構楽かなw
0716デフォルトの名無しさんNGNG
五つめ以降でテンション高くなってきます。
0717デフォルトの名無しさんNGNG
6つを超えると仕様に疑問を抱き始めます。
0718デフォルトの名無しさんNGNG
7つ目に達するともはや思考停止して黙々とコーディングします。
0719デフォルトの名無しさんNGNG
管理スレッドとワーカスレッドなら一時的にどれだけ走ってても気にならんけどな。
3スレッドで大丈夫なら桁が変わっても大丈夫。
…パフォーマンス以外は。
0720デフォルトの名無しさんNGNG
128つも稼動させると、Win9xとともに昇天できます
0721デフォルトの名無しさんNGNG
9xは「リソース不足です」っていうメッセージを表示するために
最後のリソースを使い切ってあぼーんすることが多すぎる。
0722デフォルトの名無しさんNGNG
あるイベントごとにスレッドを起動する処理を書いた。
あるときイベント処理が滞った。
気付いたらスレッドが爆発していた。
#ありがちではある。
0723デフォルトの名無しさんNGNG
単純に並列作業ならかまわないがいろいろ関係してくると複雑になる。
Deadlockとか。
マルチスレッドはデバッグしづらいからなぁ・・・
0724デフォルトの名無しさんNGNG
スレッドがどう動いてるかリアルタイム&レジューム付きでグラヒィカルに
表示してくれるツール無いかなぁ・・・
イベント、クリティカルセクション対応で依存まで表示してくれる。
0725デフォルトの名無しさんNGNG
一言だけ言わせて貰う。

クソスレ立てんな。
0726デフォルトの名無しさんNGNG
盛大な誤爆乙。
0727デフォルトの名無しさんNGNG
>>726
ちょっと寒いが>>725のギャグを理解してやろうな?
0728デフォルトの名無しさんNGNG
ギャグなの?
0729デフォルトの名無しさんNGNG
あー、2chのスレ/スレッドとプロセス/スレッドのスレをかけたのか。


わかるかヴォケ
0730デフォルトの名無しさんNGNG
>>724
インテルがスレッドのデバッグ&プロファイルツール出してるよ。
0731デフォルトの名無しさんNGNG
スレッド数管理スレッドなんてのはあり?
0732デフォルトの名無しさんNGNG
スレッド数管理スレッドってか、GUI回りやイベント処理、スレッド生成なんかは
それ用のスレッドで管理せんとダメだろ。
0733デフォルトの名無しさんNGNG
むやみやたらにスレッドを増やすのはオススメできない。
きちんと管理できるように体系立ててやってるうちはいいけど、特定のパターンで沈黙したら困るからここスレッドね、
ってなことを繰り返してるとVer.2で総つくり直しなんて目にあいかねない。
0734デフォルトの名無しさんNGNG
スレッドは終わらせるときが一番難しい…
穴だらけの終了処理をみると目を覆いたくなる。
ワーカーより先にメインスレッドが終わるケースをまったく考えて無い奴とか。
0735デフォルトの名無しさんNGNG
>>730
リアルタイムじゃない。
あと、スレッド間の依存とかグラヒィック表示も弱いし。
体験版使ったが英語でよくわからない・・・・
まあ、あれ使って一カ所バグ発見できたが。
0736デフォルトの名無しさんNGNG
>>729
あんたの突っ込みで笑えた。
0737デフォルトの名無しさんNGNG
>>736
やっぱり、ツッコミはボケを引き立てるからな。セットでないと。
0738デフォルトの名無しさんNGNG
>スレ/スレッド
って何?
0739デフォルトの名無しさんNGNG
>>738
今いるところ。
0740デフォルトの名無しさんNGNG
>>738
マトリックスしてる状態じゃないかな
0741デフォルトの名無しさんNGNG
スレ・スレッドってPG
0742デフォルトの名無しさんNGNG
助言をお願いします。
SetDIBitsToDeviceをつかってPNGファイルを読み込もうとしているのですがうまくいきません。
とりあえず640*480のPNGを読もうとしているのですが、SetDIBitsToDeviceの戻り値が0になって、GetLastErrorが「パラメータがただしくありません」になります。
もう、どこを修正していいのか分かりません。
分かる方、アドバイスお願いします。

//memDC,PngFileSize,pPngFileDataは設定済み。
//OSはMeです
BITMAPINFOHEADER binfo;
binfo.biSize=sizeof(BITMAPINFOHEADER);
binfo.biWidth=640;
binfo.biHeight=480;
binfo.biPlanes=1;
binfo.biBitCount=0;
binfo.biCompression=BI_PNG;
binfo.biSizeImage=PngFileSize;
binfo.biXPelsPerMeter=0;
binfo.biYPelsPerMeter=0;
binfo.biClrUsed=0;
binfo.biClrImportant=0;

SetDIBitsToDevice(memDC,0,0,640,480,0,0,0,480,pPngFileData,(BITMAPINFO*)&binfo,DIB_RGB_COLORS);
0743デフォルトの名無しさんNGNG
BI_PNGは使えないと思っとけ。いじょ。
0744742NGNG
PNGは読めないってことでしょうか?
MSDNには98以上で使えると書いてあったので大丈夫と思っていたのですが・・・
無理ならSusieプラグインを使ってみます。
0745デフォルトの名無しさんNGNG
まぁお前らド素人は、libpng拾ってきて、ライブラリでも使ってなさいってこった。
0746デフォルトの名無しさんNGNG
Windows 98/Me, Windows 2000/XP: If the driver cannot support the JPEG or PNG file image
passed to SetDIBitsToDevice, the function will fail and return GDI_ERROR. If failure does
occur, the application must fall back on its own JPEG or PNG support to decompress the
image into a bitmap, and then pass the bitmap to SetDIBitsToDevice.

0747デフォルトの名無しさんNGNG
俺はプロだからGDI+を使う。
0748デフォルトの名無しさんNGNG
WinXPを対象にするなら、そろそろGDI+でもいいかもね。
他OSだと、GDI+のインストールを促さないとあかんので、面倒なことになりそうだけど。
0749デフォルトの名無しさんNGNG
ウィンアプリでDefWindowProcはswitchのdefaultの所に書いてありますが、
returnの所に書いても大丈夫なのでしょうか。WM_PAINTなどを実行した後に
DefWindowProcを実行しても大丈夫かという意味です。
0750デフォルトの名無しさんNGNG
あんまりよくない。
0751749NGNG
>>750
ありがとうございました。分かりました。
0752デフォルトの名無しさんNGNG
>>748
GDI+のDLLはアプリと共に配布する事が許可されています。
0753デフォルトの名無しさんNGNG
>>752
VBランタイムと同じ(サイズは違うが)で、やっぱトラブルの元だと思うよ
0754デフォルトの名無しさんNGNG
>>753
そのためのside-by-side(ryって
XP以前のOSじゃほとんど使えないか
0755デフォルトの名無しさんNGNG
> XP以前のOSじゃほとんど使えないか
話にならんほど使えんな
0756デフォルトの名無しさんNGNG
エントリー関数名が「main」だとどうなりますか?
0757デフォルトの名無しさんNGNG
深いレベルの話では、別にどうもならない。
一般的な話なら、コンソールアプリケーション。
0758デフォルトの名無しさんNGNG
>>753
GDI+のdllはCOMじゃないから、exeの横にgdiplus.dllを置いておくだけで事足りる。
だからトラブルはあまり起こらないと思う。
0759デフォルトの名無しさんNGNG
WinMainの第一引数であるHINSTANCEをコールバック関数で得たく、
AfxGetInstanceHandleという関数を見つけました。
これは引数が無いみたいですが、
HWNDを渡さなくても大丈夫なんでしょうか。
また、別の関数で得るのなら、それを教えてください。
0760デフォルトの名無しさんNGNG
>>759
大丈夫です
0761デフォルトの名無しさんNGNG
>>759
MFCじゃないのかそれは
自プロセスのHINSTANCEしか返らないからHWND渡さなくても大丈夫
0762759NGNG
>>760
TextOutとかGetDCとかほとんど全ての関数の引数にHWNDが必要なのに
なぜこれは大丈夫なのでしょうか(っておかしいですが)。
0763759NGNG
>>761
MFCじゃないです。
そのコールバック内から呼び出すから大丈夫という事ですか。
0764デフォルトの名無しさんNGNG
全てのAPIにHWNDが必要だった場合を考えてみよう。
0765デフォルトの名無しさんNGNG
>>762
TextOutを復習しよう
0766デフォルトの名無しさんNGNG
>>763
おぉ、Win32でもほんとにあった、同じ名前なんだな
まぁこれで他プロセスのHINSTANCE取れたらとんでもないことになりそうだと思うが
0767759NGNG
すいません。そもそもSDKでは以下のエラーが出て無理なようです。
afx.h(15) : fatal error C1189: #error :
MFC requires C++ compilation (use a .cpp suffix)
グローバル変数か、関数にstaticで保存しとく、とかにします。

>>765
すいません、HDCです。

お答えいただいた方、ありがとうございました。
0768デフォルトの名無しさんNGNG
GetModuleHandle(NULL)でいいじゃん
0769759NGNG
インスタンスだけでなく、リソース、アプリケーション名も
同じようなエラーが出ます。

>>766
というと自分の考え方はあながち間違っていなかったんですかね。
SDKにはない特殊なソースが隠れていてそれでHWNDを判断するみたいな。
ウィンアプリはだいたいwindows.hで全て出来るけど、
afxwin.hと別のヘッダーを利用している所からも特殊なんでしょう。
0770759NGNG
>>768
ありがとうございます。調べてみます。
0771デフォルトの名無しさんNGNG
 質問で申し訳ありません。

開発言語は「Visual Basic 6.0」です。
OSは「WindowsXP Personal Edition」です。
「RasDial」でRASの接続を行い、
「RasHangUp」でRASの切断を行う処理を行っております。
プログラム起動をして初回の接続は問題無く動作し、
切断する事も出来ます。
ですが、続けて同じRASに接続しようとした場合
エラーコード「668」(接続を終了しました。)
が返されてしまい、接続する事が出来ません。
「Windows98 Second Edition」では正常に動作しておりました。
この現象について何かご存知の方はいらっしゃいますでしょうか?
0772デフォルトの名無しさんNGNG
ドライブはGetFileAttributesで取得すると
属性はFILE_ATTRIBUTE_DIRECTORYなんですか?
Windows2000以外でも同じですか?
0773デフォルトの名無しさんNGNG
WindowsXP Personal Editionってなんだよ(w
0774デフォルトの名無しさんNGNG
Officeと混ざったんだろうな。
0775デフォルトの名無しさんNGNG
ググって見ろ。
5件もヒットするぞ。(藁
0776デフォルトの名無しさんNGNG
HOMEでした。すいません。
0777デフォルトの名無しさんNGNG
>>775
ワロタ
0778デフォルトの名無しさんNGNG
関係ないが、Office XP Home Editionというのも
0779デフォルトの名無しさんNGNG
>>759
GetWindowLong()じゃだめなの?
hInstance = (HINSTANCE)GetWindowLong(hwnd, GWL_HINSTANCE);
みたいにすれば得られるけど。
0780デフォルトの名無しさんNGNG
どこかにWinのバージョンごとに
入っているフォントと初期フォントを
紹介したサイトはありませんか?
0781780NGNG
知りたい理由というのは、
フォントを利用したツールを作ろうと思っていて、
ユーザーに独自のフォントを使わせたくないんで。
…スレ違いだったかな?
0782デフォルトの名無しさんNGNG
>>781
擦違い
0783デフォルトの名無しさんNGNG
以下のプログラムはビットマップを表示するものです。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=999294620&res=149

タイプ1が1セルずつ表示するバージョンで、
タイプ2が表示する内容を別の所に記憶しておき最後に一度で表示させようと
した物です。タイプ2の方が表示されないので正しいやり方を教えてください。
なお、ビットマップが添付されてますのでソースと同じフォルダに置いて下さい。
0784783NGNG
質問なので上げさせてください。
0785デフォルトの名無しさんNGNG
ageさせてあげますが答えてはあげません
0786デフォルトの名無しさんNGNG
>>783
ビットマップがない。>>539と同じ問題。
0787デフォルトの名無しさんNGNG
>>783
スレ違い。
0788783NGNG
>>786
>>539周辺を読んでみます。

>>787
誘導してください。
0789783NGNG
>>786
こんな感じでやってみたのですがダメでした。
もう少しヒントをください。

SelectObject(hDCBitmap, hBitmap);
for(x=0; x<20; x++)
for(y=0; y<20; y++)
{
BitBlt(hDCBack, x*16, y*16, 16, 16, hDCBitmap, 0, 0, SRCCOPY);
//Sleep(1);
}
DeleteObject(hBitmap);

SelectObject(hDC, hDCBack);
BitBlt(hDC, 0, 0, 320, 320, hDCBack, 0, 0, SRCCOPY);
DeleteObject(hDCBack);
0790デフォルトの名無しさんNGNG
LoadImageの使い方おかしくないか?
0791デフォルトの名無しさんNGNG
だから、hDCBack が 320x320 の大きさのビットマップを
SelectObject() してないと、hDCBitmap から hDCBack に blt すると
きに描画先が足りないっしょ?
0792デフォルトの名無しさんNGNG
>>783
HDC hDCBitmapに対応するHBITMAPはhBitmap。
同じように、HDC hDCBackに対応するHBITMAPを設ける必要があるよ。

791が言っているのは、
HBITMAP hBmpBack=CreateCompatibleBitmap(hDCBack,320,320);
SelectObject(hDCBack, hBmpBack);
が必要だってこと。
0793783NGNG
ありがとうございます。

>>792
黒に白い線が入った感じで表示されてしまいます。どこがいけないのでしょう。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=999294620&res=150

後、同じような事をやっているプログラムを見つけたのですが、
それでも同じような感じで表示されます。
http://www3.omn.ne.jp/~renas/Win32/Win32_08.html
0794デフォルトの名無しさんNGNG
>>793
コンパチビットマップを設定する順序が無茶苦茶だと思われ。
0795デフォルトの名無しさんNGNG
>>794も原因の一つだが、
CreateCompatibleBitmapで指定するHDCは大元のHDCを指定する必要がある。
MSDNのCreateCompatibleBitmapの解説をじっくり読みましょう
0796783NGNG
>>794
ありがとうございます。順番をいろいろ変えて実験してみます。
0797783NGNG
>>795
ありがとうございます。
大元のにしたら、まだ正しくは表示されませんが色が付きました。
0798783NGNG
表示できました。ありがとうございました。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=999294620&res=151
0799デフォルトの名無しさんNGNG
一定時間放置されたらダイアログを終了させたいと思っています。

このダイアログにはIEコンポーネットが貼ってあるので、できれば
システム全体かダイアログ全体のイベントとして処理したいのですが
普通はどのように実装するものなのでしょうか?

対象はWinCE(HPC2000)ですが、基本は同じだろうと思って
ここに書きました。

よろしくお願いします。
0800デフォルトの名無しさんNGNG
>>799
WM_TIMER
0801デフォルトの名無しさんNGNG
>>799
何を放置か知らないけど、>>800さんの意見+放置対象を監視すると桶。
0802デフォルトの名無しさんNGNG
リストボックスのどれが選択されているのかを判定するのって
X = (int)SendDlgItemMessage (hDlg, IDC_LIST, LB_GETCURSEL, 0, 0);
であってます?
どれ選んでも0が代入されちゃうんですけど・・・
0803デフォルトの名無しさんNGNG
 
0804デフォルトの名無しさんNGNG
winsockつかってUDPでチャット作ったのですが、
同じマシン内でサーバとクライアント立ち上げたときは反応しますが
違うマシン同士では反応しません。
IPとかポートはちゃんとしています。
原因はUDPつかってるからでしょうか。
よろしくお願いします。
0805デフォルトの名無しさんNGNG
http://support.microsoft.com/default.aspx?scid=kb;JA;74586
0806デフォルトの名無しさんNGNG
>>804
ポートってTCPのポートだったら笑えるな。
そもそもチャットにUDP使うこと自体がおかしい。
UDPは転送も、順番も保証がない。
それとネットワークプログラミングスレで聞け。
0807804NGNG
すれ違いでした。すみませんでした。
0808デフォルトの名無しさんNGNG
リストビューを表示中にその内容を書き換えたく、以下のようにしているのですが、

void Update() {
  ListView_DeleteAllItems(m_hLV);
  for (...) {
    LV_ITEM lvItem;
    ...
    ListView_InsertItem(m_hLV, &lvItem);
    ...
  }
}

DeleteAllItemsをしたときにスクロールバーが戻ってしまいます。

スクロールバーが戻らないように表示内容だけ更新する方法はないでしょうか。
0809808NGNG
すいませんsageてしまいました
0810デフォルトの名無しさんNGNG
>>808
変更のあったアイテムだけ書き換えるんじゃだめなの?

あとは、大量のアイテムを追加したりするときのために
描画を停止させる方法があった気がするけど、
スタイルだったっけなぁ・・・?
0811808NGNG
>変更のあったアイテムだけ書き換えるんじゃだめなの?

DeleteAllしないでInsertすると項目がどんどん追加されてしまうし、
どうしたら変更のあったアイテムだけ書き換えることができるでしょう?
0812デフォルトの名無しさんNGNG
ListView_SetItem
0813デフォルトの名無しさんNGNG
ListView_SetItem、ListView_SetItemText
お好きな方をどうぞ。

前から疑問に思っていたのだけど、質問するときにスレを上げるのって何か意味があるの?
ローカルルールなら仕方ないと思うんだけど、たまにムカっとくるんだが。
0814デフォルトの名無しさんNGNG
>>813
2ちゃんブラウザ使ってるとそう思うときもあるけど、
IEとかネスケ使ってる場合、ageてくれないと見つけづらいからね。
記事が目に付かないと答えがもらえる可能性も低くなるし。

最近は見ないけど、質問するときはageとけっていってる人もいた。
0815デフォルトの名無しさんNGNG
スレをsageる方にこそ意味があるのかと
0816デフォルトの名無しさんNGNG
さらしあぐぇ
0817デフォルトの名無しさんNGNG
>>813
>ローカルルールなら仕方ないと思うんだけど、たまにムカっとくるんだが。

ほう。どうしてムカつくのかね?
0818デフォルトの名無しさんNGNG
>>815
私もちょっと思う。

けど、sage
0819デフォルトの名無しさんNGNG
>>815>>818
仮にも技術板なんだし、
質問やニュース系がageで、普通の雑談はsageにしたほうが
利便性高い気がしなくもないけど。
普段からageてると、質問が埋もれるし。
0820デフォルトの名無しさんNGNG
age書き込み=荒らしだと信じ込んでいる人は困る。
0821デフォルトの名無しさんNGNG
だれもそんな事は言ってない。
0822デフォルトの名無しさんNGNG
>>821
2ch中にたくさんいるだろうが。
0823デフォルトの名無しさんNGNG
2ch中なんて見て回る余裕内
0824デフォルトの名無しさんNGNG
いや、つーかスレと関係ない話題はyosoでやってくれんか。
0825デフォルトの名無しさんNGNG
そうだそうだ
0826デフォルトの名無しさんNGNG
飲むソーダ
0827デフォルトの名無しさんNGNG
>>824
yoso送り
0828デフォルトの名無しさんNGNG
このスレは見てる人多いんだからageて目立たせなくても教えてくれる人は居るかと。
それでもageるのは質問スレの慣習かな。
0829デフォルトの名無しさんNGNG
なんかage=悪って洗脳されてるやつがいるな。
0830デフォルトの名無しさんNGNG
「デフォルト=悪」ということらしいねw
0831デフォルトの名無しさんNGNG
でも、age進行のスレで関係ない質問が紛れ込んだことはあった。
プログラム板だからどれも同じと思ったらしいが。
0832デフォルトの名無しさんNGNG
>>830
漏れのブラウザでは、sageがデフォルトなんでつが・・・
0833デフォルトの名無しさんNGNG
2chのデフォルトっつー意味だって事ぐらい分かるだろ。
0834デフォルトの名無しさんNGNG
技術系板では2chブラウザを使って当然、それらのデフォルトのsageで投稿して当然だと思うけど?
0835デフォルトの名無しさんNGNG
脳が涌いているようでつね。
0836デフォルトの名無しさんNGNG
使ってるソフトウェアのデフォルト設定だから、ってのは思考停止だと
思うぞ。

ところで、8bpp 以下の DIB のパレットの扱いがよくわからん…。どっ
かにいい解説はないもんだろうか。

0837デフォルトの名無しさんNGNG
とりあえずPetzold本の下巻
0838デフォルトの名無しさんNGNG
ttp://www.kk.iij4u.or.jp/~kondo/bmp/
0839デフォルトの名無しさんNGNG
2chだろうがブラウザだろうが「デフォルトだから」ってのは頭悪そう
0840836NGNG
>>836
あーいや、BMPのファイルフォーマットは理解してるんです。

CreateDIBSection() で DIB_PAL_COLORS したときにどんなパレットが
HBITMAP の中に記録されているの? とか、GetObject() で DIBSECTION
が取れるけど、DIBSECTION にパレット情報が含まれないのはなんで?
とか、GetDIBColorTable() に HDC が必要なのはなんで? とか。

0841デフォルトの名無しさんNGNG
>>840
パレットはビットマップじゃなくてデバイスコンテキストの属性だから。
0842836NGNG
DIB_RGB_COLORS で CreateDIBSection() するときはパレットの情報も
渡してるよね? そのときに渡したパレットの情報は HBITMAP の中には
保持されてないってこと?

0843デフォルトの名無しさんNGNG
>>842
そうですよ。
っていうか841に書いたように「パレット」はデバイスコンテキストの属性なんだってば。
0844843NGNG
ん、なんか自信無くなってきたぞ・・・
0845デフォルトの名無しさんNGNG
いや、パレットの情報なんか渡されないし。
CreateDIBSectionとかで指定するのは、ビット列がどんな色情報を
持っているかだけで、その後のパレットとは関係ない。
0846836NGNG
SetDIBits() や GetDIBits() ではとくに疑問はないんです。

>>845
CreateDIBSection() ではピクセルのデータは入力しないから、その説
明だと bmiColors の情報は全く何にも使われないことになっちゃいま
すよ。
MSDN の説明を読む限りでは、DIB_PAL_COLORS でも DIB_RGB_COLORS で
も bmiColors のテーブルには意味があるはず。
0847デフォルトの名無しさんNGNG
あー、もうウザいから、君の理解している「パレットの定義」を書いてくれ。
0848836NGNG
パレットちうのは、ピクセルデータから RGB 値に変換するテーブルのことさー。

DIBSection な HBITMAP の場合、
・CreateDIBSection() で DIB_RGB_COLORS のときに bmiColors に入って
いるもの
・CreateDIBSection() で DIB_PAL_COLORS のときに HDC が SelectPalette()
してるHPALETTE と bmiColors に入っている WORD 配列
・その HBITMAP を SelectObject() した HDC が SelectPalette() してる HPALETTE
・GetDIBColorTable() と SetDIBColorTable() で出し入れできるもの
これらの関係はなにさ? ということ。
0849デフォルトの名無しさんNGNG
>>847答えられなくなったからキレた。
0850843NGNG
>>848
bmiColors にある clut が意味を持つのは、StretchDIBits や SetDIBits などで使うときだけ。
CreateDIBSection で得られた HBITMAP は、旧来の GDI 的には旧来の HBITMAP としてしか
扱われないので、HBITMAP を用いる場面では SelectPalette 等する必要がある。

>・CreateDIBSection() で DIB_RGB_COLORS のときに bmiColors に入っているもの
>・GetDIBColorTable() と SetDIBColorTable() で出し入れできるもの
この2つは同じ化も知れない。

あとは全て相互に無関係。
まぁ普通はプログラマが意識して一致させるだろうけど。
0851デフォルトの名無しさんNGNG
>>849に同意w
それはさておき、本題を書きましょうか。

まず、少し混同しているようだが、パレットとカラーテーブルは別物。
CreateDIBSectionで作られるHBITMAPの中にあるのはカラーテーブル。
CreatePaletteなどで作るHPALETTEがパレット。

CreateDIBSectionのiUsageはそのカラーテーブルをどう作るかを指定してるだけ。
GetDIBColorTableなどでいじってるのも、関数の名前どおりカラーテーブル。

実際画面に表示する時には、このHPALETTE内のパレットと、DIBSection内の
カラーテーブルとをカラーマッチングして表示してたと思う。
0852デフォルトの名無しさんNGNG
VBからの呼出ですがよろしくお願いします。

ImmGetConversionListを使ってIMEでの変換候補を取得しようとしています。方法は
ttp://www.mitene.or.jp/~sugisita/vb6_ime.html
の「IMEの変換候補の取得」をそのまま流用させて頂いてます。

ところがたとえば平仮名の”あ”について変換候補を取得すると
亞、亜の2つしか取得できません。メモ帳で”あ”を変換すると私の環境では
亜、亜、ア、あ、阿、ぁ、蛙、唖、ァ、吾の10個の候補が出てきます。

どうやったら10個全て取得できるのか教えてください、よろしくお願いします。
0853名無し@沢村NGNG
おまいらよ、いまだにビットマップの表示ごときで議論してるのか?
ビットマップの表示ごときで議論することが何かあるのか?
おまいらに、幼稚園児の称号を与えてもいいか?
0854デフォルトの名無しさんNGNG
つまらんアセンブラ解説サイトなんか作ってないでもっと実用的なモノやれよ。
PE解析に役立つアセンブラ、とかさ。
0855デフォルトの名無しさんNGNG
(ノ∀`)アチャー
0856デフォルトの名無しさんNGNG
嘘を嘘と(ry
0857デフォルトの名無しさんNGNG
つまり本物だろうと騙りだろうとネタだろうと嘘だろうと

   沢 村 に レ ス す ん な
0858デフォルトの名無しさんNGNG
>>857
お前に指図はされない
0859デフォルトの名無しさんNGNG
俺にも指図はされない
0860デフォルトの名無しさんNGNG
俺は指図しない
0861デフォルトの名無しさんNGNG
指定フォルダの中にフォルダがあるかどうかをみるって
FindFirstFileで調べないとダメ?もっと簡単なAPIってある?
教えてエロエロな人
0862デフォルトの名無しさんNGNG
おまえに指図される
0863デフォルトの名無しさんNGNG
俺にも指図してよ
0864デフォルトの名無しさんNGNG
指図してください、ご主人様。

ところで、
>>861
FindFirstFile とかでぐるぐるするぐらいしか思い浮かばないわ。
じゅうぶん簡単な方法だと思うの。
0865デフォルトの名無しさんNGNG
名前わかってるなら、ぐるぐるする必要は無いだろ。
0866デフォルトの名無しさんNGNG
>>864
だよなぁ
>>865
ちげえって、指定フォルダん中にさらにフォルダあるかどうかってきいてんあああああああああああああああああばかあああああああああ
0867デフォルトの名無しさんNGNG
サブフォルダがあるかどうかはシェルAPIを使って
SFGAO_HASSUBFOLDER
のビット見ればいいだろ。
0868デフォルトの名無しさんNGNG
複数行描画、クリッピング機能、DT_EDITCONTROLを使いたくてDrawTextを使ってるんですが、
この関数は連続して文字を書きたいときに、カレントポジションを更新してくれないので
代わりになるような関数とかってありますか?

もしくはDT_EDITCONTROLでやってる計算方法とかわかれば関数を自作してみますけど・・・
DT_CALCRECTじゃ矩形しかとれないんですよね?


#「FindFirstFile とかでぐるぐるする」って表現、なんかかわいいw
0869デフォルトの名無しさんNGNG
>>867
お、そんな便利なものがあったのか、と思ったら、COM かあ。
0870デフォルトの名無しさんNGNG
>>869
COMかどうかなんか気にする必要はないぞ。
普通にヘッダインクルードしてライブラリリンクすれば使える。
そもそもAPIなんかほとんどDLLなんだし。何が問題?
0871デフォルトの名無しさんNGNG
参照カウントとかQueryInterfaceにアレルギーがあるんじゃないの?
0872デフォルトの名無しさんNGNG
そこでATLですよ
しかし生APIとは言えなくなる罠
0873デフォルトの名無しさんNGNG
ATLの方が厄介でしょ。
相手先の環境によっちゃ、DLL配らなきゃいけないし。
0874デフォルトの名無しさんNGNG
COM でやるんなら、FindFirstぐるぐるでも手間かわらないんじゃ?
0875デフォルトの名無しさんNGNG
>>867
髪!!
さんくす
0876デフォルトの名無しさんNGNG
>>868
TEXTMETRIC使ってこねこねじゃダメかしら?
0877868NGNG
文字列A="あいうえおかきくけこ\nさしすせそ";
文字列B="ぱぴぷぺぽ";

だとすると、

あいうえおかきくけこ
さしすせそぱぴぷぺぽ

のように表示させたいんですよね。


>>876
自分もTEXTMETRICとかでこねこねしたいんですけど、
DT_EDITCONTROL、つまりエディットコントロールの表示方法に合わせたいので
エディットコントロールがどうやって座標計算してるのかが分からないので・・・

でも、レスありがとうございます。
今まで相手にされてなかったので(´・ω・`)してまスた。
0878デフォルトの名無しさんNGNG
>>873
なんでスタティックリンクしないの?
0879デフォルトの名無しさんNGNG
>>877
毎回全部描く。
0880デフォルトの名無しさんNGNG
Win32APIでJPEGの表示ってサポートされていないんですか?

したらどうやってC/C++でJpegを表示するのだ。
VBでいうピクチャーボックスみたいなコントロールあるんですか?
0881デフォルトの名無しさんNGNG
お魚は最初から切り身になっているのではありません
0882デフォルトの名無しさんNGNG
なんかJPEG,PNGの質問って定期的にでるな。
0883デフォルトの名無しさんNGNG
>>880
表示できます。頑張って探して下さい。
0884デフォルトの名無しさんNGNG
ネタとしか思えんよな
0885デフォルトの名無しさんNGNG
実は質問してるのは全部同一人物で、忘れるたびに聞きにきている。
0886名無し@沢村NGNG
>>880
JPEGを扱うWin32APIはないよ。
だがJPEGをビットマップに変換してやれば簡単に表示できるよ。
0887880NGNG
ネタでした。
多々こういう質問があることも知っている。
できないのくらい知っているわ
なんでい、お前らは。
いたすぎるんだよ、発言が。
夜まわりしているような老人の脳みそしかないんだな?藁
0888デフォルトの名無しさんNGNG
縦横に文章作るって大変だな。
0889デフォルトの名無しさんNGNG
BI_JPEG と BI_PNG が混乱を招いてるような気も。
0890デフォルトの名無しさんNGNG
タ々きんたま、か。
0891名無し@沢村NGNG
みなみなさまがた〜教えてくださらんか〜みなみなさまがた〜♪
リッチエディットでキーワードを色づけするにはどうしたらいいの?
FindTextで選択状態にして色づけ→それを繰り返す、ってのはナシで頼むよ。
みなみなさまがた〜教えてくださらんか?
0892デフォルトの名無しさんNGNG
IME2000のユーザ辞書に登録されている単語(?)を取得して、
IME2002及びIME2003に登録したいんですが、どーやれば良いんでしょう?
ググってみても...なーも出て来ないし..._| ̄|○

『IMEの辞書登録から抽出して、それから登録』ってのは無しの方向で...
Imm〜関数で出来るんですかね?

誰か教えてくだされ<(_ _)>
0893デフォルトの名無しさんNGNG
>>891
write RTF by your self.

>>861

it's most easy way.
0894名無し@沢村NGNG
>>886
OleLoadPicture() ♪
0895デフォルトの名無しさんNGNG
>>877
lstrcat()つかう
0896デフォルトの名無しさんNGNG
>>894
それはWin32APIじゃなくてOLEだっての
0897デフォルトの名無しさんNGNG
>>896
屁理屈言ってんじゃねーよ。
0898デフォルトの名無しさんNGNG
>>897
それが屁理屈ならDirectShowを薦めてもいいのか?
0899デフォルトの名無しさんNGNG
>>898
本当に屁理屈ばかり言う奴だな。
DirextShowとは性格が違うだろ。
OleLoadPictureはWin32 SDKに標準で入ってるから、Win32APIでいいのさ。
0900デフォルトの名無しさんNGNG
>>899
んだね。
WindowsOSに標準で入ってるし。
0901デフォルトの名無しさんNGNG
流れぶった切ってすまんが、
自分のIPアドレスを取得するAPIってありますかな?
あったらおしえてくだされ。
0902デフォルトの名無しさんNGNG
GetIpAddrTable
0903デフォルトの名無しさんNGNG
>>899,900
どういう性格をしたAPIならいいの?
DirectShowが屁理屈なのは分かってるけど、
それでもWin95(OSR2以降だったか)にも標準で入ってたはずだし、
DirectX SDKを入れなくても利用できる。
かたや、OleLoadPictureだってWin32sじゃあ動かない。

テキトーな感覚でOleLoadPictureはよし、
DShowはダメみたいに切り分けてるのが納得いかないだけだ。
0904デフォルトの名無しさんNGNG
>かたや、OleLoadPictureだってWin32sじゃあ動かない。
必死すぎ
0905デフォルトの名無しさんNGNG
おいおまいら、必死杉はレバノン杉に次いで伐採による絶滅が危惧されているものなので
もっとやさしく扱ってやらないとグリーンピースがRMSと一緒に縦笛吹きながら攻めてきますよ。
0906デフォルトの名無しさんNGNG
Win32sはつらいな。せめてNT3.5とかさ。

ttp://www02.so-net.ne.jp/~okuda/tech/oleaut32/
によるとデフォ状態のWin95OSR2ぐらいではoleaut32には含まれず
olepro32に入ってるもののようだから、非常に標準的なWin32 API
であるとは言い難いのかもしれない。
0907デフォルトの名無しさんNGNG
TAとTAを接続してデータをやり取りをするソフトを
作成しようと思い、とりあえず、ハイパーターミナル同士を
接続したのですが、文字を打っても相手側に表示されません。

なにかプロトコルなどがあるのかとおもいますが、ソフト作成
時に使用するDLL、APIなどがあれば教えていただきたいのですが
よろしくお願いします。
0908デフォルトの名無しさんNGNG
的はずれ
0909デフォルトの名無しさんNGNG
>>902
�d
0910デフォルトの名無しさんNGNG
>>907
PC-TA-TA-PCと言う状態?
だったら、電話線ぶった切ってクロスにして、
片方で「ATD」もう片方で「ATA」コマンドを送れば繋がらない?
アナログモデムはその方法で繋がったと思うけど。
0911デフォルトの名無しさんNGNG
>>904
言い返せなくなると、必ず必死だなって言うよなw

だけど、明確な線引きも出来ないくせに、根拠も示さず
自分は正しいお前は正しくないって言うのはどうかしてるよ。
0912デフォルトの名無しさんNGNG
>>910
「ATD」「ATA」で繋がってはいるのですが(CONNECT状態)
その後、アナログモデムの場合は文字を送れるのですが、
TAだと送れないという状況です。
0913デフォルトの名無しさんNGNG
>>911
Win32sはぶっちゃけありえない
0914デフォルトの名無しさんNGNG
>>911
そんじゃDirectXやMFCなどは専用スレがあるんで
ここではスレ違いという線引きでお願いします。
0915デフォルトの名無しさんNGNG
>>912
あのねー、TAの通信はモデムとは違うよ。
デフォルトはたぶん同期通信だよ。
シリアルポートとの間で同期-非同期PPP変換をやってくれる。
これが確かV.120。

非同期モードにしないとモデムのように無手順でデータをやり取りすることは出来ない。
こっちはV.110だと思った。
懐かしい話だな。
0916デフォルトの名無しさんNGNG
>>915
どもです。
同期でやるにはHDLC手順でやり取りしないと
いけないのかな・・・

なんかわけわかんないからやめよう・・・
0917デフォルトの名無しさんNGNG
DialogにMenuを追加したいのですがどうすればいいのですか?
おせーて
0918デフォルトの名無しさんNGNG
>>914
COMスレもありますよ。
0919デフォルトの名無しさんNGNG
>>917
リソースエディタでメニューを作成。
ダイアログのプロパティを開き、
「メニュー」に作成したメニューのIDを選択。

0920デフォルトの名無しさんNGNG
数当てのゲーム?っぽいの作ってるんですけど
乱数を表示する方法がわかりません。
どうすれば・・・
0921デフォルトの名無しさんNGNG
>>919
なるほどこんなに簡単な作り方だったんですね。
分からないから..rcをテキストで開いて自分で書いてました。
今度からは上のやりかたしてみます。
0922デフォルトの名無しさんNGNG
>>920
MessageBox("乱数")
0923デフォルトの名無しさんNGNG
ワラタ
0924デフォルトの名無しさんNGNG
今、BMPファイル全体のRGB値の平均を出すプログラムを書いてるんですが、
BMPファイル(24bit)で、行が変わるところに0x00が二つ入ってるものと入ってないものがあって困ってます。
二つの違いはなんなのでしょうか?どなたか教えて下さいまし。m(__)m
0925デフォルトの名無しさんNGNG
>>924
一行のバイト数は4の倍数
0926デフォルトの名無しさんNGNG
>>922
Σ(゚д`*;)アッ,アハァ?
0927デフォルトの名無しさんNGNG
>>924
1ラインのサイズ(byte)は4の倍数でなければならないから
横サイズと色深度によっては末尾に余計な物がつくことがある。
0928924NGNG
>>925,927
ありがとうございました。そういう仕組みだったんですね〜
0929デフォルトの名無しさんNGNG
>>920
とりあえずWin32APIというよりもお使いの処理系の標準ライブラリに
乱数を返す関数くらい入っていると思われ。。。
VisualC++ならrandとかVBならRndとか。
0930デフォルトの名無しさんNGNG
>>903
常識的に考えたらWindows SDKの中に入ってるやつだろ。
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/

よって
OleLoadPictureは○
DirectXは×
ついでにGDI+は○
0931デフォルトの名無しさんNGNG
こんばんは
今で話題に上げっている内容とは違った質問なってしまいます.
FindFirstFile関数、FindNextFile関数を使って "D:\"以下(サブフォルダ含む)のテキスト
ファイル(*.txt)を全検索しています。
通常両関数が返す構造体 【WIN32_FIND_DATA】の中の変数 「cFileName」にはフルパス名では
ファイル名のみが返ってくると思います.

そこで、
FindFirstFile関数で取得したファイルハンドル等を使用してファイルのパス名(フォルダ名)
を簡単に取得する方法は何かないでしょうか?

ウィンドウ関連だったら
ウィンドハンドルから該当の実行ファイル名、ウィンドウテキストやウィンドウクラスを取得
する事が出来るのですが...。

どなたかご存知でしたらよろしくお願いします。
VB使っています。
0932デフォルトの名無しさんNGNG
>FindFirstFile関数で取得したファイルハンドル
は?
0933デフォルトの名無しさんNGNG
>>931
MSDNを何万回も読み直した方がいいよ
0934デフォルトの名無しさんNGNG
>>931
フォルダ名だったら最初からわかってるじゃねーか
0935デフォルトの名無しさんNGNG
すみません。
場違いな質問内容だったみたいなので出直しておきます。
0936デフォルトの名無しさんNGNG
フォルダパスわたしてファイルみつけてそのファイルのあるフォルダパスは?

とんち?一休さーん!
0937デフォルトの名無しさんNGNG
>>936さん
すみません。
未熟なものでイメージが全然湧かないです。
具体的な実コーディング方法または記載されているサイト等があれば教えて下さい。
0938デフォルトの名無しさんNGNG
>>937
なあ、一セットの FindFirstFile/FindNextFile
でサブフォルダまで一気に検索してくれると思ってない?
0939デフォルトの名無しさんNGNG
ttp://www.sm.rim.or.jp/~shishido/subdir.html
俺はここのを参考にした。
0940デフォルトの名無しさんNGNG
>>937
好きなところ見てくれ
http://www.google.co.jp/search?q=FindFirstFile&ie=UTF-8&hl=ja&lr=lang_ja
0941デフォルトの名無しさんNGNG
system("find dir -type d");
0942デフォルトの名無しさんNGNG
どうもありがとうござします。
ご参考にさせて頂きます。
0943デフォルトの名無しさんNGNG
>>942
よく見ると、不思議な敬語だね。
0944デフォルトの名無しさんNGNG
参考にするのは自分自身、あげちゃいけないね。
0945デフォルトの名無しさんNGNG
ご質問させてください!
0946デフォルトの名無しさんNGNG
ご丁重に断ります!
0947デフォルトの名無しさんNGNG
>>945
ずいぶん偉そうですね。
0948デフォルトの名無しさんNGNG
PostMessageが失敗したときってどうすりゃいいの
0949デフォルトの名無しさんNGNG
あきらめろ
0950949NGNG
誤爆スマソ
0951デフォルトの名無しさんNGNG
質問です。
WM_CREATEメッセージのところで、
CreateWindowを用いてボタンを作ったんですが
WM_PAINTメッセージが来たところで一度BeginPaintしないと
表示されません。
また、ボタンをオーナードローで書いてみようと思い、
WM_DRAWITEMメッセージにブレイクポイントを仕掛けても
止まらないんですが、これって何がダメなんでしょうか。
教えて、エロイ人!
0952951NGNG
すんません・・・
激しく自己解決しました・・・・・・
0953デフォルトの名無しさんNGNG
dword型とは?
0954デフォルトの名無しさんNGNG
>>953
謎掛けですか?
0955デフォルトの名無しさんNGNG
Byte型とは?
Word型とは?
DWord型とは?
QWord型とは?
TByte型とは?
0956デフォルトの名無しさんNGNG
>>955
それらは見たことがあります。
0957デフォルトの名無しさんNGNG
俺だって見たことがある。
0958デフォルトの名無しさんNGNG
男とはなんぞや…
0959デフォルトの名無しさんNGNG
ダブルワード型変数によくdwHogeって名前付いてるけど、
バイト型変数には何つけるの?byHogeとか?
0960デフォルトの名無しさんNGNG
http://masafumi-t.cool.ne.jp/ready3.htm
0961デフォルトの名無しさんNGNG
なるほど、変換ミスを放置するような香具師にはハンガリアン記法も必要だと言うことですね。
0962デフォルトの名無しさんNGNG
リソースからBMP表示できるようになったんだけど、
2種類以上のBMPが表示できまへん。
教えてかっこいい人
0963デフォルトの名無しさんNGNG
MessageBox等のOKやキャンセル等のプッシュボタンを
旧来のではなくてXP風のマウスのポインタを合わせるとボタンの周囲がオレンジで
ふちどられるようにするには通常のMessageBox()では実現可能なのでしょうか?
0964デフォルトの名無しさんNGNG
ファイルをバイナリモードで開く方法を教えて下さい
0965デフォルトの名無しさんNGNG
fopen("filename","b");
0966デフォルトの名無しさんNGNG
>>965
いくらなんでもそれはないだろう……
0967デフォルトの名無しさんNGNG
SDKでfopenは互換性があるのですか?
0968デフォルトの名無しさんNGNG
>>964
Windowsには「バイナリモード」などというものは存在しません。
フツーにCreateFileで開いてください。

テキストストリームの行区切りが\nであると定めているのは、あくまで
「C言語の」仕様に過ぎない。それに合わせるために、MS-DOSだのWindowsだの
MacだののCのランタイムでは、わざわざテキストモードだのバイナリモード
なんてのを用意して、改行を\n一文字に見せてるワケ。
0969デフォルトの名無しさんNGNG
\r\n・・・Win
\n・・・Unix
\r・・・Mac
だっけ?
元々印刷の時に復帰、改行の問題があったんだよ。
改行だけでよかったのが復帰がないと間に合わないってだけで作られた過去の遺産。
0970デフォルトの名無しさんNGNG
>>969
OSの改行の扱いの違いと、言語仕様の違いはまた別の話だな。
Cがテキストストリームをタイプライタ式で行区切りを\nと定めてるのは、
単にUNIXがそうだから、と言ってしまえばそれまでだが、
むしろ昔の固定長レコードのデータセットが主流だった計算機への反逆じゃ
ないんかと。FORTRANとかCOBOLとかの入出力仕様はモロにその頃のアレだよね。
そういう時代では、そういう腐った入出力レイヤを抽象化・単純化して
扱いたいという発想は極めて自然なものだったんだろうと思う。
後は、計算機で扱う主要なデータがテキストであったとか、むしろテキストに
したかったとか。
0971デフォルトの名無しさんNGNG
他にも過去のしがらみに縛られてるのがたくさんあるからな。
多少互換性無視してでも断ち切ってもらいたいよ。
0972デフォルトの名無しさんNGNG
>>967
言ってる意味がよくわからんが
いわゆるSDKスタイルで書いてる、WinMain()ではじまるような
ウィンドウアプリケーションでfopen()を使えるんですか?という
意味なら、勿論使えるよ。ただし、Cランタイムをリンクすれば、
という条件つきだが、まあ普通のコンパイラなら何もしなければ
デフォでリンクする。

ただし、あなたが書こうとしてるのがDLLやインプロセスCOMサーバ
の類なら、使えないことはないけど、いろいろ問題があるからlibcに
依存するのはなるべく避けたほうがいい。
0973デフォルトの名無しさんNGNG
>>972
というか、ここはCスレじゃないからそもそも使えない可能性が・・・
0974デフォルトの名無しさんNGNG
>>964
Open "FileName" For Binary As #1
0975963NGNG
すいません自己解決いたしました_| ̄|○
0976デフォルトの名無しさんNGNG
>>972
ということはWinアプリケーションは
stdioのようなCライブラリもランタイム結合なんですか?
それとも実行ファイルの段階でCライブラリは静的結合されているんですか
0977デフォルトの名無しさんNGNG
>>976
そんなもん処理系次第。VC++なんかはどちらも選べる。
0978デフォルトの名無しさんNGNG
>>977
レスありがとうございます。
ということは
実行ファイル+DLL(Cランタイムライブラリ・WINAPI)
実行ファイル(Cライブラリ)+DLL(WINAPI)
のどちらになるか、またはオプションになるかは
処理系依存ということですね
0979デフォルトの名無しさんNGNG
>>978
「Cランタイム」つーときの「ランタイム」は、別にDLLとは関係のない
概念で、ちょと意味が違う。
言語サポートのために実行時に呼ばれるライブラリ関数群という程度の意味で、
DLLとして実装されてるかスタティックリンクライブラリとして実装されてる
かは問題ではない。
0980デフォルトの名無しさんNGNG
>>979
2chの教えてレスで
ここまで丁寧にレスをもらったのは始めてです
すっきりしました!
0981デフォルトの名無しさんNGNG
またまた質問です
コンパイラはMingwなんですが、MingwがリンクするCランタイムライブラリは
msvcrtとlibcのどちらなんでしょうか?
0982981NGNG
すいませんMingwがリンクするじゃなくて
MingwでコンパイルしたWinアプリがの間違いでした
0983981NGNG
自分で行ってて訳分からないや・・orz
つまり、動的にリンクするライブラリが
コンパイラ付属のlibcとmsvcrtの2つあるのが、なんか?なんです。。。
0984デフォルトの名無しさんNGNG
Mingwで作成したバイナリをDependency Walkerで見れば一目瞭然。
0985デフォルトの名無しさんNGNG
処理系依存な質問ですが
Mingwは独自LIBCをいつ使うんですか?
静的リンクの時ですか
0986デフォルトの名無しさんNGNG
処理系依存だと分かってるなら該当スレで聞け阿呆
0987 ◆Manna2uCLg NGNG
こっそり次スレ立て......
0988 ◆Manna2uCLg NGNG
……規制中だったょ…
だれかよろしこ…

ちなみに、当方 plala でつ…
0989デフォルトの名無しさんNGNG
MinGW は常に msvcrt をダイナミックリンクで使う。
スタティックリンクはできない。独自 libc を持つ予定は
いまのところない。
0990デフォルトの名無しさんNGNG
>>989
gooooooooooooooooooood job!!!!!!!!!!!!
0991デフォルトの名無しさんNGNG
>>989
オプションで crt, VC6, VC7 の DLL にも切りかえれるけどな。
0992デフォルトの名無しさんNGNG
>>955
byte型は分かります
dbyteはdouble byte型ですよね?
dwordはdouble wordで
word型とはナンですか?
0993デフォルトの名無しさんNGNG
>>992
(゚Д゚≡゚Д゚) dbyteはどこからキタ

word は byte 2ヶ
0994デフォルトの名無しさんNGNG
#define DBYTE WORD

0995デフォルトの名無しさんNGNG
case sensitiveな言語の話をしているときに混乱するようなこと書くなよな。
0996デフォルトの名無しさんNGNG
>>993
dbyteなんて書いてありませんでした
有難うございます
0997デフォルトの名無しさんNGNG
DWORD = unsigned long
desuka?
0998デフォルトの名無しさんNGNG
環境依存
0999デフォルトの名無しさんNGNG
Win32API質問箱 Build19
http://pc5.2ch.net/test/read.cgi/tech/1084697545/
1000デフォルトの名無しさんNGNG
↓1001
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。