トップページ⇒tech
981コメント289KB

Win32API 質問箱 Build7

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさんNGNG
スレ立てるまでもない、Win32APIについての質問はこちらへどうぞ。
やさしいお兄さんたちが答えてくれるかも。
でも、最低限Web検索ぐらいはしてね。

過去スレ
Win32API 質問箱 Build6
http://pc3.2ch.net/test/read.cgi/tech/1032548635/
Win32API 質問箱 Build5
http://pc3.2ch.net/test/read.cgi/tech/1028580373/
Win32API 質問箱 Build4
http://pc3.2ch.net/test/read.cgi/tech/1023361418/
Win32API 質問箱 Build3
http://pc.2ch.net/tech/kako/1006/10067/1006783012.html
Win32API【2】
http://pc.2ch.net/tech/kako/1006/10067/1006783012.html
Win32API 質問箱
http://pc.2ch.net/tech/kako/991/991576947.html

参考
MSDN Online
http://www.microsoft.com/japan/msdn/default.asp
猫でもわかるプログラミング
ttp://www.kumei.ne.jp/c_lang/index.html
0002デフォルトの名無しさんNGNG
        まもなくここは 乂1000取り合戦場乂 となります。

      \∧_ヘ     / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ,,、,、,,, / \〇ノゝ∩ < 1000取り合戦、いくぞゴルァ!!       ,,、,、,,,
    /三√ ゚Д゚) /   \____________  ,,、,、,,,
     /三/| ゚U゚|\      ,,、,、,,,                       ,,、,、,,,
 ,,、,、,,, U (:::::::::::)  ,,、,、,,,         \オーーーーーーーッ!!/
      //三/|三|\     ∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
      ∪  ∪       (    )    (     )   (    )    )
 ,,、,、,,,       ,,、,、,,,  ∧_∧∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
      ,,、,、,,,       (    )    (    )    (    )    (    )

http://big.freett.com/scheme_a/num1000.swf
0003デフォルトの名無しさんNGNG
>>1 乙

>>2 せっかちさん
0004デフォルトの名無しさんNGNG
1 乙
2 のタイムスタンプが素晴らしい。
リンクのフラッシュはもっと素晴らしい。誰が作ったんだ。
0005デフォルトの名無しさんNGNG
5get
0006デフォルトの名無しさんNGNG
ダイアログを生成して、ユーザにいくつかの文字列を選択させます。
その文字列をlist<string>などで返したいのですが、どういう手段が考えられるでしょうか?

DialogBoxParamを用いてlist<string>のポインタを渡してやれば良いとは
思いますが、もう少しスマートな解決法を模索しています。
0007デフォルトの名無しさんNGNG
CD−ROMをRAW読み込みするにはASPIつかわないと駄目なんでしょうか。
CD-ROMドライブを直接読み込んだらRAWなしのISOイメージになってしまいます。
0008デフォルトの名無しさんNGNG
前スレから持ち越し。
このコードはリンクするライブラリをマルチスレッド対応版にするだけで動くんだが何故だ?
_beginthreadex() って要らないの?

struct ThreadInfo { HANDLE hMutex; char TestStr[12]; };

DWORD WINAPI TestFunc(LPVOID ThreadData)
{
ThreadInfo &Info = *(ThreadInfo *)ThreadData;
std::string RetStr("result: "); const char *sep = ",";
char IDBuf[64]; sprintf(IDBuf, "Thread 0x%08X Info", GetCurrentThreadId());
WaitForSingleObject(Info.hMutex, INFINITE); Sleep(100); char *s = strtok(Info.TestStr, sep); ReleaseMutex(Info.hMutex);
while(s) {
RetStr += s; RetStr += " - ";
WaitForSingleObject(Info.hMutex, INFINITE); Sleep(100); s = strtok(NULL, sep); ReleaseMutex(Info.hMutex);
}
MessageBox(NULL, RetStr.c_str(), IDBuf, MB_OK);
return 0;
}

int main()
{
DWORD Thread1ID, Thread2ID; HANDLE hMutex = CreateMutex(NULL, TRUE, NULL);
ThreadInfo Info1 = { hMutex, "ab,cd,ef,gh" }, Info2 = { hMutex, "12,34,56,78" };
HANDLE hThread1 = CreateThread(NULL, 0, TestFunc, &Info1, 0, &Thread1ID);
HANDLE hThread2 = CreateThread(NULL, 0, TestFunc, &Info2, 0, &Thread2ID);
ReleaseMutex(hMutex);
WaitForSingleObject(hThread1, INFINITE); WaitForSingleObject(hThread2, INFINITE);
return 0;
}
00098NGNG
で、前スレで 「名前を指定してCreateMutexしなきゃ」 と言われたんだけど、
名前付きミューテックスと名前無しミューテックスとで、何か動作が変わるの?
0010デフォルトの名無しさんNGNG
MTでなければ、strtokが死ぬ。
MTであれば、beginthread*を使わずとも、必要な情報は
OnTheFlyでライブラリが用意する。ただし、その情報を格納
するのに使ったcallocは、DLL版でないと開放されない。
(beginthread*なら、開放される)
0011デフォルトの名無しさんNGNG
>>9
前スレ読んでないのでその文脈で名前付きが必要なのかは分からんが、
名前付き同期オブジェクトは、同じ名前を指定する事で複数のプロセス
の間で共有できる(いちいちハンドルを複製して相手に渡す必要が無い
ので扱いが楽)

1プロセス内(の各スレッド)からしか使わないなら名前無しでいい。
0012デフォルトの名無しさんNGNG
前スレ(Build6)を保存しときますた。
Build4は未だにdat落ちしたままなのか…

-=-=-=-=-=-=-=-=-=-=
ここまで読んだ
-=-=-=-=-=-=-=-=-=-=
00138NGNG
>>10
そうなのか・・・。
動きはするけど後片付けしないと・・・。
らじゃ、サンクス。

>>11
8 のコードを指して言われた。
でもこのコードだけで言えば必要無いよね。
サンクス。
0014前スレNGNG
前スレ996〜998の話が丁度いい所で終わっちまってる。
続き聞かせて
0015デフォルトの名無しさんNGNG
>>14
あれはそのつもりのネタだろ
0016デフォルトの名無しさんNGNG
少しお聞きしたいのですが、
WindowsXPproでユーザーアカウントの画像を
ランダムに変更するプログラムを作りたいんですよ。
それでレジストリ書き換えて
(HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Hints\(ユーザー名)\PictureSource)
C:\Documents and Settings\All Users\Application Data\Microsoft\User Account Pictures\ユーザー名.bmp
のフォルダに画像を生成させるとこまではできたのですが、
そのあと表示を更新させる方法がわかりません。
手動でなら、
コンパネ→タスクバーのプロパティ→スタートメニューのカスタマイズ
を開いて全てOKでとじれば更新されるのですが・・・。
どなたかご存じの方がいらっしゃれば宜しくお願いします。
0017デフォルトの名無しさんNGNG
Win2k で使えて、WinNT6 で使えない API 関数を調べたいのですが、
どこかに良いサイトはありますか? オフィシャルにある?

0018デフォルトの名無しさんNGNG
>>17
そんな API がどうしてあると思ったの?
0019デフォルトの名無しさんNGNG
>>17
なんでNT5、あるいはXPという表記じゃないの?
0020デフォルトの名無しさんNGNG
>>19
XPはNT6じゃないから(NT5.1)、と言ってみる
0021デフォルトの名無しさんNGNG
一定時間PCに入力(キーボード・マウス)がないと
何かの処理をするってゆ〜のを実現する方法ってないですかね?
自アプリへの入力だけぢゃなく、他アプリへの入力も考慮に入れたいんですけど・・・
0022デフォルトの名無しさんNGNG
>>21
スクリーンセイバー。
またはフック。
0023デフォルトの名無しさんNGNG
DLL内で共有する変数を#pragmaで宣言したいんですが、
変数が2次元配列の場合はどうやって初期化すればいいですか?
今はこのように初期化してます。
#pragma data_seg(".shared")
int data = 0;
int pnt[1000]={0,};
#pragma data_seg()

POINT型を使いたいのですが、初期化方法がわかりません。
0024デフォルトの名無しさんNGNG
唖然・・・。
初期化の方法もまともに知らないで DLL に手を出しちゃうの?

int array[3][3] = {
{ 11, 12, 13 },
{ 21, 22, 23 },
{ 31, 32, 33 }
};

第一、POINT は 2 次元配列じゃない。構造体。

POINT pt = { 10, 20 };

つーかそもそも、DLL 内の共有域を初期化しても、コードによってはどっから
どんな更新があるかわからんぞ。
0025デフォルトの名無しさんNGNG
>>23
(Cの)構造体や、その多次元配列でも、= {0};でいける。
POINT p[10][20][30] = {0];
0026デフォルトの名無しさんNGNG
>>23
つーか、0 初期化したいだけなら、グローバルにはその必要が無い。
グローバルは初期化指定しなくても 0 初期化される事が保証されている。
0027デフォルトの名無しさんNGNG
>>26
それは一般論だろ。
この場合初期化しないとせっかく宣言した .shared セクションではなく
.bss に領域が取られてしまうの。
002826NGNG
>>26
本当だ。今知った。

でも、一般論じゃなくて C/C++ の規格の話なのだが。
まずくないのか?
002926NGNG
あ、規格というのは data_seg がどうのという話じゃなくて、グローバルなのに
dup(?) になるって話。
0030aruNGNG
スレ違いだと思うので、ごめんなさい。
でも、もし知っている人がいたら教えてくだされ。

WindowsXP DDKのデバッグ情報をモジュールに入れ込むにはどうすればいいんですか?
PDBを作らないように設定しようと思ったけど、うまくいかないし…。
おかげでビルドしているPCでしかデバッグできなそう。
デバッグPCでデバッグしたいのになぁ。
makefileをいじったけど、全然うまくいかないし (T_T)
0031デフォルトの名無しさんNGNG
>>28-29
ここはWin32 APIスレなんですが。
C/C++ の規格の話ならスレ違いでしょ。
http://pc3.2ch.net/test/read.cgi/tech/1036876790/
http://pc3.2ch.net/test/read.cgi/tech/1035005882/
VC++に依存しない話という意味で一般論と書いたの。
0032デフォルトの名無しさんNGNG
で、Win32環境に限って言えばBSSセクションはゼロクリア
されることが保証されているので普通はまずくない。
プロセス間で変数を共有するとか特殊なことがしたいときに
だけ問題になるけどそれはすでにC/C++の規格の話ではない。
0033デフォルトの名無しさんNGNG
Win32 API スレと厳密に言うなら、VC++ 固有の話はスレ違いだと思うが。
0034デフォルトの名無しさんNGNG
>>30

外してたらスマンが、
PDBで無くデバッグ情報を作る(ファイル内に)ようにして
rebaseで.dbgファイルを作ればできた気がする。
0035デフォルトの名無しさんNGNG
プロセス間通信などは考慮して作られていないプロセスの
メモリアドレスの内容を直接読む方法ってありますか?
0036デフォルトの名無しさんNGNG
VirtualQueryEx とかかな。
0037デフォルトの名無しさんNGNG
VirtualQueryExで得られるのはメタ情報であって
「読む」という言葉から一般にイメージするのは
ReadProcessMemoryのほうでは
003835NGNG
>>37
ありがとう。試してみます。
003935NGNG
読めずにFALSEが返ってきます。
何がまずいんでしょうか;;
(Win2000sp3、Adminです。)

#include <windows.h>
#include <iostream>
using namespace std;
int main(int argc, char* argv[])
{
DWORD dwBase = 7471220; //読み込むアドレス
LPCVOID lpBaseAddress = (LPCVOID)dwBase;
int cbRead = 2; //2バイト読む
LPTSTR lpBuffer = (LPTSTR)malloc(cbRead);

HWND hWnd = FindWindow("Notepad", NULL);
BOOL bResult = ReadProcessMemory(
hWnd,
lpBaseAddress,
lpBuffer,
cbRead,
NULL
);
if (bResult == FALSE){
cout << "メモリの読み取りに失敗しました。" << endl;
}
cout << lpBuffer <<endl;
return 0;
}
004035NGNG
ハンドルを勘違いしてたので修正しましたがだめだったのでエラーコード
取ってみると
「ReadProcessMemory要求またはWriteProcessMemory要求の一部だけを完了しました。」
と出ました。どこが間違ってるんだろう;;
004135NGNG
#include <windows.h>
#include <iostream>
using namespace std;
int main(int argc, char* argv[])
{
DWORD dwPid;
LPTSTR lpError;
DWORD dwBase = 9460301;
LPCVOID lpBaseAddress = (LPCVOID)dwBase;
int cbRead = 1; // 1バイトだけ読む
LPTSTR lpBuffer = (LPTSTR)malloc(cbRead);
// プロセスハンドルの取得(メモ帳)
HWND hWnd = FindWindow("Notepad", NULL);
GetWindowThreadProcessId(hWnd, &dwPid);
HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwPid);
if(hWnd == 0){
cout << "メモ帳が起動されていません。" <<endl;
return 0;
}
BOOL bResult = ReadProcessMemory(hProcess, lpBaseAddress, lpBuffer, cbRead, NULL);
if (bResult == FALSE){
cout << "メモリの読み取りに失敗。" << endl;
FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
NULL, GetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR) &lpError,
0, NULL
);
cout << "Error MSG: " << lpError <<endl;
}
cout << lpBuffer <<endl;
return 0;
0042デフォルトの名無しさんNGNG
あるクラスに参照カウントを持たせ、InterlockedIncrement./InterlockedDecrementで
マルチスレッド対応にしようとしたのだが…

void ref() {
InterlockedIncrement(&m_ref); 
}
void release() {
 if (InterlockedDecrement(&m_ref) == 0) {
  delete this;
 }
}

ところが、delete thisの直後にref()が呼ばれると、m_ref自体が解放された領域にあるため、
とんでもない値になってしまう。参照カウントをメンバー変数にするのが間違い?
どうしたらいんだろう?マルチスレッドのエキスパート様の降臨おながいします。
004342NGNG
マルチスレッドプログラミングのスレを発見したのでそちらに移ります。ゴメソ
0044デフォルトの名無しさんNGNG
staticじゃないメンバ関数をコールバックさせることはできますか?
おねがいします。
0045デフォルトの名無しさんNGNG
>>44
コールバック関数にthisを渡してやれば解決できない問題なの?
0046デフォルトの名無しさんNGNG
OpenGLの描画を行うと画面下につけたステータスバーが消えちゃうんですが
回避する方法を教えてください。

glviewportやglscissorsを使ってOpenGLの描画範囲を制限しても駄目でした。

VC++&SDKです。
0047名無し@沢村NGNG
皆々様方〜教えてくだされ〜♪
stopボタンを押したときにforループを抜けるようにしたいんですが、どうすればいいですか?
0048デフォルトの名無しさんNGNG
>>47
WinAPIはしらんけど、
for文の脱出条件にフラグ一個置いといて、ボタン押したら
フラグ立てたら?
0049名無し@沢村NGNG
>>48
それはやってみました。
が、forループの間、ボタン自体押せなかったっス。
0050デフォルトの名無しさんNGNG
なぜWin32APIを知らずにここで答えてるんだろう…
0051デフォルトの名無しさんNGNG
>>49
PeekMessageとforループあたりで検索すればサンプルが見つかるかも
0052デフォルトの名無しさんNGNG
ふつうMulti Threadにするとおもふ
0053デフォルトの名無しさんNGNG
この程度なら普通マルチにしないが。
マルチは嫌われるぞ。
0054デフォルトの名無しさんNGNG
>>46
MainWindowの中にChildWindowを貼り付けて、それをOpenGL化するよろし。
ただしこれを受け付けないグラフィックカードがあるから注意されたし。
0055デフォルトの名無しさんNGNG
マルチって嫌われるんですか?
0056デフォルトの名無しさんNGNG
UNIXのatexit( )関数のように終了時に実行される関数を登録するAPIは
ありますか?
ただいまpdhEnumObjectItems()を使ったプログラムをテストしているのですが、
なかなかmainにおいてreturnしたあと、なかなかプロンプトが返ってきません。
そこでatexitのようなものを試しに使ってみたいと思いました。

よろしくお願いします。
0057デフォルトの名無しさんNGNG
http://www.microsoft.com/japan/developer/library/vccore/_crt_atexit.htm
逝ってきます・・・
0058名無し@沢村NGNG
皆々様方〜、教えてくださらんか〜?
InvalidateRect((HWND)param,&rect,FALSE);で画面を更新すると画面がちらちらしてきたないのだが、
ちらちらしないで画面を更新するにはどうしたらいいのですか?
皆々様方〜、教えてくださらんか〜?
0059デフォルトの名無しさんNGNG
オフスクリーン デバイスコンテキスト
0060デフォルトの名無しさんNGNG
CS_*REDRAWを削除
WM_ERASEBKGNDを処理
006146NGNG
>>54
おお、なるほど。
やってみたらちゃんと動きました
ありがとうございます
0062デフォルトの名無しさんNGNG
TV_INSERTSTRUCTのitem.lParamって好きな値って
構造体のポインタとかいれて、後で使ったりするための変数?

好きな値いれていいのかな?
0063デフォルトの名無しさんNGNG
>>62
イイ!
0064デフォルトの名無しさんNGNG
急にお好み焼きそばが食べたくなった。
0065デフォルトの名無しさんNGNG
唐揚げを食え。
0066デフォルトの名無しさんNGNG
唐揚げうまうまって何のことかと思ったら
空ageにかけてたのか
0067デフォルトの名無しさんNGNG
クライアント領域が完全に隠れているかどうかを調べるにはどうしたら良いですか?
0068デフォルトの名無しさんNGNG
 厨房な質問ですいません。
WM_ENDSESSIONなどをヘルプで引くと、
「このメッセージを処理するアプリケーションは、 0を返さなければなりません。」
とかかれていますが、メッセージに値を返すにはどうしたら良いのでしょうか
0069デフォルトの名無しさんNGNG
>>68
return 0;
0070752NGNG
一つ聞きたいことがあるのですが、
整数があって、特定の桁数にそろえて文字列(CString)
に代入するにはどうすればいいでしょうか?
例:
int i = 20;
CString s;
5桁にそろえるとき、
sに00020という値が欲しいわけです。
0071デフォルトの名無しさんNGNG
>>70
スレ違い。
0072あNGNG
>70
Format
っていってるだろ
頭悪いのか?
マルチしね。
0073デフォルトの名無しさんNGNG
>>72
時間見れアフォ。
0074デフォルトの名無しさんNGNG
シャットダウンのイベントを取得する方法って何かありませんか?
0075デフォルトの名無しさんNGNG
シャットダウン時にイベントを取得する方法を知っていたら、教えていただけませんか?
0076デフォルトの名無しさんNGNG
WM_QUERYENDSESSION/WM_ENDSESSION
007767NGNG
すいませんが誰かわかりませんか?
0078デフォルトの名無しさんNGNG
透過ウインドウの話ってかなり既出かもしれませんが、
生きてる過去ログあさってみたけどほとんど見つからず。
手ほどきお願いします。
Googleで引っかかったまともなHPは
http://techtips.belution.com/ja/vc/0005/
これぐらいでした(検索キー 透過ウインドウ)
007978NGNG
自己レスです。
SetLayeredWindowAttributesでいけるみたいです
「透明ウインドウ」で検索すると結構引っかかりますね、鬱だ・・・。
0080デフォルトの名無しさんNGNG
>>77
何がしたいのかわからんが、
GetUpdateRgn()で空のREGIONが返ってきたらとかいうのはダメかな。
試してないけど。
008167NGNG
>>80
常にレンダリングしていまして、
クライアント領域が他のウインドウに完全に隠れている状態では
レンダリングを中止させようと考えています。
基本的なことが良く分からないのでとりあえずリージョンについて調べてみます。
どうもありがとうございました。
008268NGNG
>>69
 Delphiで、Application.OnMessageを使った時はどうすれば良いのでしょうか?
0083デフォルトの名無しさんNGNG
>>81
常にInvalidateRect(NULL, TRUE)するとか。
完全に隠れていればWM_PAINTが発生しない。
0084デフォルトの名無しさんNGNG
>>81
GetClipBox を使えばよろしい。
0085デフォルトの名無しさんNGNG
おいおまいら、
エディットコントロールのオーナードロー(自前で描画)ってできませんか。
やっぱ1から自作するしかないんでしょうか?

カーソル移動(マウス/キーボード)とかクリップボード周りの実装とか禿げしく面倒なヨカーン
0086デフォルトの名無しさんNGNG
よくわからんけど、オーナードローするならカーソル移動は実装しなきゃ
逝けないんじゃないのか?
(EM_OWNERDRAW なんてのが MSDN に見当たらないからできなさそうだけど)
0087デフォルトの名無しさんNGNG
クリップボード回りはそんなに面倒ではないよ。
0088デフォルトの名無しさんNGNG
というか、カーソル移動とかに比べたら全然簡単だけど。
API 調べたらすぐ終わる。
0089デフォルトの名無しさんNGNG
そういや、リストビューで、「左キー押したら左セルに、下キー押したら
下セルに」みたいな処理してたら、なんとなくパチモンエディタみたく
感じたことがある・・
0090デフォルトの名無しさんNGNG
うぃ、おまいさんら!

DLL内から、WMメッセージを取得する方法を教えてください。
でも、EXE本体は全くいじれない。
0091デフォルトの名無しさんNGNG
おなじプロセスに居るなら、サブクラス化したらええやん。
0092デフォルトの名無しさんNGNG
>>82
メインフォームにWM_ENDSESSIONのメッセージハンドラを作って
そこで処理してから message.Result に返したい値を入れる。
っちうかスレ違いじゃメルシィボケェ。
0093デフォルトの名無しさんNGNG
ファイルの一覧をリストビューで表示しているのですが、
IEで右クリックすると出て来るポップアップメニューと
同じ物を作るにはどうしたらいいのでしょうか。
0094デフォルトの名無しさんNGNG
TrackPopupMenu、、、というわけではなく、
Shellのメニュー用インターフェースがどうこう、という話?
0095デフォルトの名無しさんNGNG
>>94
オリジナルのポップアップは作れるのですが、
IEと同じ挙動(ファイルの種類によって違うメニューがでる)にできないのです・・・
0096デフォルトの名無しさんNGNG
test
0097デフォルトの名無しさんNGNG
IEじゃなくてEだろ
009867NGNG
リージョンのハンドルを作成しなくてはいけないことと、
WM_PAINTが発生しない状態かどうか判断しにくいということで、
結局>>84さんの方法で行かせてもらいました。
遅くなりましたが、レスくれた方々どうもありがとうございました。
0099デフォルトの名無しさんNGNG
>>95
MSJ97/4号のWicked Code。
だが、これはファイル一つ用だけのメニューしか出せない。
複数のファイルのメニューをだすには、ファイル数分のITEMIDLISTを取得する必要がある。
また、「送る」を実装するにはIContextMenu2を使う。
0100デフォルトの名無しさんNGNG
エディットコントロール使わずにエディタ作ろうと思ってるんだけど、
データは1行ずつをリストで管理して、表示の時(WM_PAINT)に表示開始行まで
リスト移動させて、1ページ分TextOutで表示させてるんだけど、遅いマシンだと
スクロール時にかなり画面がちらつく。

で、CreateCompatibleDCでつくったDCにTextOutして1ページ分書き終えたあと
BitBltしたんだけど、これだとなぜか全く表示されない。

ちらつかせないためには、どうしたらいいの?
0101デフォルトの名無しさんNGNG
>>100
スクロールする時にScrollWindowEx使ってるか?
あと、PAINTSTRUCTのrcPaintに更新領域が入ってるから、
その中に入るテキストだけ描画するようにすれば軽くなる。

メモリDCには、ビットマップ作ってSelectObjectしておかないと
描画しても無意味。
0102デフォルトの名無しさんNGNG
>>101
スクロールはウインドウスタイルにスクロール属性つけて、WS_HSCROLL,VSCROLL
を処理してる。

>メモリDCには・・
そうだったのか。。って、ビットマップ作るってどういうこと?
0103デフォルトの名無しさんNGNG
> スクロールはウインドウスタイルにスクロール属性つけて、WS_HSCROLL,VSCROLL
> を処理してる。
つーかその「処理」の内容。
0104デフォルトの名無しさんNGNG
>>103
単に内部の変数(開始行)を加減して、InvaridateRectして、
SetScrollPosでスクロールバーを変更してるだけです。
ScrollWindowExは使ってないです。
0105デフォルトの名無しさんNGNG
なぜ ScrollWindow(Ex)? を使わない。
1ページ全部 TextOut で描画し直すよりも ScrollWindow(Ex)? でスクロールして、
新たに画面内に入ってきた行だけを再描画した方が速いだろうに。
0106デフォルトの名無しさんNGNG
ボリュームコントロール→トーン→デジタル出力
のON・OFFを切り替えるにはどうすればいいですかね?
0107デフォルトの名無しさんNGNG
コントロールのウィンドウ内位置の座標を
取得する方法を教えてくらはい。
0108デフォルトの名無しさんNGNG
GetWindowRect
0109デフォルトの名無しさんNGNG
してからScreenToClient
0110デフォルトの名無しさんNGNG
IWebBrowser2を使用してHTMLイメージ全体を
取得するにはどうすればよいのでしょうか?
0111デフォルトの名無しさんNGNG
Windowsは大部分がCOBOLで書かれているそうだ。
C/C++&asmで記述されているMacOSXと比べて基本性能がケタ違いに低い。
0112デフォルトの名無しさんNGNG
>111
( ´д)ヒソ(´д`)ヒソ(д` )
0113デフォルトの名無しさんNGNG
ライブラリ関数について質問です
Video for WindowsライブラリのcapGrabFrame関数で取り込んだ画像を
RGBの配列に変換する方法をご存知の方教えてください。
イメージバッファには読み込まれてると思うんですが、
capSetCallbackOnFrame等を使わずに
そこをどうやってプログラムから参照すればいいのかわかりません。
よろしくお願いします。
0114デフォルトの名無しさんNGNG
1 行目からしてスレ違いな気がしないでもない

まー漏れ Video for Windows わかんねーけど
0115デフォルトの名無しさんNGNG
リッチエディットコントロールで、RTFの画像を表示したいのですが、
どうすればできるでしょうか?MFCが使えない環境なので、困っています。
0116 NGNG
>>111
ファミリーベーシックって聞いたよ。
直接ゲイシが言ってたから間違いない。
0117デフォルトの名無しさんNGNG
>>111 >>116
スレ違いだから出て逝ってくれ。
0118デフォルトの名無しさんNGNG
>>106
mixer...で始まるAPIの使い方を調べてみるといいんじゃないかな。
ボリュームコントロールと同等のことをするサンプルコードが
あったはず。
0119デフォルトの名無しさんNGNG
IWebBrowser2をオフスクリーンに描画する方法を教えて下さい。
メモリデバイスコンテキスト作ってSetDCとかできないんでしょうか?
0120デフォルトの名無しさんNGNG
>>119
TextOut(hdc,0,0,"IWebBrowser2",strlen("IWebBrowser2"));
0121デフォルトの名無しさんNGNG
keybd_event 以外で
起動しているIEへBackSpaceキーを送りたく、
ハンドルはIEのタイトルバーの所の値として

SendMessage(***, WM_KEYDOWN, VK_BACK, 0);
SendMessage(,*** WM_KEYUP, VK_BACK, 0)

としても、だめでした;。 どうしたら良いでしょうか?
0122デフォルトの名無しさんNGNG
WM_CHAR
0123デフォルトの名無しさんNGNG
訂正
×SendMessage(,*** WM_KEYUP, VK_BACK, 0)
○SendMessage(***, WM_KEYUP, VK_BACK, 0);
0124デフォルトの名無しさんNGNG
>>122
おお、 早速ありがとう!!
そのてがありましたね。試してみます。
0125106NGNG
>>118
レス、サンクス。
私もそれについては多少調べてみたんですが、
各ラインに対してMuteや音量の設定はできるようなのですが
デジタル出力のON・OFFに関する設定は見つかりませんでした。
mixerMessageを使えばいけるかなとも思いましたが
どんなメッセージを送ったらよいのか、さっぱりわかりませんでしたし。
使ってるサウンドカードはAudigyなんですけど
ドライバに対するプログラミングリファレンスなんて
転がってないですよねぇ?(^^;
0126デフォルトの名無しさんNGNG
for(;;){
if(PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE)){
if(!GetMessage(&msg, NULL, 0, 0))
break;
TranslateMessage(&msg);
DispatchMessage(&msg);
}else{
/*これ。*/
if((fni = (*fns[fni])(&gst)) < 0) break;
}
}

のif((fni = (*fns[fni])(&gst)) < 0) break;
ってどういう意味なの?
0127デフォルトの名無しさんNGNG
>>126
fnsは関数へのポインタへのポインタもしくは関数へのポインタの配列。

fni番目に格納された関数へのポインタを用いて、その関数を間接的に呼んでる。
0128デフォルトの名無しさんNGNG
C++なら、operator[]が定義されたクラスかもしれんなあ・・・
0129デフォルトの名無しさんNGNG
そんな変態は無視汁
マクロ定義されてたらとか言い出すとキリがねえ
0130デフォルトの名無しさんNGNG
#define private public
0131デフォルトの名無しさんNGNG
現在、リモートTV録画予約を構想中です。
1.メールBOXに予約メールが届いたら、
  録画マシン(Xp)をACPIを使用して起動させる。
  (by ルータ&MailBOXマシン)
2.Xp 予約処理をOutLookマクロにより、
  予約メールGET時、予約処理を行う。
   2.a:iEPGで生成される同フォーマットで
      予約情報ファイル作成、配置。
   2.b:Xpのタスクに登録。
   2.c:休止状態にする。
というフローです。
その中で、
2.b、2.cの処理をAPIを呼んで行いたいのですが、
ご存知の方、ご教授ください。
ATコマンドは休止からの復帰をさせることができません。
0132デフォルトの名無しさんNGNG
↓ これ分かる人いません?
http://pc3.2ch.net/test/read.cgi/tech/1018239290/316
0133デフォルトの名無しさんNGNG
>>131
2.b 「Task Scheduler」でMSDNを検索しる
2.c SetSystemPowerState(FALSE, TRUE) ただしNT系のみ
0134デフォルトの名無しさんNGNG
自分(実行ファイル)のファイルハンドルを取得し、
ReadFileで読み込むという作業をしたいのですが
CreateFileでINVALID_HANDLE_VALUEが返ってきてしまいます。
どのようにしたら取得できるでしょうか?(↓自分が書いたもの)
hFile = CreateFile("crackme1.exe", GENERIC_READ, 0, NULL, OPEN_EXISTING,
                            FILE_ATTRIBUTE_NORMAL, NULL);
0135デフォルトの名無しさんNGNG
>>134
FILE_SHARE_READ
0136134NGNG
>>135
即答ありがとうございます。
FILE_SHARE_READにしてみたのですが
INVALID_HANDLE_VALUEが返ってきてしまいました。
もうすこしがんばってみます。
0137デフォルトの名無しさんNGNG
>>136
それで、できるはずですが、ファイルパスは合ってますか?
::GetModuleFileNameで取得した値を使ってみるとか。
0138デフォルトの名無しさんNGNG
というか、GetLastErrorの値ぐらいみれ。
0139デフォルトの名無しさんNGNG
crackme1.exe
0140デフォルトの名無しさんNGNG
全言語のページから#defineを検索しました。 約11,000,000件中1 - 10件目
全言語のページから#endifを検索しました。 約1,790,000件中1 - 10件目
全言語のページから#ifdefを検索しました。 約808,000件中1 - 10件目
全言語のページから#undefを検索しました。 約460,000件中1 - 10件目
全言語のページから#ifndefを検索しました。 約411,000件中1 - 10件目
0141134NGNG
>>137
GetModuleFileNameで取得した値でできました。ありがとうございます。
>>138
2でした。って漏れFormatMessageの使い方わからん(;´д`)
0142デフォルトの名無しさんNGNG
ErrorLookup 値:2
指定されたファイルが見つかりません。
0143デフォルトの名無しさんNGNG
>>141 >漏れFormatMessageの使い方わからん
MSDNの FormatMessage() のところに、サンプルもろに出てますよ?
0144デフォルトの名無しさんNGNG
マウスを制御するAPIの名前までは調べたのですが、どうもうまく動かん。
キーボードの制御は出来た。マウスを自分の思う位置に動かして、クリック操作などを制御したい。
操作するウィンドウは、自アプリ外。Win9x系で動けばいいです。
アドバイス頼む!
                 ┌─┐
                 |ま|
                 |た |
                 │く │
                 │る│
                 │ね.|
      ヤホィ    イェェア   │ !!.│
                 └─┤    ニコニコ
    ヽ(´∀`)ノ ヽ(´∀`)ノ  (´∀`)ノ    ( ´∀)
    | ̄ ̄ ̄|─| ̄ ̄ ̄|─| ̄ ̄ ̄|─□( ヽ┐U
〜 〜  ̄◎ ̄  . ̄◎ ̄   ̄◎ ̄   ◎−>┘◎
0145デフォルトの名無しさんNGNG
Win32APIの関数などをヘルプファイルにして簡単に
検索できるようにしたものってありますか。

bccでやっているけど、いちいちmsdnみるのが面倒で(ダイヤルアップ回線なので)。
0146デフォルトの名無しさんNGNG
ヽ(´∀`)ノ 
0147デフォルトの名無しさんNGNG
>>145
MSDNに加入しる!
ライブラリサブスクリプション(技術資料だけ)なら安くてオフラインで読める。
0148デフォルトの名無しさんNGNG
というか、PlatformSDKに付いてくる英語のならロハだし、
それで充分だろ。日本語訳ってたまに�dでもない
間違いとかあるし。
0149119NGNG
>>120
オゥ、即答ありがとう。
解決しました。
0150デフォルトの名無しさんNGNG
マジかよ?!
0151118NGNG
>>125
あ、「トーン」でしたか。
ろくに読まずに書いてしまいました。すみませぬ。
mixer系APIからは直接操作できないっていうか仕様が調べられない
部分ですか。うーん。どうすればいいんだろ。

っていうかこのあたり、サウンドカードによって同じような名前の
ミキサーラインでもタイプが違ってたりして混乱しますよね。
0152デフォルトの名無しさんNGNG
NT限定でいいんだけど、
%SystemRoot%\System32\〜
みたいなパスを
C:\WINNT\System32\〜
みたいに正式なパスに変換してくれるAPIってないんかな?
0153デフォルトの名無しさんNGNG
ExpandEnvironmentStrings
つーか、ちったぁ検索しろや。機能そのままの名前じゃんかよ。
0154デフォルトの名無しさんNGNG
Win95+IE5の環境で、SHGetSpecialFolderLocationにCSIDL_APPDATAを
渡して実行しても失敗してしまいます。
このAPIで取得するにはどうしたら良いのでしょうか?
0155デフォルトの名無しさんNGNG
そのフォルダは 95 にある?

0156デフォルトの名無しさんNGNG
無かった気がする。
0157デフォルトの名無しさんNGNG
SHFolder.dllを明示的にリンクしてSHGetFolderPathを呼び出すしかないんでしょうか・・・
0158デフォルトの名無しさんNGNG
どなたかタスクバーのプロパティを起動する方法を知りませんか?
VBなら
Dim oShell As Object
Dim hwndTask As Long
hwndTask = FindWindowEx(0, 0, "Shell_TrayWnd", vbNullString)
Call SetForegroundWindow(hwndTask)
Set oShell = CreateObject("Shell.Application")
oShell.TrayProperties
でいけるみたいなんですが、CにはCreateObject関数も
Object型に相当する物も見あたりませんでした。
他のコンパネみたく*.cplファイルも無いみたいだし。
宜しくお願いします。
0159158NGNG
>>158
自己レスです。
CoCreateInstanceを使えばいけました。
スレ汚し申し訳ない。
0160デフォルトの名無しさんNGNG
よく最前面のウィンドウに張り付くようなソフトがありますが、任意のウィンドウが最前面
になったタイミングというのはどうやって取得しているのでしょうか?
0161名無し@沢村NGNG
皆々様方〜、私はいま複数のトラックを鳴らすところで大変苦労してるんですが、なんとか同時に複数のトラックを鳴らすとこまではできたのですよ。
でもあともう一歩なんです…!
もう一歩というのは、トラック2つでもシングルトラックを鳴らすのに比べて、速度が半分に落ちるし、鳴り方もぎこちないんです…。
これがそのコードですが、あとどこを直せばいい…?
教えてくだされ〜♪

for(i=0;i<=i_Sum_Track[i_longest_Track];i+=2)
{_Time= timeGetTime();
for(l=0;l<16;l++)
{t[l]=0;
for(j_i=0;j_i<Onpu_Index[i_longest_Track];j_i++)
{k[l]=j[l]*8;
if(CodeCount[l]!=0)
{if(i==t[l])
{midiOutShortMsg(hMidiOut, 0xC0+l+ ((i_gattuki[l]) * 0x100));
midiOutShortMsg(hMidiOut, 0x0000B0+l+ ((7) * 0x100)+((possrider[l]) * 0x10000));
midiOutShortMsg(hMidiOut, 0x0000B0+l+ ((8) * 0x100)+((possrider_b[l]) * 0x10000));
midiOutShortMsg(hMidiOut, 0x0000B0+l+ ((10) * 0x100)+((possrider_s[l]) * 0x10000));
midiOutShortMsg(hMidiOut, (DataCode[l][k[l]]) + (DataCode[l][k[l]+1] * 0x100)+(DataCode[l][k[l]+2] * 0x10000)); // Note On
}
t[l]+=DataCode[l][k[l]+3];
if(i==t[l])
{while (Play_Tempo(DataCode[l][k[l]+3])>=timeGetTime()-_Time);
midiOutShortMsg(hMidiOut,(DataCode[l][k[l]+4])+ (DataCode[l][k[l]+5] * 0x100)+(DataCode[l][k[l]+6] * 0x10000)); // Note Off
j[l]++;
}}}}}
0162デフォルトの名無しさんNGNG
マルチポスト(・A・)イクナイ
0163デフォルトの名無しさんNGNG
リソースエディタで作ったエディットボックスの文字の色を変えるには
どうしたらいいですか?
0164デフォルトの名無しさんNGNG
MFCを使わずに、自分のウインドウにhtmlファイルを表示したいのですが、
どうしたらできるでしょうか?
0165デフォルトの名無しさんNGNG
>>163
オナードロウ

>>164
IWebBrowser2(だったかな)
0166デフォルトの名無しさんNGNG
>165
エディットボックスってオーナドロー出来なかった気がする、、、
0167デフォルトの名無しさんNGNG
>>166
サブクラス化してとかでも無理?
0168デフォルトの名無しさんNGNG
OnCtlColor WM_CTL_COLOR スペル違ったらスマソ
0169デフォルトの名無しさんNGNG
>The WM_DRAWITEM message is sent to the owner window of an
>owner-drawn button, combo box, list box, or menu when a visual aspect of
>the button, combo box, list box, or menu has changed
0170デフォルトの名無しさんNGNG
>>167
それで、描画するためのデータはどこから持ってくる?
0171デフォルトの名無しさんNGNG
WM_CTLCOLOREDITのwParamがエディットコントロールのHDCだから
それでSetTextColor()できる気もするな。
0172デフォルトの名無しさんNGNG
>>165
さんくすです。
IWebBrowser2のNavigate2を使い、htmlやjpegが表示できますた。

でも、bmpを表示しようとしたら、ペイントが立ち上がったり、
開くかどうか聞いてくるダイアログがでたりしました。
でも、ときどき表示されたりもします。原因がさっぱりわかりません。
何か、先行して処理する必要があるのでしょうか?
0173デフォルトの名無しさんNGNG
Win32 static libraryで、どういう関数にWINAPIをつけたら良いのでしょうか。
内部で使う関数には付けず、外部に公開する関数だけにつけておけばよいのでしょうか?
0174デフォルトの名無しさんNGNG
>>173
ハァ?
0175デフォルトの名無しさんNGNG
calling conventionのことか?
そのライブラリが激しく内輪ならべつにどうでもいいと思う
0176デフォルトの名無しさんNGNG
>>175
激しく内輪でなければ?
0177デフォルトの名無しさんNGNG
その lib をどういう位置付けにするかですべき事が変わるだろ。
0178デフォルトの名無しさんNGNG
とりあえず自分で作ったライブラリの関数にWINAPIを付けたい理由を聞かせてくれ。
0179デフォルトの名無しさんNGNG
C言語以外から呼ぶことを考えるなら、WINAPIというかstdcallにするべきでは?
(ついでに、C規約より少しだけ効率いいし)
0180デフォルトの名無しさんNGNG
>>179
dynamic linkならそれも考慮するかもしれんが・・・
0181179NGNG
>>180
んー、Delphiならbccとリンクできるし、
gccはC++に限らずFortranとかAdaとかでミックスランゲージできるし……ちと苦しいか。

正直staticの文字を見逃してました。スマソ
0182デフォルトの名無しさんNGNG
Explorerで、ファイルのプロパティの概要で得られる、
コメント、キーワード、分類などので情報を
設定するには、どうすればいいですか?
0183デフォルトの名無しさんNGNG
>>182
プロパティから設定できます。
0184デフォルトの名無しさんNGNG
>>183
APIとか、コードでやりたいとおもわれ。
0185182NGNG
やりかたわかりましたので結構です。
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/stg/stg/the_summary_information_property_set.asp
0186デフォルトの名無しさんNGNG
あるフォルダが存在するかどうかを知るにはどのAPIを使えばよいのでしょうか?
0187デフォルトの名無しさんNGNG
>>186
Win32APIなら、FindFirstFile()
標準C Libraryなら、_findfirst()
0188デフォルトの名無しさんNGNG
>>186
SetCurrentDirectory とか CreateFile でもいけそうだけどなー。> 教えて君
0189デフォルトの名無しさんNGNG
_stat
0190デフォルトの名無しさんNGNG
いつも思うんだけど、
こういう質問をする「教えてクン」って、
後で仕事をきちんと完成させることができたかどうかが気になる。
つか、ちょっと心配になるよ。
0191デフォルトの名無しさんNGNG
2ちゃんねるで聞くよりも検索した方が早いと思うしね。
もし>>186が検索をしていないとすると、
>>187の回答を得るまでに>>186は53分間も待たなければならなかったわけでしょ。
教えてクンはまたーりしているんだなぁ...
0192デフォルトの名無しさんNGNG
どなたか Win32API WriteProcessMemory を使ったごくごく簡単なサンプルを......
環境はwin2k vc5 です。
Web上にあった物はまともに動きません......
0193デフォルトの名無しさんNGNG
エクスプローラーが落ちた時に、
児童復旧する
タスクトレイ
のプログラム方法を教えてください。
0194デフォルトの名無しさんNGNG
_beginthreadのハンドルをHANDLEにキャストしてWaitForSingleObjectに使えるらしいんですが
INFINITEにしたら際限無く待ちつづけるのですが、他がおかしくてキャストは間違いないのでしょうか?
0195デフォルトの名無しさんNGNG
↑スレッドはちゃんとexitThreadで終了しています
0196デフォルトの名無しさんNGNG
>>194
それができるのはexの方。
Win32マルチスレッドプログラミングって本読んでね。
0197デフォルトの名無しさんNGNG
>>193
RegisterWindowMessage TaskbarCreated をgoogle
0198デフォルトの名無しさんNGNG
>>197
サンクス。
0199デフォルトの名無しさんNGNG
>>195
どうもです。CloseHandleがいるやつですね。
0200デフォルトの名無しさんNGNG
> 標準C Libraryなら、_findfirst()

おいおい・・・
0201デフォルトの名無しさんNGNG
>>186
漏れなら、GetFileAttribute()とかPathIsDirectory()かな。
ハンドルを閉じる手間がないから。
0202デフォルトの名無しさんNGNG
PathIsDirectory() は素でリンクできないからキライ
0203デフォルトの名無しさんNGNG
>>188
マルチスレッドで破綻する
失敗したときどこにファイルを作るかわからない
話にならんな
こういうインストーラーを作りたいなら止めないが
http://pc3.2ch.net/test/read.cgi/tech/997727326/56-
0204203NGNG
あ、ひょっとしてどんなに煽られようと必ずお節介な奴が
答えて教えてクンの「聞いたもの勝ち」になるのがムカつくから
自分で答えを調べられない奴には分からない程度に嘘教えたのかな
だったら邪魔してスマソ
0205デフォルトの名無しさんNGNG
>>203
そこの 57 の反応が素直に笑える。
0206デフォルトの名無しさんNGNG
虫眼鏡みたいなウインドウを作ろうと思っています。
自分のウインドウの下のイメージを取得するにはどうしたらいいでしょうか?
0207デフォルトの名無しさんNGNG
> 自分のウインドウの下のイメージを取得する

できるかなあ?
できないんじゃないか?
0208デフォルトの名無しさんNGNG
「ウインドウの下のイメージ」なんて(WindowがLayered化
されてない限り)存在しないので不可能です。
WM_PRINTに対応してたらなんとかなるかも
0209デフォルトの名無しさんNGNG
質問ですが、Winの印刷で、一つの印刷ジョブでA4→B4→A4・・・とかの
異なるサイズの印刷ってできますかねぇ?
ジョブ分けると、スプーラからのメッセージがちょっと・・・
0210デフォルトの名無しさんNGNG
>>208
半透明ウインドウとかはどうやってるの?
0211デフォルトの名無しさんNGNG
ホットゾヌの書き込みウインドウが半透明になっている下で、
スレッドがスクロールしたりするんですけど。
画面からはみ出したりすると、他のウインドウも下に見えるし、どうやってるの?これ。
0212デフォルトの名無しさんNGNG
>>210
それがLayeredなウィンドウ。
0213デフォルトの名無しさんNGNG
>>212
Layered化すれ(どうやってするんだろう・・・)ば、下のイメージが取り出せるのですか?
0214デフォルトの名無しさんNGNG
>>209
ResetDCで行けそうな気はするが、このファンクションは
DEVMODEのどこまで書き換えられるのかイマイチ掴めないんだよな。
0215デフォルトの名無しさんNGNG
>>213
Win2kからは簡単に出来るよ。
0216デフォルトの名無しさんNGNG
ReadやReadlnでは、Enterキーが押されるまで帰ってきませんが、
キーボードの押された1文字読み込める関数はあるのでしょうか?
ググってみたのですがダメでした。よろしくおねがいします。
0217216NGNG
cut:「やReadln」
0218デフォルトの名無しさんNGNG
>>192
debug privilege
一般的に使われるものではないから、素人に質問しても無駄だと思われ
0219216NGNG
add:「getch()以外で」
0220デフォルトの名無しさんNGNG
>>210
SetLayeredWindowAttributes
で検索しる
0221デフォルトの名無しさんNGNG
>>219
GetKeyState
WM_KEYDOWN
0222デフォルトの名無しさんNGNG
>>218
素人って誰だよ
0223デフォルトの名無しさんNGNG
>>220
ありがとうございました。できますた。
0224デフォルトの名無しさんNGNG
PropertySheet() で作成するダイアログでWinXPの新しいコントロールを
使うようにしたら、どのようにしたらいいんでしょう?
manifestは書いてみたものの変わらず、PROPSHEETHEADER にもそれらしい
項目はありませんでした。
0225224NGNG
なんか日本語が崩壊してる・・・(´Д`;)

× PropertySheet() で作成するダイアログでWinXPの新しいコントロールを
  使うようにしたら、どのようにしたらいいんでしょう?
○ PropertySheet() で作成するダイアログでWinXPの新しいコントロールを
  使わせるようにするには、どのようにしたらいいんでしょう?
0226216NGNG
>221
レスありがとうございます。
さっそく、挑戦してみます。
0227デフォルトの名無しさんNGNG
int ch;
SetConsoleMode( GetStdHandle(STD_INPUT_HANDLE), 0 );
while( ch = fgetc(stdin), ch != EOF)
fputc( ch + 1 , stderr );
0228216NGNG
>227
ありがとうございました。ジャストでした。
感謝、感謝、感謝です。
0229216NGNG
>>227
お礼です。
http://www.skku.ac.kr/~bkasia/board/cwb-data/data/kbhwdata/
0230デフォルトの名無しさんNGNG
>>229
韓国の大学ではそういう授業があるんですか?
0231貧民NGNG
猫プロのWinSDK第18章で、
bcc32 でコンパイル&実行できた人っています?
どうしてもダイアログのメニューが出てこないんですが。

リソースはばっちりだと思うんだけどなぁ。
0232貧民NGNG
うあ。
プロシージャの中の switch からっぽで、
リソースだけくっつけてコンパイルしてもメニューが出ないぢゃねーか。
bcc32 で Windows プログラミングって・・むちゃ?
0233デフォルトの名無しさんNGNG
>>232
bcc32というかWindows(GUI)プログラミングをC++で作るのに
GUIエディタが無いのがむちゃ。
0234デフォルトの名無しさんNGNG
>>233
んなこたーない。
メニューは全て動的に作って、追加する。
コントロールも全て動的に作って追加する。
別にGUIツールが無くても問題ない。
0235貧民NGNG
んー。全部動的に・・・てのはやりたくないです。

Borland C++ Compiler に付属の
brcc32 (リソースコンパイラ)でリソースをコンパイルして、
bcc32 (コンパイラ)で .c をコンパイルして、
brc32 (リソースシェル)でコンパイルした .res を .exe にくっつけて
やってるんですが、これって何か陥りやすいミスってあります?
0236デフォルトの名無しさんNGNG
ここでメニューが出ないといえばたいがいMAKEINTRESOURCEで解決
0237デフォルトの名無しさんNGNG
>>235
素直にBCCDeveloper使え。
0238貧民NGNG
>>236
ごめん。巣でわからないです。
つか、MAKEINTRESOURCE調べてもわからなかった・・・。
これと猫プロSDK18章ってなんか関係すんの?

>>237
BCCDeveloper 入れてみました。
cygwin 上で vim + GNU make とどっちがいいんだろ。
しばらく使ってみよ。
0239デフォルトの名無しさんNGNG
DLLを明示的リンクしたいのですが

DLLEXPORTした関数(HOOK)が

?HOOK@@YAHHP6G

みたいに変な関数名になるのですが、
綺麗に出来ませんか?
0240デフォルトの名無しさんNGNG
defファイルを書く
extern"C"を使う
0241デフォルトの名無しさんNGNG
スゲー。アリガ�d。
0242デフォルトの名無しさんNGNG
猫プロの本が出るみたい。
あれが全部本になるんだろうか? 
それともC#?
http://www.kumei.ne.jp/c_lang/shoseki/noflash.htm
0243デフォルトの名無しさんNGNG
VC6でですが、
現プロジェクトのmain.cpp以外を
スタティックライブラリとして
生成したいのですが、

やっぱり
スタティックライブラリのプロジェクトを作って、
地道に全ソースをプロジェクト追加
しないとダメなのでしょうか?

階層がいっぱいあって、めんどくさいのです。
ビルド→構成→追加(コピー)
から、出来そうな気がするのですが。
出来ないでしょうか?
0244243NGNG
API質問じゃなかった。
間違えましたすんません。
0245224NGNG
レスついてない・・・ ⊃Д`;)

あれから PROPSHEETPAGE の項目に hActCtx なんてのが comctl32 ver.6.0 から
増えていることが分かったけど、何に使うのかよく分からない(苦笑)。
(どうやらmanifestに書くような内容を記述するみたい)
これが関係してるのかな?
0246デフォルトの名無しさんNGNG
リソースに manifest の xml を参加させる。
0247デフォルトの名無しさんNGNG
猫プロ、Editを「エジット」と記述するのさえなければ、
いいんだけどなぁ。違和感ありまくり。

#スレ違いスマソ。
0248デフォルトの名無しさんNGNG
>>222
スマソ。言葉が悪かった。
それを専門又は相当詳しいやつがいないと厳しいという意味。ちょっとだけ特殊な世界なので。

0249デフォルトの名無しさんNGNG
>>247
「エヂット」じゃなかったっけ。
0250デフォルトの名無しさんNGNG
>>242
出ても買わん。C言語ポインタ完全制覇があれば十分。
0251デフォルトの名無しさんNGNG
>>247
ローマ字入力で「ディ」が出せなかったものと思われ
最近の記事ではちゃんとエディットになってる(w
0252デフォルトの名無しさんNGNG
>>250
( ゚д゚) ポカーン
0253デフォルトの名無しさんNGNG
ツールバーのボタンのそれぞれを好きな寸法にしたいのですが、
どんな方法があるのでしょうか。
0254デフォルトの名無しさんNGNG
TBSTYLE_AUTOSIZE でできました・・・。
0255悲しいNGNG
デスクトップに文字列表示できないかと思って
以下のコード書いたんですがうまくいかないんです。
なぜうまくいかないんだ。
よかったらどなたか教えてくれませんか?

HWND hDesktop;
HDC hDC;
RECT rectDraw;
const char str[] = "Desktop!";

hDesktop = ::GetDesktopWindow();
hDC = ::GetDC(hDesktop);
::GetClientRect(hDesktop, &rectDraw);

::DrawText(hDC, str, strlen(str), &rectDraw, DT_CENTER);
::ReleaseDC(hDesktop, hDC);
0256悲しいNGNG
何にも表示されないんです・・・。
0257デフォルトの名無しさんNGNG
CString* をchar* に代入するには いかそ?
0258デフォルトの名無しさんNGNG
>>257
コンパイルでUNICODE定義していないなら、

CString *aaa;

aaa になんか値が入る。

char* p = (char*)(*aaa);
0259デフォルトの名無しさんNGNG
>>255
試してないが、
CreateDC("DISPLAY",NULL,NULL,NULL);
でどうだ?
0260うれしいNGNG
>>259
うまくいった!
感謝!
あなた神です。
0261デフォルトの名無しさんNGNG
>>259
それだと「デスクトップ」じゃなくて画面全体じゃないか?
っていっても、260で喜んでるので、そういうものが欲しかったのか。
普通デスクトップって言ったら、Explorerの画面全体を覆ってる
リストビューのこと指すと思うんだがなあ。
0262デフォルトの名無しさんNGNG
>>261
(゚Д゚)ハァ?
0263デフォルトの名無しさんNGNG
>>261
窓でのデスクトップの定義について
小2週間くらい勉強してこい
0264デフォルトの名無しさんNGNG
>>262-263
(゚Д゚)ハァ?
0265デフォルトの名無しさんNGNG
( ゚д゚)ポカーン
0266デフォルトの名無しさんNGNG
>>261-264
俺にもわかるように説明してくれ
0267デフォルトの名無しさんNGNG
>>266
(゚Д゚)ハァ?
0268デフォルトの名無しさんNGNG
>>266
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/desktops.asp
これでも読め
0269デフォルトの名無しさんNGNG
>>261
「Explorerの画面全体を覆ってるリストビュー」って
どれのこと?
・・・あーそういうことだったのか! やっとわかった!
0270デフォルトの名無しさんNGNG
>>269
(゚Д゚)ハァ?
0271デフォルトの名無しさんNGNG
・・・で、真の厨房は誰だったんだ?
0272デフォルトの名無しさんNGNG
( ゚д゚)ポカーン
0273デフォルトの名無しさんNGNG
270
0274デフォルトの名無しさんNGNG
つれた!!
0275260NGNG
>>261
その「Explorerの画面全体を覆ってるリストビュー」って
どうやって取得できるんですか?
よかったら教えてもらえませんか。
0276デフォルトの名無しさんNGNG
>>271
261です。
「Explorerの画面全体を覆ってるリストビュー」がデスクトップか否かに関わらずアホだから。
0277デフォルトの名無しさんNGNG
>>275
FindWindowとかでProgram Managerを検索して、
その子ウインドウでクラスがSysListView32になっている奴を捜すんじゃないの?
0278デフォルトの名無しさんNGNG
>>275
やったことないけどGetWindow(GetDesktopWindow(),GW_CHILD);
とかで取れないか?
0279デフォルトの名無しさんNGNG
>>278
それは安全か?
0280デフォルトの名無しさんNGNG
だめなんだなー
それじゃー
0281デフォルトの名無しさんNGNG
今Spyで見てみたら、

デスクトップ
 +ProgramManager
    + SHELDLL_DefView
       + SysListView     ←これ

だった。
0282名無し@沢村NGNG
皆々様方〜、ツールバーだが、ツールバーにビットマップを標示すると、
色が表示されずにグレーになったり、使ってるうちにだんだんイロがあせてきたりするんだが、
これはどうやったら直せるのですか?
ちなみに画面のプロパティの詳細は256色です。
0283デフォルトの名無しさんNGNG
>>282
モニタを買い換えろ。
0284デフォルトの名無しさんNGNG
また沢村かよ・・・
0285デフォルトの名無しさんNGNG
>>283
Macじゃあるまいしモニタを買い換えても意味ないだろ。
ビデオカードを買い換えないと。とかマジレスしてしまうテスト
0286デフォルトの名無しさんNGNG
WinMain() の中から直接 DialogBox() をコールしてダイアログボックスを
表示するアプリを作っているのですが、キーボードイベントをうまく扱え
ません。
ネットで調べてみると、どうも「ダイアログボックスには WM_KEYDOWN
イベントが飛んでこない」ようです。
「ウインドウのサブクラス化」も試みてみたのですがうまくいきませんでした。
やはり、親ウインドウがないダイアログボックスではキーボードイベントを
扱うことは出来ないのでしょうか?
0287デフォルトの名無しさんNGNG
>>286
できるけど、どーしたいん?
0288デフォルトの名無しさんNGNG
>>286
SetWindowsHookEx()
0289286NGNG
>>288
そのものずばりでした。ありがとうございます。
0290デフォルトの名無しさんNGNG
>>287 が可哀相に思えるのは俺だけか?
0291287NGNG
>>290
いいのいいの。
0292デフォルトの名無しさんNGNG
今タイムタグ付き歌詞ファイルを読み込んで色を変えながら表示していく
("[00:01:00]あ[00:02:00]い[00:03:00]うえお\n"のような文字列を読んで解析)
プログラムを作っています。
内部では
struct
{
 int msec;
 char *text;
 int mode; // 0なら一行分、1なら色を変える部分のみのテキスト
} * dataのようなものを作って持たせています。
上の例だと
data->msec==1000,data->mode==0,data->text=="あいうえお"
(data+1)->msec==2000,(data+1)->mode=1,(data+1)->text="あい"
(data+1)->msec==3000,(data+1)->mode=1,(data+1)->text="あいうえお"

DrawTextかTextOutだけでうまいことやれる方法はないですかね。
mode=0のものを書いた後にTextOutすると後から書いた領域がちょっとだけ大きくなって
先に書いたものが消えちゃうんです。
BitBltで透過転送してたら重くて使い物にならなかった。
0293224=245NGNG
解決しますた。

リソースにmanifestを含める場合、manifestのリソースIDを必ず1にしないと
いけなかったのですな。
VS.netだったからそのへんは適当にやってくれるもんだと思ってた・・・鬱

manifestを外部ファイルにしても反映されなかったんだけど、それはmanifest
のファイル名が間違っているという単純ミス。逝ってきます。
exe_no_namae.manifest じゃなくて exe_no_namae.exe.manifest なのね。

ってなわけで今はちゃんとXPのビジュアルスタイルでダイアログが表示されてまする。
0294デフォルトの名無しさんNGNG
なんだそんなことか。
0295デフォルトの名無しさんNGNG
でも勉強になったよ。ありがとう。
0296289NGNG
続きです・・・

Win2k では WM_ACTIVATEAPP でフックを呼ばないと、他のアプリでの入力後、
フックが切れることがある。が、Win9x でそれをやると100%クラッシュする!!
今回は OS の判定ルーチンを入れて対応しましたが・・・(Win9x では
WM_INITDIALOG でフックを呼ぶようにした)
このような経験された方いらっしゃいます?
0297名無し@沢村NGNG
皆々様方〜、いろいろありあとうございました、皆々様方〜!
私はここでコールバックタイマーを使用しろとか、複数トラックのデータをマージしてひとつのデータにまとめろとか、いろいろなアドバイスをいただきました。
でもはっきりいってそんな面倒なことはしたくなかったんです…。
はっきりいって手抜きに近い楽なやりかたで複数トラックをちゃんと演奏する方法を見つけたかったんです。
でもついにその方法が見つかったんです!!
その完璧なルーチンをここに乗せますから、皆様方も楽にmidiシーケンサーをつくるときの参考にしてください、皆々様方〜!

for(i=0;i<=i_Sum_Track[i_longest_Track];i++)
{for(l=0;l<16;l++)
{t[l]=0;
if(CodeCount[l]!=0)
{for(jj[l]=0;jj[l]<Onpu_Index[l];jj[l]++)
{kk[l]=jj[l]*8;
if(i==t[l] )
{
_Multi_Time[l]= timeGetTime();
midiOutShortMsg(hMidiOut, 0xC0+l+ ((i_gattuki[l]) * 0x100));
midiOutShortMsg(hMidiOut, 0x0000B0+l+ ((7) * 0x100)+((possrider[l]) * 0x10000));
midiOutShortMsg(hMidiOut, 0x0000B0+l+ ((8) * 0x100)+((possrider_b[l]) * 0x10000));
midiOutShortMsg(hMidiOut, 0x0000B0+l+ ((10) * 0x100)+((possrider_s[l]) * 0x10000));
midiOutShortMsg(hMidiOut, (DataCode[l][kk[l]]) + (DataCode[l][kk[l]+1] * 0x100)+(DataCode[l][kk[l]+2] * 0x10000)); // Note On}
t[l]+=DataCode[l][kk[l]+3];
if(i==t[l] ) { while (Play_Tempo(DataCode[l][kk[l]+3])>=timeGetTime()-_Multi_Time[l]);
midiOutShortMsg(hMidiOut,(DataCode[l][kk[l]+4])+ (DataCode[l][kk[l]+5] * 0x100)+(DataCode[l][kk[l]+6] * 0x10000)); // Note Off } }} }}
0298デフォルトの名無しさんNGNG
おいお前ら!
visual stdio .NET買ったんですけど
付属のヘルプにすべてのAPIの日本語の解説はあるのですか?
0299デフォルトの名無しさんNGNG
>>298
全てはない。
重要と思われるウィンドウメッセージの説明も英語だから注意しれ(w
というか、その為のこのスレか?
0300275NGNG
>>277
ありがとう。
あんたが正しかったよ。
マジで感謝。
0301デフォルトの名無しさんNGNG
windows.hとかのヘッダファイルはどこで最新のものをダウンロードできますか?
microsoftのサイトだとは思うんですが、なかなか見つかりません。
0302デフォルトの名無しさんNGNG
>>301
↓ココダヨ
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
0303301NGNG
>>302
ありがとうございます
0304デフォルトの名無しさんNGNG
ウィンドウのリサイズを左右のみに限定したい。

限定する事自体は WM_GETMINMAXINFO ですぐにできたんですが、
ウィンドウの角にマウスカーソルを持っていった時にマウスカーソルが
斜め矢印になってしまうのを抑制する事はできないんでしょうか?
0305304NGNG
>>304
ごめん。自己解決。 WM_NCHITTEST でした。
0306デフォルトの名無しさんNGNG
ウインドウに標準のスクロールバーをつけて(WS_VSCROLL)それを処理するコードも書いたんですが、
ずっとマウスを押してもスクロールバーが一回しか動きません。
ダイアログで同じことをするとちゃんとずっと動くんですが、、、
ウインドウを作るときになんか追加の設定とかが必要なのでしょうか?
0307デフォルトの名無しさんNGNG
>>306
コードを晒せ。
0308デフォルトの名無しさんNGNG
Shellに詳しい方教えてください。

SHGetDesktopFolder()でデスクトップフォルダ(IShellFolder)を取得し、
ParseDisplayNameメソッドでpwszDisplayNameにPathではなくURLを指定しても
ITEMIDLISTが作成可能です。こいつのAttributeを調べてみると、
SFGAO_BROWSABLE が立っています。説明をみると、Folderではないが、
CreateViewObjectメソッドのみ実装されたIShellFolderインターフェース
が取得可能ということ。そこで、こいつの親FolderであるIEフォルダ
(IShellFolder)を作成後、BindToObjectメソッドを使い、問題の
IShellFolderを取得しました。さらにCreateViewObjectメソッドで
オブジェクト(IShellView)も作成することができました。
が、このオブジェクトの正体は何なんでしょうか?
Folderでないためか、CreateViewWindowメソッドは失敗してしまいます。
別のView関連のインターフェースが実装されているのでしょうか?
作成できるということは何らかの使い道があると思うんですが、
MSDNを調べてみてもわかりません。よろしくお願いします。
0309名無し@沢村NGNG
>>306
ぶぁっはははははーーーっ!!
スクロールバーもまともにつけられない奴がこの世にいたのか!?
ぶぁっはははははーーーっ!!
ぶぁっはははははーーーっ!!
0310デフォルトの名無しさんNGNG
>>308
IEコンポじゃないの?
0311でむぱNGNG
こんにちは、Win32API厨です。
sprintf,memcpyなどは必ずwsprintf,MoveMemoryにするよう
自らはもちろん、周りの連中にも布教しており、Cランタイム関数撲滅に精を注いでおります。
が、悔しいことにmemcmpとatoiだけ同等のAPIが見つからず、泣く泣くCランタイム関数を使わざるを得ません。
こんな私めにWin32APIでこれらと同等の関数があれば、ぜひぜひ教えてくださいまし..
0312デフォルトの名無しさんNGNG
まざるとうざいから、特別な理由がない限りCランタイムのにしてくれよ
0313デフォルトの名無しさんNGNG
>>311
memcmp() -> CompareMemory()
atoi() -> AsciiToInteger()
0314デフォルトの名無しさんNGNG
MoveMemoryってmemmoveのdefineだけど。
0315デフォルトの名無しさんNGNG
ZeroMemoryもmemsetに...
0316デフォルトの名無しさんNGNG
SecureZeroMemoryって、最近のMSDNのいい話と悪い話みたいな
タイトルの記事見るまでマジで意味分からなかった。
0317デフォルトの名無しさんNGNG
memcmpやmemsetは通常インラインに展開されるんだから
Cランタイム撲滅には関係ないと思うんだけど
0318デフォルトの名無しさんNGNG
>311
wsprintfは、"The maximum size of the buffer is 1024 bytes. "
な制限があって、昔はまった、、、
今はsnprintf使てます
0319デフォルトの名無しさんNGNG
>316 ↓これですか?
ttp://www.xinada.ne.jp/~handa/tech/#m07
0320デフォルトの名無しさんNGNG
見つけた。
http://www.microsoft.com/japan/msdn/columns/secure/secure10102002.asp
単なるインライン関数なんだから .NET Server でしか
使えないわけないんだがMSDNライブラリのRequirementsは
いったいなんなんだ?
0321デフォルトの名無しさんNGNG
みんな沢村をまるで相手にしてないのがワラタ
0322でむぱ=311NGNG
>>313 両方ともMSDNにもないっすよぉ...
>>314,315,317 VBのAPIビューアからだとKernel32.dll の各エクスポート関数
(Rtlなになに)を呼んでいるのに、VC++はなぜにmemmove,...にしてしまうんだろ!?
悔しぃ…。
ちなみに、#defineでRtlEqualMemory !memcmp(s,t,l) なんてのもあるんですね。
(WINBASE.H,WINNT.H)
>>318 私もはまりますた。が、懲りずにlstrcatで合成してwsprintfを使っています。
確か書式の指定方法もsprintfと微妙に違うんですよね...
0323デフォルトの名無しさんNGNG
GlobalAllocと通常のmallocの違いがわからないんだけど…
0324デフォルトの名無しさんNGNG
GlobalAlloc は API
malloc は C 標準関数
大違い
0325デフォルトの名無しさんNGNG
malloc() はプロセスヒープからメモリを割り当てる。
HeapAlloc(GetProcessHeap()) とほぼ同じだが、free() は HeapFree() と違って
ヒープにメモリ領域を返さず、次に呼ばれる malloc() のために取っておく。

GlobalAlloc() はグローバルヒープ (システムヒープ) からメモリを割り当てる。
クリップボードのデータ等、共有の目的で使用する。
共有メモリのためアドレスが定まっておらず、その領域を使うには GlobalLock() で
固定する必要があるが、固定したままだと他のプロセスから使用できない。
Windows 9x では 4 MB 未満のメモリブロックを想定して設計されているので、
それ以上は代わりに VirtualAlloc() を使えとある。
0326デフォルトの名無しさんNGNG
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/memory/base/comparing_memory_allocation_methods.asp
これってGlobalAlloc、LocalAlloc、HeapAlloc(GetProcessHeap)は全部同じってことじゃないの?
0327デフォルトの名無しさんNGNG
使ってみてから言ってる?

(Win32 では) GlobalAlloc() と LocalAlloc() は全く一緒。
しかし GlobalAlloc() と HeapAlloc(GetProcessHeap) は、HGLOBAL を得る事が
できるかどうかという点で違う。
使い方というか用途もそれぞれ全く違う。
Microsoft が同じだと述べているのは、プロセス内において作業領域としてメモリを
確保した時の事について。
0328326NGNG
漏れが言いたかったのは
「malloc、GlobalAlloc、HeapAlloc(GetProcessAlloc)は確保される場所は同じなんだろ」
ということなんだが…
0329デフォルトの名無しさんNGNG
mallocがどこからメモリを取ってくるかは処理系依存。
VirtualAllocから取ってきて、独自分配しても合法
0330デフォルトの名無しさんNGNG
そういう話をしたいなら、ヒープもスタックもテキストも全部同じメモリの上に
載ってますが、と返してあげるけど。

で、同じだから何だって?
326 の URL にはそんな事全く書いてないし、仮にそうだとしてもそれを知ってて
何か役に立つの?

想像だけど、GlobalAlloc() はグローバルヒープをプロセス空間にマッピング
するためにプロセスヒープを割り当ててるだけで、HeapAlloc(GetProcessAlloc)
と同じように使ってくださいという趣旨ではないんじゃないの?

malloc() は 325 の通りだから HeapAlloc(GetProcessAlloc) よりも速い事も
あれば無駄なオーバーヘッドな事もある。
(重箱の隅をつつけば、326 は malloc() について何も訴えていない)
0331デフォルトの名無しさんNGNG
>328
> 「malloc、GlobalAlloc、HeapAlloc(GetProcessAlloc)は確保される場所は同じなんだろ」
そりゃ x86 プロテクトモードだと、メモリ空間は 32bit フラットだからな。

ただ、ユーザが 32bit フラットなメモリ空間に直にアクセスするのは

1. プログラム書くのが大変
2. OS がリソース配分できなくなる

という問題があるので、まっとーな OS では途中に何階層か用意して、適宜メモリを
切り出して割り当てるようになってる。GlobalAlloc や malloc は、その「階層」の厚み
や中身が違う。

混ぜると core 吐きます。
0332デフォルトの名無しさんNGNG
GlobalAllocはWin16との互換性のためにあるから
なるべく使うなといいつつHGLOBALを要求するAPI
(クリップボード関係とか)がある現状をどうにかしてくれ>MS
0333326NGNG
漏れはヒープはプロセス固有のものであり、
ヒープにシステムヒープとかプロセスヒープとかいう違いはないと思ってた。
んで、使われ方は違うがGlobalAllocもHeapAllocも同じヒープ上に確保されると思ってた。
調べてみたが
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dngenlib/html/msdn_heapmm.asp
にあるように、ヒープには最低1個のデフォルトヒープと呼ばれるヒープが存在しており、
GlobalAllocとHeapAlloc(GetProcessHeap)は両方ともデフォルトヒープ上に確保される。
ちなみに328のmallocはLocalAllocの間違いっす。
0334デフォルトの名無しさんNGNG
ヒープは複数持てるよ。mallocとかが使うのはデフォルトヒープ。
独自のヒープでメモリを管理して漏れを防いでもいいかも。
0335デフォルトの名無しさんNGNG
>>332
HGROBAL は、クリップボードにデータ渡すのに丁度いいからじゃないか?
API 名がいまいちそぐわないのは気になるけど。

>>333
だからさ、レイヤーというものを理解してくれよ。
http://msdn.microsoft.com/library/en-us/dngenlib/html/heapmm_1.gif
この図を見て、「Local、Global Memory API」 の中で何か特別な事をやっている
とは思わないのか?
>>330-331 に書いてある事をちゃんと理解したか?

>>334
>>329
0336デフォルトの名無しさんNGNG
>>334
なるほど、まとめて解放してくれるんですか。便利かもしれませんね。

ふと思ったのですが、malloc/free/new/deleteが実際に使うヒープは
同じでないとまずいですよね。VC同士ならイイんでしょうけど...
0337デフォルトの名無しさんNGNG
>>336
マズい可能性がある。
理由はそれだけではないが、ライブラリが確保したリソースはそのライブラリに
解放させるのが定石。
0338デフォルトの名無しさんNGNG
>>335
Global〜が廃止されてるCEではさりげなくSetClipboardDataの
引数なんかもHLOCALに変更されてるんだよな。
ま、Win32sを除けばHLOCAL==HGLOBALなわけだが
0339でむぱNGNG
関係ないが、なぜヒープというのかみんな知らないんだろうな(w
>>334
new して free(),malloc()して delete してみればいいんじゃないの?
確かしいたけアボーンされたと思うけど。
0340デフォルトの名無しさんNGNG
まあ普通に考えれば「そんなアドレス管理してまへんがな」となるわな
0341デフォルトの名無しさんNGNG
>340
世の中、そういうタチの良い malloc/free ばかりでもなく。無条件で、与えられた
アドレスは「malloc によって割り当てられたはず、したがって直前に管理データ
があるはず」とか信じてる free() も存在する。

(管理データ壊して遠からず core を吐くけど、いつ誰がどこで管理データを
壊したのかは分からない_
0342デフォルトの名無しさんNGNG
ん?gnuのはモードを切り替えられたような・・・
vcもそうだったと思う
0343デフォルトの名無しさんNGNG
CreateProcessとかで、コンソールアプリを起動して
その終了を確実に待つのは、
WaitForSingleObject(pf.hProcess, INFINITE);
ではだめなんですが、どーしたらいいですか?
CreateProcessの第2引数に、"cmd.exe /c xxx.exe"
としています。
0344デフォルトの名無しさんNGNG
cmd.exeの終了を待ったってそりゃダメだ
0345デフォルトの名無しさんNGNG
"cmd.exe /c "
何の効果があるんだ?
0346しぃ豆 ◆FTP/Z/SD72 NGNG
>>345
コマンドプロンプトで cmd.exe /? と入れれば出てくる。
0347デフォルトの名無しさんNGNG
そうじゃなくて、直接 "xxx.exe" でいいんじゃないかという話なのだが。
0348真面目に質問NGNG
すいません、WinSock2で困っています。

ネットワークプログラミングの勉強をしている初心者なのですが、今、VisualC++6を使っていますが。
以下のとおり入力したらエラーがでました。
↓
#include <winsock2.h>

.
.
.


WSADATA wsaData;
WSAStartup(2,&wsaData);

(エラー)
リンク中...
Network.obj : error LNK2001: 外部シンボル "__imp__WSACleanup@0" は未解決です
Network.obj : error LNK2001: 外部シンボル "__imp__WSAStartup@8" は未解決です
Debug/Network.exe : fatal error LNK1120: 外部参照 2 が未解決です。
link.exe の実行エラー
Network.exe - エラー 3、警告 0

なぜ、エラーが出るのでしょうか???教えていただけませんか?
すいません、初歩的な質問で・・・。
0349デフォルトの名無しさんNGNG
>>348
wsock32.libをリンクしてないんじゃない?
0350真面目に質問NGNG
>>349
ws2_32.lib をインポートすると言うことでしょうか?
インポートはどうすればいいのですか?
0351デフォルトの名無しさんNGNG
>>350
それくらい自分で調べろよ。
プログラマとしての適性が無いばかりか、人間としての最低限の能力だろ。
0352真面目に質問NGNG
>>349
ws2_32.lib をインポートすると言うことでしょうか?
インポートはどうすればいいのですか?
0353真面目に質問NGNG
>>351
すいませんでした。
解決しました。

プロジェクト→設定→リンクタブ内で、ws2_32.libを追加しました。

まことにすいませんでした。失礼な質問をして・・・。
0354デフォルトの名無しさんNGNG
>>347
それでも、けっかは同じでした。
コンソールアプリは、終了をまってはくれません。
0355デフォルトの名無しさんNGNG
終わったことを知りたいのではなくて?
0356sageNGNG
StrechBlt() を使うとページ違反が頻発するのですが、
これはそういうものなのでしょうか?
特に拡大Bltするとページ違反が何百Kにもなるので不安です。
0357デフォルトの名無しさんNGNG
メモリをオンデマンドで確保してる、とか。
0358デフォルトの名無しさんNGNG
>>354
ちゃんと待つけど。お前のプログラムがへぼいんだろ
0359デフォルトの名無しさんNGNG
> コンソールアプリは、終了をまってはくれません。

何のことを指しているんだ?
0360デフォルトの名無しさんNGNG
StretchBltは全てのデバイスに対して使えるわけではない。
0361デフォルトの名無しさんNGNG
使えるデバイスかどうか判定する方法も書いてくれるとさらに親切だな
ちなみにGetDeviceCapsを使うわけだが
0362356NGNG
>>360,361
なるほど、StretchBlt()にはそんな落とし穴が・・・
見た目正常に動いていたので謎でした。
どうもありがとうございます。助かりました。
0363デフォルトの名無しさんNGNG
タイトルバーのないウィンドウってどうやって作るんですか?
これでもタイトルバーは付いちゃいますよね。

hWnd = CreateWindow(szWindowClass, szTitle, NULL, // ←スタイルにNULL指定
CW_USEDEFAULT, CW_USEDEFAULT, 256, 256, NULL, NULL, hInstance, NULL);
0364bloomNGNG

http://www.agemasukudasai.com/bloom/
0365デフォルトの名無しさんNGNG
WS_POPUP
0366363NGNG
>>365
できました、ありがとう
0367デフォルトの名無しさんNGNG
個人的に、StretchBlt はデバイス未対応だったら GDI がエミュレートすべきだと
思うのだがどうよ?
0368デフォルトの名無しさんNGNG
>>343
コンソールアプリの終了を待ちたい、ということだろうが、ちゃんとできてるぞ。
ちなみに、cmd.exeを通して呼ぶのではないが、その必要性は感じない。
コンソール「アプリ」なんだからな。

とりあえず、コードを晒せや。
CreateProcessとWaitForSingleObjectの引数が重要だ。
0369デフォルトの名無しさんNGNG
>>367
GDI? デバドラでは内科医
0370デフォルトの名無しさんNGNG
>>369
デバイスドライバがエミュレートするならば、デバイス未対応とは言わない。
GetDeviceCaps() に応答するのはハードウェアではなくデバイスドライバ。

つーか、367 はユーザープログラムにいちいち GetDeviceCaps() させるような
作りは間違っているという話じゃないのか?
0371デフォルトの名無しさんNGNG
>>370
未対応つーともっと凶悪なの見たことあるぞ
RC_STRETCHBLTが真になるのにStretchBltがずっこけるプリンタとか
0372ageNGNG
age
0373デフォルトの名無しさんNGNG
それは、ドライバの製作元に爆弾を投下していい話じゃないのか?
0374356NGNG
で、独り言というか報告ですが、
BeginPaint()で取ったHDCにもRC_STRETCHBLTが
効いてないようでした。StretchDIBits()もダメ。
BitBlt()はOKですが・・・。
結局DirectDrawのBlt()で拡大したら、ページ違反が
出なかったのでこれでいこうかと思います。
0375 NGNG
StretchBltは、失敗してしかも GetLastError が 0 ということってママあるよね。
一度に描画するピクセル数を減らすとかすればよいのかな。
0376デフォルトの名無しさんNGNG
別スレッドで昨日から質問させてもらっていたのですが、答えが得られません
でした。教えて頂けそうな所を探していた所、専門的なこのスレッドを
見つけましたので、ここで質問させていただきます。
C言語でコンソールにsetpixel関数での描画の仕方がわかりません。
別にウインドウを開いてやるのは、やり方だけはわかるのですが
コンソールのほうに応用はできません。下に書いた感じだと思うのですが。
お教えお願いします。
#include <windows.h>
int main(void)
{
HWND hWnd;
HDC hDC;
hWnd=?
hDC=GetDC(hWnd);//描画準備
SetPixel(hDC,100,100,RGB(255,255,255));//描画
ReleaseDC(hWnd,hDC);//描画終了
return 0;
}
0377デフォルトの名無しさんNGNG
>>376
FindWindowはエロいからちょっとおすすめできない
0378デフォルトの名無しさんNGNG
つーかコンソールにピクセル描こうとかいう発想そのものがキチガイじみてる
0379デフォルトの名無しさんNGNG
0xA800,0xB000,0xB800,0xE000
のセグメントからいじれ
0380デフォルトの名無しさんNGNG
>>379
スレ違い
しかもいまどきそれで絵が書ける機種(PC-9800シリーズ
なわけだが)がどれだけあるんだ?
0381デフォルトの名無しさんNGNG
379はネタだろ。
哀れな376をからかうための。
だいたい>>376よ、
お前はWindowsプログラミングの基礎がわかってないぞ。
出直してこいや。
0382デフォルトの名無しさんNGNG
>>380
イタタ
0383デフォルトの名無しさんNGNG
1つのクライアント領域に2つ以上のタブコントロールを配置する事って可能ですか?
タブが2つ以上じゃなくて、タブコントロール自体を2個以上配置したいのですが。
やはり、タブコントロールごとに子ウインドウを作って、その上にタブコントロールを
置くしかないんでしょうか?
0384デフォルトの名無しさんNGNG
>>383
すきなだけ配置すればよいと思うのだが出来なかったか?
0385デフォルトの名無しさんNGNG
>>384
タブが選択されたときの全てのWM_NOTIFYが全部同じ親ウィンドウに行ってしまうので
判別ができないんですよ。
0386デフォルトの名無しさんNGNG
NMHDR::hwndFrom
はどうなった。
0387デフォルトの名無しさんNGNG
>>383
Delphi使えばこんなくだらないことではまらなくてすみますよ。
0388デフォルトの名無しさんNGNG
>>387
スレ違いは芯でくれ
0389デフォルトの名無しさんNGNG
>>383
これ見ても意味分からなかったらDelphi/VBでも使っとけ。

WM_NOTIFY:
{
NMHDR* nmhdr=(NMHDR*)lParam;

switch (nmhdr->idFrom) {
case IDC_TABCTRL1:break;
case IDC_TABCTRL2:break;
}

}
0390デフォルトの名無しさんNGNG
あるウインドウAが子ウインドウを3つくらい持ってるんだが(自力で位置調整して表示してる)
WM_SIZEでウインドウAのサイズを変えたときに子ウインドウの位置・サイズもMoveWindowで
かえてるんだけど、ドラッグしてサイズ変更してるときとかはウインドウがちらついてしょうがない。
MFCで作られたやつはサイズ変更してもほとんどちらつきは無いけど、こういうのってどうやって
SDKレベルで実装すればいいんですか?
0391デフォルトの名無しさんNGNG
WM_ERASEBKGND?
0392デフォルトの名無しさんNGNG
>>392
サンクス。試してみます。
0393392NGNG
あ、>>391ね。
0394デフォルトの名無しさんNGNG
某ネットゲーのDirectXフルウィンドウ表示を、
通常のソフトの様に表示させようと思って、
色々試したのですが、SetWindowLong SetWindowPos等を
使ってみたりしても、変更できず、色々探したのですが、
あまり有益な情報が出てこなかったので、どなたか、
何かヒントでもあれば、教えて下さい。
0395デフォルトの名無しさんNGNG
>>394
デバイスリセットしないと無理だよ?
第一ソフト側で切り替えられないなら
フルスクリーン依存の処理ばっかりだろうし。
0396デフォルトの名無しさんNGNG
VMWareつかう(w
0397デフォルトの名無しさんNGNG
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpsCmdLine, int nCmdShow)
{
MSG msg;

if (!hPrevInstance) {
if (!InitApp(hInstance))
return FALSE;
}
if (!InitInstance(hInstance, nCmdShow)) {
return FALSE;
}
while (GetMessage(&msg, NULL, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}

上記のプログラムをビルドすると
「error C2275: 'MSG' : typedef 識別子に、クラス メンバ アクセス演算子 (->) を使用しました。」
となってしまうのですが、なぜでしょうか?
ファイル名を「prog.cpp」にするとビルド出来るのですが「prog.c」にするとエラーになってしまうのですが。
0398デフォルトの名無しさんNGNG
システムのタスクバーやOfficeツールバーのように画面の一部分を占有するためには
どのAPIを使えばいいのでしょうか?
0399デフォルトの名無しさんNGNG
>>397
行番号見てるか?
0400デフォルトの名無しさんNGNG
LAN間でソケット通信をしたいと思っているのですが、
どのようなAPIを使えばいいのでしょうか?
0401デフォルトの名無しさんNGNG
>>398
AppBarでぐぐる
>>400
WinSock
0402398NGNG
>>401
あんがと。良い検索のキーワードが思いつかなかったよ。
0403デフォルトの名無しさんNGNG
だれかBrowser Componentのhostingで、

<!--[if gte IE 5 ]>
<link rel="stylesheet" type="text/css" href="style.css">
<![endif]-->

の IEのバージョンを詐称するやり方知りませんか?


IMarkupTextFrags や IMarkupPointer あたりを使うのかと思いきや、
どっからこのInterfaceを取得してよいのかわからん・・・
0404デフォルトの名無しさんNGNG
>>402
「Windows ソケット通信」でボロボロ出てきたけど?
0405デフォルトの名無しさんNGNG
>>404
ほー、「Windows ソケット通信」でAppBarについて出てくるのか。
0406404NGNG
  _, ,_
( ´_ゝ`) すまなかった
0407デフォルトの名無しさんNGNG
>396
VMWare って DirectX 動いたっけ?
0408デフォルトの名無しさんNGNG
>>407
こちらをどーぞ。
http://www.networld.co.jp/products/vmware/faq/ws_video-sound.htm

あぁVMwareほしい・・・。高い・・・。
0409デフォルトの名無しさんNGNG
WinSockで質問ですが、以下のソースでconnectするとエラーになるのですが、
何が原因かwかったら教えていただきたいのですが・・

bool __fastcall TWinSock::Open( void )
{
  WORD vr = MAKEWORD(1, 1);
  WSADATA wd;
  // 初期化
  if( ::WSAStartup( vr, &wd ) ) return false;
  // ソケット作成
  if( (SocketHandle = ::socket( PF_INET, SOCK_STREAM, 0 )) == INVALID_SOCKET ){
    ::WSACleanup( );
    return false;
  }
  // 接続
  struct sockaddr_in sa;
  sa.sin_family = AF_INET;
  sa.sin_addr.s_addr = inet_addr("192.168.1.22");
  sa.sin_port = htons(1);
  ::ZeroMemory( sa.sin_zero, sizeof( sa.sin_zero ) );
  if( ::connect( SocketHandle, (struct sockaddr *)&sa, sizeof( sa ) ) == SOCKET_ERROR ){
    Close( );
    return false;
  }
  return true;
}
0410デフォルトの名無しさんNGNG
プログラム的に特におかしいところはないが。
つか、ちゃんと相手はいるのか?
0411デフォルトの名無しさんNGNG
> エラーになるのですが

どんなエラーか書かんかい。
0412390NGNG
>>391
出来ました。ありがとんございますた。
0413デフォルトの名無しさんNGNG
>>410
相手はいます。
>>411
ああ、すみません。これからエラー内容を調べます
0414デフォルトの名無しさんNGNG
CPUの使用率を知りたいです。
っちゅーても、ただの使用率じゃなく、指定した優先順位以上のプロセスの使用率。
たとえば、distributed.net に参加してたりすると常に100%近いですが、タスクマネージャで見ると基本優先度は「低」ですよね。これを引いた値を知りたいんです。
通常のプロセスの動作に影響を与えるCPU負荷を取得する方法を探してます。
0415デフォルトの名無しさんNGNG
>>414
(゚Д゚)ハァ? 何を引くの?
優先度はタスクスケジュールのパラメータで
CPU使用率とは直接関係ないと思うのだが?
0416414NGNG
>>415
全タスクの内、指定した基本優先度以上のタスクのCPU使用率を知りたいんです。(最初からそう書け?)
ソースのイメージでは以下のような感じ。
CPU使用率 = 0;
for(i = 0; i < タスク数; i++){
 if(タスク[i].基本優先度 >= 通常){
  CPU使用率 += タスク[i];
 }
}
0417デフォルトの名無しさんNGNG
エクスプローラーでカット&ペーストを使ったファイルやフォルダの
移動って、同一ドライブなら(コピーが発生せずに)一瞬で終わって
しまいますが、どういう仕組みなんでしょうか?
あれと同じ事をプログラムから行いたいんですが・・。
0418デフォルトの名無しさんNGNG
>>417
MoveFile()
0419417NGNG
ありがとうございます。
やってみます。
0420デフォルトの名無しさんNGNG
>>409
192.168.1.22の1番のポートにつないでるけど、
ちゃんとそっちでaccept呼んでる?
0421デフォルトの名無しさんNGNG
エラーをちゃんと言ってくるまで放置でいいだろ
ノートンを窓から投げ捨てろに3port
0422デフォルトの名無しさんNGNG
HRGN = CreateRectRgn(...);
SetWindowRgn(handle, HRGN, 1);

この HRGN はすぐに DeleteObject してしまっても良いのでしょうか?
MSDN には
The operating system does not make a copy of the region.
Thus, you should not make any further function calls with this region handle. In particular, do not close this region handle.
とありますが、ネットでサンプルを検索してみると削除してしまっている人が結構いますので・・・
英語に自信がないのでもしかしたら解釈が間違っているのかと・・・
0423デフォルトの名無しさんNGNG
>>422
日本語MSDNより(SetWindowRgn)

SetWindowRgn 関数が成功すると、オペレーティングシステムは、
パラメータ hRgn で指定したリージョンを所有します。
リージョンのコピーは作りません。
したがって、以後、このハンドルを使用したり解放したりしないようにしてください。

ということで俺は律儀に保有してるよ。
0424422NGNG
どうもです
削除してもちゃんと動いているように見えるので調べてみて混乱したわけですが
わたしも残す事にします
423さんありがとうございました
0425デフォルトの名無しさんNGNG
>422 氏と似た内容ですが、
SetClipboardData( CF_TEXT, hmemText );
の hmemText は解放して良いのでしょうか?

MSDN には
"The application can read the data, but must not free the handle or leave it locked until the CloseClipboard function is called."
と書かれているので解放できそうなのですが
ネットでサンプルを探すとたいていは「解放してはダメ」と注意書きがしてあります。
これはいったいどういうことなのでしょうか?
0426デフォルトの名無しさんNGNG
>must not free the handle
ほう、「開放できそう」、ね
0427デフォルトの名無しさんNGNG
until the CloseClipboard function is called.
とも書いてあるわけだが。
0428デフォルトの名無しさんNGNG
>426
until the CloseClipboard function is called
0429デフォルトの名無しさんNGNG
>ほう、「開放できそう」、ね
英語見る限り別に解放しても問題ないじゃんか
CloseClipboard()呼んだ後なら...
0430デフォルトの名無しさんNGNG
CloseClipboard、GlobalFreeした時は何とも無くて、
アプリケーションが終了する時にメモリエラーが発生するに100モナー。

日本語版から:
SetClipboardData を呼び出した後で、システムは、hMem パラメータで指定されたオブジェクトを所有します。
アプリケーションはデータを読み取れますが、CloseClipboard 関数を呼び出すまでは、
そのハンドルを解放することや、ロックし続けることを避けなければなりません。
(CloseClipboard を呼び出した後も、アプリケーションはそのデータにアクセスできます。)
hMem パラメータがメモリオブジェクトを指している場合、そのオブジェクトは、
GMEM_MOVEABLE フラグを指定して GlobalAlloc 関数で割り当てたものでなければなりません。
0431デフォルトの名無しさんNGNG
MSDNのサンプルでも解放はしてないみたいだけど...

解放(GlobalFree)って、すなわちクリップボードの破棄になる?
っていうかクリップボードを明示的に破棄したい場合ってどうするの?
0432430NGNG
EmptyClipboard()を使う。
0433431NGNG
>>432 あ、確かに。
0434デフォルトの名無しさんNGNG
今思うに、CloseClipboardした後アプリが死んでも、
クリップボードのデータは残るから、GlobalFree
してもいいんじゃないかな。
0435デフォルトの名無しさんNGNG
(´-`).。oO(どこにのこるんだ
0436デフォルトの名無しさんNGNG
GetClipboardData の場合は破棄しちゃまずいけど、
SetClipboardData の場合は問題ないんじゃない?
俺はエラー起こったことないけど…
0437デフォルトの名無しさんNGNG
サンプルが解放を禁じている歴史的背景とおぼしきものがここに。
ttp://www.hidecnet.ne.jp/~sinzan/tips/win/win_tip04.htm

今の MSDN の記述からすれば解放はできそう。
0438デフォルトの名無しさんNGNG
マウス使ったお絵かきプログラムで、取得したマウスの座標の
・ストローク(一本の線)の数
・一本のストロークに含まれる座標点(x,y座標)
・一本のストロークに含まれる座標点の数
を変数に保存しておきたいのですが、

typedef struct{
 int PCount;//ストロークの座標点の個数
 POINT SPoint[1000]//ストロークの座標点;//1000個決め打ち
} SPOINT;

typedef struct{
 int SCount;//ストロークの数
 SPOINT Stroke[1000];//同様に1000個決め打ち・・・
} STROKE,*PSTROKE;

STROKE a;

今はこんな感じの構造体作ってやってますが、もっと良い方法はないものかと思いまして。
特に構造体の確保やストロークの座標点などは動的にメモリに確保する方が良さそうですが。
Win32SDK+VisulaCで開発しています。
0439デフォルトの名無しさんNGNG
自分ならこう。

typedef struct _STROKEPOINT{
 list<POINT> list_point//ストロークの座標点の履歴
} STROKEPOINT;

typedef struct _STROKE{
 list<STROKEPOINT> list_strokePoint;//STROKEPOINTの履歴
} STROKE,*PSTROKE;
0440デフォルトの名無しさんNGNG
>>438
std::vector/list
0441デフォルトの名無しさんNGNG
>>438
一応突っ込んどく。

びじゅらC
0442デフォルトの名無しさんNGNG
お、なんかmodula-2みたいだ。
0443デフォルトの名無しさんNGNG
動的確保するなら、

typedef struct{
 int PCount;//ストロークの座標点の個数
 POINT* SPoint;//ストロークの座標点;//1000個決め打ち
} SPOINT;

typedef struct{
 int SCount;//ストロークの数
 SPOINT* Stroke;//同様に1000個決め打ち・・・
} STROKE,*PSTROKE;

にしてmallocとかで確保すりゃ良いんじゃないの?
そもそもなんで固定長にしたんだ?
ただ、>>439みたくリスト構造にして管理する方がベターかもな。
0444デフォルトの名無しさんNGNG
std::vector の方がずっといいと思う。
0445443NGNG
おっとsage忘れた。
ところで>>438はC(not C++)使いだよね?
0446デフォルトの名無しさんNGNG
>>444
まあ、相手はマウスだからな(w
メモリコピーのコストもそれ程気にならないだろう。
0447デフォルトの名無しさんNGNG
メモリコピーのコストがイヤなら std::list
いずれにせよ、コンテナが使えるような状況で自分でリスト構造を書こうとするのは
漏れはイヤだったらイヤだ。
0448名無し@沢村NGNG
皆々様方〜、教えてくださらんか〜♪
それはmidiファイルの読み込みだが、自分で保存したmidiファイルは難なく読み込めるわけよ。
だが、他のmidiシーケンサーで作ったmidiファイルは、ちゃんと読み込めるものと、読み込んで鳴らすとチンドン屋みたいな音になってしまうものとが出てくるわけよ。
ま、ほとんどのmidiファイルはチンドン屋みたいになってしまって、ちゃんと読み込めるものはほんの少しだわな…。
皆々様方〜、私はこの原因を分析した結果原因らしきものを突き止めたわけよ。
それはノートノンやオフのステータスバイトってあるだろ?90や80よ。
それを省略して本来90407F7Fみたいにするところを407F7Fと省略するだろ?
で続けて書くと90407F7F407F7Fになるわな…。
それでデルタタイムというのもあるだろ?
デルタタイムは1バイトから4バイトまでの可変長になっていて、1バイトだったら、例えば90407F7Fになるが、もし4バイト
だったら、例えば90407F7F407F7Fになるだろ?
そうすると90407F7Fに続く407F7Fがステータスバイトが省略されてのノートオンのメッセージなのか、デルタタイムなのか区別がつかんわけよ。
どちらも7F以下で同じだしな…。
皆々様方〜、90407F7Fに続く407F7Fがステータスバイトが省略されてのノートオンのメッセージなのか、デルタタイムなのか区別する方法を教えてくださらんか〜皆々様方〜♪
ぜひお願いします♪
私はいま最後の壁にぶち当たっているのですよ!!!
0449デフォルトの名無しさんNGNG
>>448
ノイズ多過ぎ
0450デフォルトの名無しさんNGNG
>>424
NT系だと無害そうに見えるが9xで破局する
0451デフォルトの名無しさんNGNG
>>448
APIと関係ない。
0452デフォルトの名無しさんNGNG
>>沢村
お前マジでうざいよ
寒いんだよ。
0453デフォルトの名無しさんNGNG
>>448
スレ違いだとは思うけど・・・それと、その口調やめれ。んで、だな。
デルタタイムはすべてのメッセージの前に付く。
デルタタイムの後に、ランニングステータスバイトが、あるか、ない。
その後に、ノートの音階とかベロシティが来る。
その後は、またデルタタイムが来て、その後にランニングステータスバイトがあるかもしれないしないかもしれなくて、その後に音階とかベロシティが来る。
んで、またデルタタイムが来て、・・・って感じ。デルタタイムはすべてのメッセージの前に必ずある。わかった?
0454438NGNG
みなさまレスありがとうございます。
私はC++は使ったことがなかったのでそのような方法は気が付きませんでした。
もっと勉強しなければ・・・。
0455デフォルトの名無しさんNGNG
つかC++の標準リストクラス使うのもいいけど、リスト構造を全く知らないんなら
まずは自力でリスト作って理解したほうがいいと思うのだが。
0456デフォルトの名無しさんNGNG
つーか、「沢村」 は定型の荒らしコピペだから、みんな以降無視してくれよ。
0457デフォルトの名無しさんNGNG
>>455
禿同
表面だけ学んでも、ねぇ。
0458438NGNG
リスト構造は一応理解しています&プログラムも作りました。
0459デフォルトの名無しさんNGNG
済みません、教えてください。

メニューが出ていた場合に、その矩形領域を取得するにはどうしたら良いのでしょう?

クライアント領域に表示している画面イメージを取得しているのですが、他のアプリ
のウィンドウがその上にある場合には、その部分のイメージを取得したくないので
クライアント領域をクリップして、子ウィンドウのクリッピング領域をCombinRgnでOR
をとった上でイメージを取得しているのですが、
メニューに隠れた領域が、隠れた領域が、真っ黒になってしまいます。

トップレベルのウィンドウの子ウィンドウのクリップ領域もORをとってみたのですが、
症状は変わりません。そもそも、メニューからウィンドウハンドルが取れるのか
どうかも知らないヘタレです。

出来れば、くオーナードロウなどには手を出したり、メニューを出す部分に手を加えたくありません。
よろすくおながいすます。
0460デフォルトの名無しさんNGNG
>>459
隠れた領域は実際に何も描かれてないのだから無理。
0461デフォルトの名無しさんNGNG
言葉が足りず済みません。
メニューに関しては、メニューに隠れた部分が真っ黒になるのではなく、
メニューのイメージを含んで取得したいのです。
0462デフォルトの名無しさんNGNG
>459
ポップアップメニューのウィンドウクラスは "#32768" なので
HWND hwndMenu = FindWindow( "#32768", NULL );
とやればメニューのウィンドウハンドルは取れるかも。

ただ、普通に
> クライアント領域に表示している画面イメージを取得
したのなら
> メニューに隠れた領域が、隠れた領域が、真っ黒
にはならずにメニューが取得されるはず。

具体的に何がやりたくて、どう実装してみたのかが知りたい。
0463デフォルトの名無しさんNGNG
HHOOK hHookMouse = SetWindowsHookEx(WH_MOUSE, (HOOKPROC)MouseProc, DLLLocal::hInstance, NULL);
HHOOK hHookMessage = SetWindowsHookEx(WH_CALLWNDPROC, (HOOKPROC)CallWndProc, DLLLocal::hInstance, NULL);

これで、MouseProc にはちゃんと制御が行って、CallWndProc には制御が全く来ないという
状況なのですが、原因わかる人いますか?
ちなみに、SetWindowsHookEx() そのものは両方とも成功しているっぽいです。
0464ヘタレ459NGNG
>>462
ありが�d。
昨日帰り道で同じ事を思いついて、今朝着てやって見たところ、思ったとおりに出来ました。
やりたいことは、あるウィンドウのクライアント領域のイメージを取りたい。
ただし、他のアプリケーションのウィンドウと重なっている部分は除く。
ただし、自分のメニューで隠れている部分は、メニューのイメージを表示する。
できあがったのは、こんな↓感じです。なにかおかしな点、改善点があったら何でもWelcome。
(つづく)
0465ヘタレ459NGNG
BOOL CALLBACK EnumChildWindowsProc(HWND hWnd, LPARAM lParam)
{
  HRGNclipRgn = (HRGN)lParam;
  HRGNrgn = ::CreateRectRgn(0, 0, 0, 0);
  HDCDC = ::GetWindowDC(hWnd);
  ::GetRandomRgn(DC, rgn, SYSRGN);
  ::CombineRgn(clipRgn, clipRgn, rgn, RGN_OR);
  (void)::DeleteDC(DC);
  (void)::DeleteObject(rgn);
  return TRUE;
}
  ...
  clipRgn = ::CreateRectRgn(0, 0, 0, 0);
  ::GetRandomRgn(DC, clipRgn, SYSRGN);
  ::EnumChildWindows(m_hWnd, EnumChildWindowsProc, (LPARAM)clipRgn);
  hWndMenu = ::FindWindow(_T("#32768"), NULL);
  if (menuWnd != NULL) {
    ::GetWindowThreadProcessId(menuWnd, &pid);
    if (pid == GetCurrentProcessId()) {
      HDC DC = ::GetWindowDC(menuWnd);
      HRGN rgn = ::CreateRectRgn(0, 0, 0, 0);
      ::GetRandomRgn(DC, rgn, SYSRGN);
      ::CombineRgn(clipRgn, clipRgn, rgn, RGN_OR);
      (void)::DeleteDC(DC);
      (void)::DeleteObject(rgn);
    }
  }
  ::GetDCOrgEx(DC, &org);
  (void)::OffsetRgn(clipRgn, -org.x, -org.y);
  ...
0466デフォルトの名無しさんNGNG
>>463
CallNextHookEx()してないとか。
0467463NGNG
>>466
レスありがと。

でも、CallWndProc が呼ばれてないので CallNextHookEx() しようがないんですが・・・。
それとも、別の常駐プロセスがポカしてる可能性もあるって事ですか?
他にフックしてそうなプロセスがあるわけでもないのですが・・・。

ちなみに、WH_CALLWNDPROC の代わりに WH_CALLWNDPROCRET や WH_GETMESSAGE
を指定しても同様でした。
0468デフォルトの名無しさんNGNG
IEで、アドレスに
http://
telnet://
ftp://
などとやった場合、そのプロトコルに応じた処理を行うけれど、
自分でそれを実装する場合にはどうすればいいの?

例えば、
xyz://
とやりたいんだけれど
0469デフォルトの名無しさんNGNG
HKEY_CLASSES_ROOT\http

のマネをすりゃいいんじゃないの?
よく知らないけど。
0470デフォルトの名無しさんNGNG
>>469
早速のレスthx!
ちょっと見てみたけれど、例えばftpみたいに結果を改めてブラウザに表示するには
どうすればいいんだろう?
0471デフォルトの名無しさんNGNG
Pluggable Protocol Handler
0472デフォルトの名無しさんNGNG
>>471
ありがとう。調べてみる。
0473デフォルトの名無しさんNGNG
背景に画像を設置したエディタを作りたいのですが、方法が分かりません。教えてください。

ちなみに、今の私の現状は、EDITで作って、CTL_COLOREDITメッセージで、文字の背景を透過にしてから、画像のブラシを返したところ、画像が更新されず、昔書いた文字が消えなかった。
行き詰ったので、RICHEDITに乗り換えてみたところ、文字の背景の透過自体を受け付けてくれない気がする。さらに、画像のブラシを返すような関数が今のところ見つからないという状況です。
0474デフォルトの名無しさんNGNG
起動中のプログラムにフックしてその中で呼ばれているAPIのかわりに
自作関数を呼ぶようにすることは可能ですか?

 

0475デフォルトの名無しさんNGNG
>>474
可能。
0476デフォルトの名無しさんNGNG
> でも、CallWndProc が呼ばれてないので CallNextHookEx() しようがないんですが・・・。
MouseProcで。なに寝ぼけてるんだ?
0477デフォルトの名無しさんNGNG
>>473
その目的に近い動作をしているアプリをSpy++
0478デフォルトの名無しさんNGNG
>>473

CreateBrushIndirectとかで作ったブラシを
WM_CTLCOLOREDITの戻り値として使いたいってこと?
0479474NGNG
>>475
いい検索キーワード紹介してください
0480デフォルトの名無しさんNGNG
"apiフック"
0481463NGNG
>>476
MouseProc でならちゃんとしてるよ。

寝ぼけてると言われても、そう取れるレスじゃん・・・。
0482474NGNG
>>480
ありがとう
ttp://www.users.gr.jp/ml/archive/delphi/51202.asp
こんなのみつけたので
作ってみます
0483名無し@沢村NGNG
銀行のATMにアクセスするプログラムの書き方

//ネットワークに流れるデータを受信する
recive(data);
//データがATMのときは
if(data==ATM)
//1億円を自分の口座に振り替える。
sendmoney(100000000)from(anybank)to(mybank);
0484473NGNG
>478
説明が悪かったですね。WM_CTLCOLOREDITで、返り値にブラシは返せましたし、画像は表示されました。
文字の背景を透過させることで、画像の上に文字も載せられました。
でも、一度表示された文字が消えないという問題が出ました。
例えば「nnnn」という文字書いて、ウインドウをスクロールさせると、
nnnn
nnnn
nnnn
nnnn
という風にディスプレイには表示されてしまうのです。
とはいえ、文字データ自体が増えている訳ではないので、画面の更新さえすれば何とかなると思ったのです。
しかし、WM_PAINTで画面全体をBITMAP画像で更新するという方法も試したのですが、昔に書いた文字が消えてしまうという問題が出てきました。
昔書いた文字データを、記憶はしているようなのですが、古いデータはWM_PAINTでの画面の更新には反応しないという仕様のようです。

RICHEDITも今ひとつ見通しが立ちません。
もしかすると、全て自作の関数で作るべきなのかもしれないと考えているところなのですが、
どの様な方法で実現できるのか、アドヴァイスをいただけませんでしょうか?
0485デフォルトの名無しさんNGNG
WM_SCROLLでInvalidRect(NULL)すれ。
0486484NGNG
>485
それも一度試したのですが、結局WM_PAINTが呼ばれるだけですよね。
たぶん、EDITの文字の更新はWM_PAINTを通してないと思うんです。
昔書いた文字が何故か更新されないという問題が結局残るんですが。
0487478NGNG
>>486
自分もEDITをサブクラスして、
入力補完もどきを作ってみた事があるが、
どうやらGetDCして書き換えてるみたい。

>>文字の背景を透過させることで、画像の上に文字も載せられました。
SetBkMode使ったの?
だったら、EDITクラスの関知しないところだから、
自前で更新してやるしかない。

嫌な方法だけど、RedrawWindowとかMoveWindowは試した?
0488486NGNG
RedrawWindow,MoveWindowは試してなかった。
今夜にでもやってみます。

でも実はEDITクラスでは多種の文字の色とかを混在できないっぽいので、
最近はRICHEDITに走ろうとしてるんです。
 でも、RICHEDITにはSetBkModeが通用しない様なんですが、無理なんでしょうか?
それとも、通知メッセージのマスクがかかっているって、「猫でもわかる・・・」にあったんですが、
それに引っ掛かっているんでしょうか?
0489486NGNG
MoveWindowで何とか表示は出来るようです。
ちなみに、ソースと実行ファイル(色々試した跡があって、ソースは見にくいです。)↓
http://longhair-k.hp.infoseek.co.jp/data_html/text/Program/KoumeEditer/KE_001.exe

まだスクロールには弱い。
スクロールでの描写はまだやった事ないので調べてみます。
0490478NGNG
RichEditには詳しくないので、解決方法があるかもしれないが、
過去自分もEDITクラスで色々やったが、意味不明な挙動が多々あった。
悪い事は言わないからやめとけ。

自前でクラス作った方が話が早い。
ただし、バッファ管理、描画処理等プログラミングの醍醐味満載だけどな。
0491デフォルトの名無しさんNGNG
WM_GETTEXT と WM_SETTEXT に自前で応答するにはどうしたらいいの?
外部プロセスからのが捕捉できないんだけど・・・。
0492478NGNG
呼び出し側でGetWindowTextを使ってる限り無理。
0493491NGNG
いや、SendMessage() なんスけど・・・。
それでも結局 Get/SetWindowText() と一緒という事でつか?
0494478NGNG
SendMessageならプロシージャは呼ばれるはず。
Spy++で呼ばれるウィンドウのメッセージ見てみて。

まさかメッセージループで捕まえようとはしてないよね?
0495478NGNG
> まさかメッセージループで捕まえようとはしてないよね?

Σ(゚д゚lll)ガーン
そーしてまつた・・・。
どうするの? フック?
MSDN には何も書いてないみたいだけど・・・。
Spy++ で見ると、「自分の知らないところ」 が応答しているように見えまつ。
0496478NGNG
MSDNライブラリ日本語版のSendMessageより:

指定されたウィンドウが、呼び出し側スレッドが作成したものであった場合、
そのウィンドウのウィンドウプロシージャがサブルーチンとして即座に呼び出されます。
指定されたウィンドウが、他のスレッドが作成したものであった場合、
システムはそのスレッドへの切り替えを行い、
次に適切なウィンドウプロシージャを呼び出します。
複数のスレッド間で送信されたメッセージが処理されるのは、
受信側スレッドがメッセージ取得コードを実行したときだけです。
送信側スレッドは、受信側スレッドがメッセージの処理を終えるまで、
ブロックされます(待機状態になります)。


だから、自前のクラスでなかったらサブクラス化しれ。
0497491NGNG
495 は自分の番号間違えますた・・・。

>>496
ごめんなさい、メッセージループとウィンドウプロシージャを混同してました。
自分で RegisterClassEx() したウィンドウなんですけど、ウィンドウプロシージャに
他プロセスからのメッセージが飛んでこないです。
(自プロセスからのメッセージは捕まえられまつ)
なのに、他プロセスから WM_SETTEXT すると Spy++ で見れるウィンドウテキストが
変化するので、「自分の知らないところが応答しているように見える」 状態なんです
けど・・・。
0498478NGNG
Spy++では該当ウィンドウにWM_SETTEXTは送られてるよう?

(知ってるとは思うけど・・・
ウィンドウリストの該当ウィンドウ上で右クリック->メッセージ)
0499デフォルトの名無しさんNGNG
>>498
何か、OS 再起動したらちゃんと動いてくれるようになったよ・・・。
振り回してごめんなさい。
しかし、再起動で直るって事は、どっかメモリ壊してるんだろうか・・・、、

Spy++ のメッセージウィンドウでもちゃんと WM_GET/SETTEXT の S と R が
確認できますた。

でも、外プロセスからでもテキストの取得をちゃんとできるのに、Spy++ に表示
されてるウィンドウテキストが "" のままだけど、これはいいのかなあ?
0500478NGNG
たぶんGetWindowText使ってるんでしょ。
0501491NGNG
そうでつか・・・。
長々とありがとございますた。
0502デフォルトの名無しさんNGNG
画面の解像度を取得したいのですが、仮想スクリーンの場合に
仮想スクリーン全体ではなく実際に表示されるピクセル数を
取得できる API はありませんか?
例えば、1024x768 の LCD で 1280x1024 の仮想スクリーンを使っている
場合、1280x1024 ではなく、1024x768 を取得したいのです。
GetDeviceCaps ではできないようなので困ってます。
0503デフォルトの名無しさんNGNG
>>502 さんのは GetSystemMetrics() か SystemParametersInfo()
あたりで取れないのかなーなんて見ていたら

GetSystemMetrics( SM_SLOWMACHINE )

なんてのを見つけました。これが TRUEとなるマシンってどんなんですか?
くだらない質問なんですけど。
0504デフォルトの名無しさんNGNG
>>502
漏れは
GetSystemMetrics(SM_CXSCREEN)
GetSystemMetrics(SM_CYSCREEN)
を使ってるよ。
0505デフォルトの名無しさんNGNG
Under Windows 95, use GetSystemMetrics(SM_SLOWMACHINE) to check for low-end computers. It returns a nonzero value if the computer has a 386 CPU, is low on memory, or has a slow display card.

The return values (bit flags) are:
0x0001 - CPU is a 386
0x0002 - low memory machine (less than 5 megabytes)

The following is notable for video:
0x0004 - slow (nonaccerated) display card
0506デフォルトの名無しさんNGNG
>>503
486 マシンでも、それが TRUE になったのを見た事が無い。
0507デフォルトの名無しさんNGNG
>>506
そりゃそうだ
灯台元、、、
0508デフォルトの名無しさんNGNG
灯台元暮らし
0509デフォルトの名無しさんNGNG
masokoをなめるには
・
どのれす?
0510コロ助NGNG
すいません。WinSockの質問をしたいのですが。
サーバーにHTTP接続を試みているのですが、うまく接続できません。

ソース
sock[n]=socket(AF_INET,SOCK_STREAM,0);

if(WSAAsyncSelect(sock[n],hW,SM_ASYNC,FD_CONNECT|FD_CLOSE|FD_READ|FD_WRITE))

lpServEnt = getservbyname("http", "tcp");

if(lpServEnt==NULL)
{
ser.sin_port=htons(80);
}
else
{
ser.sin_port=lpServEnt->s_port;
}

lpHostEntry=(LPHOSTENT)bufHostEnt;
ser.sin_family=AF_INET;
ser.sin_addr=*((LPIN_ADDR)*lpHostEntry->h_addr_list);

if(SOCKET_ERROR!=connect(sock[n],(LPSOCKADDR)&ser,sizeof(SOCKADDR_IN)))

HTTPだと駄目なのですが、SMTPやFTPならうまく接続できて、データも転送できます。
なぜ、HTTPだけ接続できないのでしょうか?
0511コロ助NGNG
>>510
あと、
if(WSAAsyncSelect(sock[n],hW,SM_ASYNC,FD_CONNECT|FD_CLOSE|FD_READ|FD_WRITE))
の部分は、訂正して、
WSAAsyncSelect(sock[n],hW,SM_ASYNC,FD_CONNECT|FD_CLOSE|FD_READ|FD_WRITE);
ifは無しということで・・・・。
0512デフォルトの名無しさんNGNG
ネットワークスレのが回答付きやすいと思う
0513デフォルトの名無しさんNGNG
昔、Cか宿題スレあたりで見たHNだな
>>コロ助
0514デフォルトの名無しさんNGNG
>>510
ser.sin_zeroをゼロで初期化してやればいいんじゃない?
0515デフォルトの名無しさんNGNG
リストビューの詳細表示を作っているのですが、ちょっと困っていることがあります。
デフォルトの背景ではなく、過去に選択された回数によって、
背景の色を変えたいのですが、いくつか問題があります。
オーナードローで書くとなると、文字まで全部自分で書かないといけないので大変すぎます。
また、項目によって、色を変えるための情報をどこに入れたら良いのかもわかりません。
ListView_SetItemStateで設定できるのも少ないです。
グローバルにしてしまうと、更新タイミングで値が狂うのでだめです。
どうしたらいいでしょうか。
0516デフォルトの名無しさんNGNG
nm_customdraw
0517名無し@沢村NGNG
皆々様方〜、教えてくださらんか〜!!
それは画面のちらつきについてだが、私は最初WM_PAINTメッセージの中でペイントしてInvalidateRectで再描画するという方式だったのよ。
でもこれだとどうしても画面がちらついてしまうので、WEBで検索してダブルバッファ方式を採用したのよ。
この検索したページのダブルバッファ方式というのは裏画面にCreateCompatibleBitmapでビットマップをつくっておいて、
描画はすべて裏画面におこない再描画するときは裏画面のビットマップを表画面に転送するというものなのよ。
これでとりあえずは全然ちらつかなくなったのよ。
でもこれだと多分モニターかグラフィックボードの性能が悪いためだと思うけど、10秒くらい放っとくと突然画面にちゃんと色が出なくなってしまうのよ。
でも他のソフトなんか画面はちらつかないし、何時間やっても画面の色が出なくなることはないので、もっとうまいちらつき防止策をやっているはずなのよ。
まあ、WM_PAINTメッセージの中でペイントしてInvalidateRectで再描画しても10秒とまではいかないが、5分ほどで画面の色が出なくなってはいたわな…。
おそらくBITBLTを多用したためだという節が臭いわな…。
皆々様方〜、性能がボロっちいモニターやグラフィックカードでも他のソフトみたいに画面の色が出なくなったりしないいい方法を教えてくださらんか〜、皆々様方〜、お願いします〜♪
0518デフォルトの名無しさんNGNG
>>517
compatibleDC
0519デフォルトの名無しさんNGNG
>>517
セーフモードで動かしてみるべし。それでだめなら性能がボロだからではなく、あんたのプログラムがおかしい。(たぶんリソースの解放漏れ)
0520名無し@沢村NGNG
皆々様方〜、再描画における突然色が出なくなる問題だが、原因を突き止めたぞ、皆々様方〜♪
皆々様方〜、その原因というのはブラシとペンを多用しすぎていたためじゃ〜!
試しにブラシとペンをうんと減らしてみたら突然色が出なくなることはなくなった…。
ただ、あまり減らしすぎたんで、今度は画面のみてくれがしょぼくなってしまった…。
なんとかしょぼさを最低限に食い止めるためには、どうしてもあとひとつペンヲ増やす必要があるのだが、増やして大丈夫だろうか?
また突然色が出なくなったりしないだろうか?
皆々様方〜、ブラシとペンはいつくまでつくっても画面がおかしくならないか、教えてくだされ〜、皆々様方〜♪
0521デフォルトの名無しさんNGNG
>>520
ちゃんと使ったら解放してるか?GDIオブジェクト。
0522デフォルトの名無しさんNGNG
>>520
リソースメータ起動させて、様子見ながらやれよ。
0523名無し@沢村NGNG
皆々様方〜、ダメだ。ブラシ2、ペン3ではあまりみてくれがしょぼかったんで、
ブラシ2、ペン4に増やしてみたところ、長持ちはするが、やはり5分くらい再描画を繰り返すと、
突然画面に色が出なくなってしまうのよ。
どうもブラシ2、ペン3というのが、画面の色が出なくならないリミットらしいが、これだとあまりにしょぼすぎて完成作品がイヤになるわけよ。
どうしてもブラシ2、ペン4に増やしたいんだがなあ…。何かいい方法ない?
ところでリソースメータって何?フリーでありますか?それはどこからダウンロードできるのですか?
0524デフォルトの名無しさんNGNG
>>523

>>521を無視した理由は?
0525デフォルトの名無しさんNGNG
マルチポストだからじゃない?
0526デフォルトの名無しさんNGNG
>>525
?
0527名無し@沢村NGNG
>>524
GDIオブジェクトというのは知らんが、GetDCで得たDCはReleaseDCしてるし、
BeginPaintで得たDCはEndPaintしてる。
裏画面用のmemDCは複数の関数で使うからグローバルにして、WM_DESTROYメッセージの中でDeleteDCしてる。
ペンとブラシのハンドルもDeleteObjectしてる。
これですべてだが、あと何かぬかりない?
また
0528デフォルトの名無しさんNGNG
DeleteObjectのまえにSelectObjectで指定をはずすのを
忘れているに400デュカーティ
0529名無し@沢村NGNG
皆々様方〜、原因はペンとブラシの数にもあるが、それ以上にBITBLTを多用することにあるんじゃないかなという気がしてきたよ。
というのもリソースメータがアクセサリーの中に入っていたのを偶然発見しさっそく起動させて監視してみたところ、システムリソースとGDIリソースというのが見る見る少なくなっていくのがわかったからよ。
というのも私はファイルのデータの数だけforループさせてその分だけBITBLTで描画しているため何千回、何万回とBITBLTを使って広大な領域に描画していることになるわけよ。
何か常識で考えても何千回、何万回とBITBLTを使ったら画面がおかしくなりそうな気がしてきたわけだが、何千回、何万回もBITBLTを使って広大な領域に描画したら画面がおかしくなりますか?
教えてくだされ〜、皆々様方〜♪
0530デフォルトの名無しさんNGNG
沢村がもうすぐアク制かけられるに3000BitBlt。
0531デフォルトの名無しさんNGNG
プログラムを良く分かってないアフォがやることとしては
普通だと思うんだが、いかんせん書き方がウザイな。

>>529
テストするだけのプログラムを作って挙動を確かめては?
0532デフォルトの名無しさんNGNG
>>529

>DeleteObjectのまえにSelectObjectで指定をはずすのを
>忘れている
0533デフォルトの名無しさんNGNG
>>529

DeleteObject()に渡すハンドルの値と、その返り値を見てみろ。



0534名無し@沢村NGNG
>>532
SelectObjectで指定をはずすとはどういうことですか?
それはどうやるのですか?
0535デフォルトの名無しさんNGNG
>>534
SelectObjectの返り値は何のためにあると思ってんだ…
0536デフォルトの名無しさんNGNG
>>534
SelectObject(hdc, (HGDIOBJ)rand());
0537デフォルトの名無しさんNGNG
それは(゚д゚)ウマー
0538デフォルトの名無しさんNGNG
ダブルクリックをするとき、
1度目をクリックしてから2度目をクリックするまでに
ダブルクリックとみなされるポインタ移動量の許容範囲を知りたいのですが、
調べることのできる関数ってないですか?
0539デフォルトの名無しさんNGNG
>>538
GetSystemMetrics()
0540デフォルトの名無しさんNGNG
>>534
ペンもブラシも、デバイスコンテキストに選択したままだと削除できんから。「最初に選択されていたペン」「最初に選択されていたブラシ」を選択し直せば、選択解除される。>>535も参照
0541デフォルトの名無しさんNGNG
Win32APIはフリーソフトですか?
どこでダウンロードできますか?
教えてください
0542デフォルトの名無しさんNGNG
ダウンロードでも何でも貴方の脳内でお好きなだけどうぞ。
0543538NGNG
>539
ありがとう!
わかりました!
0544デフォルトの名無しさんNGNG
>>541
MXにwindowsっていうのがあるからそれ落とせ
0545デフォルトの名無しさんNGNG
ExcelのVBAを使って、IE(HTMLページ)上のドロップダウンリストの
各アイテムの文字列を取得しようとしたところうまくいきませんでした。

通常のアプリケーションにあるドロップダウンの場合には、正しく
取得できるのですが、IEのドロップダウンだと文字化けしたような
ものが返ってきます。

以下のようにSendMessage()で取得しようとしています。
SendMessage hWnd, CB_GETLBTEXT, idx, str

hWndはドロップダウンのハンドル、idxは取得したいアイテムの
インデックスを指定しています。

ドロップダウンは以下のような<SELECT>タグでできるやつのことです。

<select>
<option>abc</option>
<option>def</option>
<option>ghi</option>
</select>

IE上のドロップダウンの文字列を取得する方法をご存知の方、よろしく
お願いします。
0546デフォルトの名無しさんNGNG
IEのドロップダウンはウィドウではないが
hWndはどこから湧いてきたんだ?
0547545NGNG
FindWindowExです。
クラス名はInternet Explorer_TridentCmboBxというものみたいです。
よろしくお願いします。
0548デフォルトの名無しさんNGNG
あれはhWnd持ってないはず
0549デフォルトの名無しさんNGNG
>>544
ありがとうございました
ところで、Win32APIは何をするソフトなのでしょうか?
お願いします
0550デフォルトの名無しさんNGNG
>>545
HTML取得してあるんだったらHTMLから取得したほうが早くないかね。
0551デフォルトの名無しさんNGNG
TreeView の表示フォントを変更するにはどうしたらよい?
0552デフォルトの名無しさんNGNG
>549
544を本気にしちゃダメ。
というか、Win32APIはソフトの名前じゃないよ。
http://www.wdic.org/?word=Win32API+%3ATECH

0553デフォルトの名無しさんNGNG
Win82API に、非公開ファンクションとして、IsSheAVirgin というものが
あるということがわかりました。

戻り値は BOOL ということまでわかったのですが、引数がわかりません。

どなたか教えて下さい。おながいします。
0554デフォルトの名無しさんNGNG
やっぱ自分でおもしろいと思ってるからageてるんだろうな
0555デフォルトの名無しさんNGNG
( ゚д゚)ポカーン
0556デフォルトの名無しさんNGNG
痛々しいな
0557デフォルトの名無しさんNGNG
>>553-556 (・∀・)ジサクジエンデシタ
0558デフォルトの名無しさんNGNG
何だ、馬鹿の国から馬鹿を宣伝しに来た馬鹿か?
0559デフォルトの名無しさんNGNG
>>558
おいおい。失礼なこと言うな。
あちらではバカは崇拝の対象なんだから。
郷に入られてもあちらの郷を知る努力くらいしてやれ。
0560デフォルトの名無しさんNGNG
馬鹿の国から出て来た時点で、馬鹿の方が郷に従うべし。
0561名無し@沢村NGNG
>>540
すまんス。
「ペンもブラシも、デバイスコンテキストに選択したままだと削除できんから。「最初に選択されていたペン」「最初に選択されていたブラシ」を選択し直せば」の意味がわからんス。
ちなみに、私がやってみたのは、
ペン、ブラシの作成は、
void CreatePen_Brush()//ペンとブラシを作成
{
hBrush=CreateSolidBrush(RGB(255,255,255));
hBrush2=CreateSolidBrush(RGB(192,192,192));
hPen=CreatePen(PS_SOLID,1,RGB(192,192,192));
hPen2=CreatePen(PS_SOLID,1,RGB(0,192,0));
hPen3=CreatePen(PS_SOLID,1,RGB(255,0,0));
hPen4=CreatePen(PS_SOLID,1,RGB(0,0,0));
}
の中で行ない、
描画でSelectObject(hMemDC,hPen2);みたくデバイスコンテキストにhMemDCを選択してるから、
削除は、
void DeletePen_Brush()//ペンとブラシを削除
{
if(hBrush)DeleteObject(SelectObject(hMemDC,hBrush));//ブラシ削除
if(hBrush2)DeleteObject(SelectObject(hMemDC,hBrush2));//ブラシ削除
if(hPen)DeleteObject(SelectObject(hMemDC,hPen));//ペン1削除
if(hPen2)DeleteObject(SelectObject(hMemDC,hPen2));//ペン2削除
if(hPen3)DeleteObject(SelectObject(hMemDC,hPen3));//ペン3削除
if(hPen4)DeleteObject(SelectObject(hMemDC,hPen4));//ペン3削除
}
でいいのですか?
0562デフォルトの名無しさんNGNG
値追うの面倒だからもしかしたらあってるかもしれんがそのやり方、なんか妙だぞ?
0563名無し@沢村NGNG
ただリソースメーターを起動してみたところ、これでもGDIリソースとシステムリソースがどんどん減るっス。
0564名無し@沢村NGNG
ただ画面から色が出なくなることはほとんどなくなったっス。
でもリソースの減り方が気になるっス…。
0565デフォルトの名無しさんNGNG
>>563
さて、結局どのGDIリソースが解放されてないのか追ってみよう!俺は嫌だ。
0566名無し@沢村NGNG
>>565
どのGDIリソースが解放されてないのかはリソースメーターではわからないのですか?
リソースメーターに減っているリソースを特定するオプションはついていないのですか?
またフリーソフトでどのGDIリソースが解放されてないのか調べることができるのはありますか?
0567デフォルトの名無しさんNGNG
>>566
お前の挙げたコードの時点で明らかにおかしいんだから初心者本なりリファレンスなり見て書き直せ。
0568デフォルトの名無しさんNGNG
沢村氏ね
0569デフォルトの名無しさんNGNG
hOldPen=SelectObject(hMemDC,hPen);

       :

SelectObject(hMemDC,hOldPen);
DeleteDC(hMemDC);

リファレンス嫁
0570名無し@沢村NGNG
>>569
hOldPenは削除しなくてもいいのですか?
0571デフォルトの名無しさんNGNG
>>570
するに決まっている
0572名無し@沢村NGNG
>>569
hOldPen=SelectObject(hMemDC,hPen);
hOldPen=SelectObject(hMemDC,hPen2);
hOldPen=SelectObject(hMemDC,hPen3);        :

SelectObject(hMemDC,hOldPen);
DeleteDC(hMemDC);
ですか?
それとも、
hOldPen=SelectObject(hMemDC,hPen);
hOldPen2=SelectObject(hMemDC,hPen2);
hOldPen3=SelectObject(hMemDC,hPen3);        :

SelectObject(hMemDC,hOldPen);
SelectObject(hMemDC,hOldPen2);
SelectObject(hMemDC,hOldPen3);
DeleteDC(hMemDC);
ですか?
0573デフォルトの名無しさんNGNG
前者は意味ないだろう…
0574名無し@沢村NGNG
>>571
SelectObject(hMemDC,hOldPen);
DeleteDC(hMemDC);
DeleteObjectC(hOldPen);
ですか?
それとも、
SelectObject(hMemDC,hOldPen);
DeleteObjectC(hOldPen);
DeleteDC(hMemDC);
ですか?

0575デフォルトの名無しさんNGNG
>>574
つぅかペン切り替えになぜDCを破棄する。
0576名無し@沢村NGNG
あ、わかった。
hOldPen=SelectObject(hMemDC,hPen);
hOldPen2=SelectObject(hMemDC,hPen2);
hOldPen3=SelectObject(hMemDC,hPen3);        :

SelectObject(hMemDC,hOldPen);
DeleteObjectC(hOldPen);
SelectObject(hMemDC,hOldPen2);
DeleteObjectC(hOldPen2);
SelectObject(hMemDC,hOldPen3);
DeleteObjectC(hOldPen3);
DeleteDC(hMemDC);
だね〜。違う?
0577デフォルトの名無しさんNGNG
>>576
hOldPen=SelectObject(hMemDC,hPen);
hOldPen2=SelectObject(hMemDC,hPen2);
hOldPen3=SelectObject(hMemDC,hPen3);   


わかってない。
0578デフォルトの名無しさんNGNG
CreateDC→CreatePenならDeletePen→DeleteDC
CreatePen→CreateDCならDeleteDC→DeletePen

作成した順とは逆に開放するのが望ましい


…
0579デフォルトの名無しさんNGNG
>>576
Pen切り替えすぎだろう…
Pen3しか生きてない
0580デフォルトの名無しさんNGNG
沢村様専用スレはここですか
0581名無し@沢村NGNG
え〜と皆々様方、まとめますとですね〜♪
hPenやhPen2やhPen3は描画関数の中で破棄する。
DCは描画関数の中で破棄すると再描画されなくなるので(というのは複数の関数で使うためグローバルにして関数の外でGETしているため)
最後にWM_DESTROYメッセージの中で破棄している。
その際、最初に選択されていたDCに戻すためhOldPenというのをわざとつくって、SelectObject(hMemDC,hOldPen3);でDCを最初に戻したあと、DeleteDC(hMemDC);
でDCを破棄する…と、まあこんな感じでいいのですか?
0582デフォルトの名無しさんNGNG
Yes.




-----------------------------------------------
CR
0583デフォルトの名無しさんNGNG
main(argv,argc)のargv[0]と同じ文字列(exeのフルパス)を
取得するAPIはありますか?
0584デフォルトの名無しさんNGNG
沢村よ、お主はDCがそもそも何なのかがわかってないのと違うか?
いっぺんCreateXXX,SelectObject,DeleteObjectが何をしているのかを
図解説明してみてはどうだ,自分に対してでいいから
脳内で説明ついてないと>>576のような変なコードを書くことになる
面倒だろうがちゃんと紙に書いてみろ,断片的なアドバイスより為になるぞ
0585デフォルトの名無しさんNGNG
>>583
>main(argv,argc)

おかしいぞ。後、winmain()の引数に入ってる。
0586デフォルトの名無しさんNGNG
>>583
main(argc,argv)な

GetModuleFileName
0587デフォルトの名無しさんNGNG
> DC

ダ・カーポでつか?
直流電源でつか?
0588名無し@沢村NGNG
>>583
winmain()の引数のLPSTR lpszCmdLineというのが、main(argv,argc)のargv[0]と同じ文字列(exeのフルパス)を
取得するAPですよ。まかせなさーいって!!
0589デフォルトの名無しさんNGNG
>>587
何を煽ってるか知らんがdevice context WindowsAPI使いなら常識かと。
0590デフォルトの名無しさんNGNG
>>587
紀元後の事だって
0591デフォルトの名無しさんNGNG
>>588
引数をAPIとか言うなってw
0592デフォルトの名無しさんNGNG
>>591
騙されるな。
AP と言っている。
0593デフォルトの名無しさんNGNG
> lpszCmdLineというのが、main(argv,argc)のargv[0]と同じ文字列

(゚Д゚)ハァ?
0594デフォルトの名無しさんNGNG
>>592
・・・アプリケーション?

どうでもいいが質問者はMFC使ってるに3hThread
0595デフォルトの名無しさんNGNG
アクセスポイント?

---
argv[0] != LPSTR lpszCmdLine
0596名無し@沢村NGNG
>>584
わかってないよ。そもそも俺はプログラマーではないからな。それはおろか学校でも習ってないし、情報処理技術者の資格すら持たんよ。
完全なド素人だよ。本ちょっと読んで覚えかじっただけ!!知らなくて当たり前だろ!!
だからもっと親切に教えてくれよな?
まあそんな俺でも昔某社のプログラムコンテストで1位になったことがあるんだよ。すごいだろ?
0597デフォルトの名無しさんNGNG
>>595
ふと思ったけどじゃあコマンドラインオプションって自分で切り出さないといけないわけ?
0598デフォルトの名無しさんNGNG
> どうでもいいが質問者はMFC使ってるに3hThread

どうしてそう思ったのか訊きたいけど
0599デフォルトの名無しさんNGNG
Iは書いてないな。
でもAPってなんの意味だ?
0600デフォルトの名無しさんNGNG
沢村最高〜!!
0601デフォルトの名無しさんNGNG
PENの問題は解決したのか・・・?
0602デフォルトの名無しさんNGNG
>>597
その通り。
ただし、NT には CommandLineToArgvW() がある。
0603デフォルトの名無しさんNGNG
>>597
他は知らないけど俺は切り出してargv[]につめこんで
アダプタ通してアクセスしてる
0604デフォルトの名無しさんNGNG
>>602
勉強になりました。
0605デフォルトの名無しさんNGNG
>>603
どもども。一手間多いですなw
0606デフォルトの名無しさんNGNG
> だからもっと親切に教えてくれよな?
> まあそんな俺でも昔某社のプログラムコンテストで1位になったことがあるんだよ。すごいだろ?

あほらし。
0607名無し@沢村NGNG
>>584
まあ昔ちょっとプログラマーやってたことはあるよ。
経営者が20代の何も知らんやつで社員数4〜5名のちいさな会社でコンピュータのこと何も知らんやつばかりだったから昔某社のプログラムコンテストで1位になったこと言うと、間違ってプログラマーで採用してくれたんだ。
その会社はすぐつぶれたけどね。
はっきり言って俺はプログラムの完全なド素人だね!!
0608デフォルトの名無しさんNGNG
> 完全なド素人だよ。本ちょっと読んで覚えかじっただけ!!知らなくて当たり前だろ!!

知らない事が当たり前かどうかは知らないが、知らない事があったら勉強しようとするのが
当たり前。
0609デフォルトの名無しさんNGNG
> はっきり言って俺はプログラムの完全なド素人だね!!

いばるな。
0610デフォルトの名無しさんNGNG
沢村に訊く。
馬鹿の国から馬鹿を宣伝しに来たような見事な馬鹿とはお前の事か?
0611デフォルトの名無しさんNGNG
>>610
バカは崇拝の対象だ。
0612名無し@沢村NGNG
>>608
知らない事があったら2chで聞いて勉強するの。
それも立派な方法。
0613デフォルトの名無しさんNGNG
>>612
なぜ2ch?
周りにはいないのかい?
0614デフォルトの名無しさんNGNG
まともな解答がつくか怪しい方法を立派と呼べるかは疑問。
とりわけ、そのように人の労力にあて込んで自助努力をしない人の場合では。
0615デフォルトの名無しさんNGNG
>>611
またお前かw
0616名無し@沢村NGNG
俺はプログラムの素人だぜ。
プログラマーと知り合うチャンスはなかったよ。
プログラマーに誰一人知り合いはいねーよ。
0617デフォルトの名無しさんNGNG
>>615
オマエモナー
0618名無し@沢村NGNG
>>614
俺は結構努力をするほうだぜ。
そのような努力があったから、昔某社のプログラムコンテストで優勝できたのよ。
0619デフォルトの名無しさんNGNG
じゃ自分で調べて下さい
0620デフォルトの名無しさんNGNG
>>618
何を作ったのか知りたい・・・
0621デフォルトの名無しさんNGNG
584 に対して 596 のようなレスを返した人間の吐いたセリフとは思えんな。
0622デフォルトの名無しさんNGNG
>>618
教えて君が立派と言っているおまえが努力家なわけねぇだろ
あの程度の質問なら普通、猫でもROMってくるもんだぜ
0623デフォルトの名無しさんNGNG
つーか、沢村はまず腹筋 100 回。
話はそれからだ。
0624デフォルトの名無しさんNGNG
> 猫でもROMってくる

意味がちょっとおかしいと思うんですけど
0625デフォルトの名無しさんNGNG
お前ら!!
沢村の気持ちも考えろよ!!

沢村はな!!
沢村は・・・

・・・すまん、漏れもよくわからん
0626デフォルトの名無しさんNGNG
(´-`).。oO(とうとうこんな日が来たか。。。)
0627デフォルトの名無しさんNGNG
沢村ってポケモンじゃなかったっけ?
www.nintendo.co.jp/n01/n64/software/nus_p_nalj/smash/Pokemon.html
0628デフォルトの名無しさんNGNG
とびげり?
0629デフォルトの名無しさんNGNG
>>627
そうだ。ダウソしたポケモンII。プレイしかけだったんだ。思い出した。ありがとう。

(でも、昔のSAGA3の様な新鮮さが無いのはなぜだろう・・・。)○。
0630デフォルトの名無しさんNGNG
飛び下痢?



イ、イャアァァァァァァァ・・・
0631584NGNG
>>596
それは漏れも同じだ
Win32は社会人になってから同僚と一緒に憶えたし
情報処理技術者の資格取るときに勉強したこともWin32とは全然関係なかった
本を読みかじって覚えたのも同じさ

漏れなりに親切に教えたつもりだが?
ちゃんと紙に書けと言っただろ
それは漏れ自身がWin32を覚えるときの鍵になったことだからだ
大学ノート数冊使い切るくらい書きまくれ

腕利きのプロも元はど素人
断片的な質問よりどうやって這い上がったか訊いてみろ
0632デフォルトの名無しさんNGNG
> 断片的な質問よりどうやって這い上がったか訊いてみろ

変な誘導は止めてくれ
むしろ板の平和の為に、去ってくれるように仕向けていただけると
0633デフォルトの名無しさんNGNG
逃げろ
0634584NGNG
>>632
変な誘導とは何のことだ
コテハン叩きの邪魔がイヤなのか
0635デフォルトの名無しさんNGNG
>>634
だってスレ違いだろ
0636584NGNG
>>635
何が
0637デフォルトの名無しさんNGNG
>>636
沢村が聞き込みを始める恐れあり
>>636
沢村が聞き込みを始める恐れあり

ここはWin32API 質問箱
0638デフォルトの名無しさんNGNG
584は沢村にWin32APIの事を教えていたような・・・
0639デフォルトの名無しさんNGNG
ここが噂の沢村スレですか
0640デフォルトの名無しさんNGNG
ついに本性を表したか教えてクンが
0641デフォルトの名無しさんNGNG
>>584
一人の教えて君にスレ占領されるのはいかがなものか

>>551
カスタムドローしる
0642デフォルトの名無しさんNGNG
>>ALL
つーか沢村はネタだろ・・・
0643デフォルトの名無しさんNGNG
最初から放置しておけばいいものを。
これまでもこのスレや他のスレで散々奴の醜態を見てきただろうに。
ここまでくると教えてやろうと思ってる奴も相当痛い。無駄な努力はよせ。
0644デフォルトの名無しさんNGNG
つーか、petzold本嫁。以上。
0645戸塚ヨットNGNG
自分は初心者なんですが、
みなさんはwin32でくむとき本か何かをそばに置いてくむんですか?
それともあの膨大な量の関数やら構造体やらすべて覚えていらっしゃるのですか?
0646デフォルトの名無しさんNGNG
>>645
Win32自体については本ではなくMSDNライブラリ(VCヘルプ)で見てる
机の上の紙類は,作ろうとしてるアプリの内容に関わる資料だ
0647デフォルトの名無しさんNGNG
Win32 を一言で表すと?
0648デフォルトの名無しさんNGNG
>>647
環境
0649デフォルトの名無しさんNGNG
>>647
ぬるぽ
0650デフォルトの名無しさんNGNG
>>645
Windowsプログラム初心者のときはペゾルト本見てた
0651デフォルトの名無しさんNGNG
>>645
MSDN
0652デフォルトの名無しさんNGNG
基本はMSDNをみながら、どうしても分からなければ参考になりそうなものを検索
間違ってもBBSなんかで質問はしない
0653デフォルトの名無しさんNGNG
>>652
そうだな
たまに珍しい話を見かけて
それについてMSDNを調べることはあるが
0654デフォルトの名無しさんNGNG
DialogBoxでリソースからモードレスダイアログ作って、
WM_INITDIALOG 時に、ダイアログ上にある Edit にテキストをセットすると、
全て選択された状態で表示されるんですが
選択範囲を解除するには、どのタイミングで EM_SETSEL を
送ればいいんでしょうか?

WM_INITDIALOG で送ると上手くいかないっぽいです。
0655デフォルトの名無しさんNGNG
質問です。

SetWidowLong()でスタイル変更した後、SetWindowPos() で
SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED
を指定してるのですが、再描画されません。
(その後、ウィンドウをつまんで移動させたりすると再描画されます)
下がその部分のコードなのですが、なにか足りないものがあるのでしょうか?

 SetWindowLong( GetDlgItem(hDlg, IDC_UNLOADHOOK), GWL_STYLE, nLastLong | WS_DISABLED ) ;
 SetWindowPos( hDlg, NULL, 0, 0, 0, 0,
   SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED );


0656654NGNG
すいません、自己解決しました。
0を返さないといけなかったようでつ。
0657デフォルトの名無しさんNGNG
>>655
再描画の処理が足りません…
0658名無し@沢村NGNG
皆々様方〜、教えてくだされ〜♪
それはトラックバーだが、現在3つのトラックバーとその他いろいろなコントロールをつけているのよ。
で、その3つのトラックバーのうちの一つだが、ウインドウを最小かしてもとにもどしたり、ファイルを開くダイアログを開いてその中のフォルダを開いたりすると消えるのよ。
もろもろのコントロールの中で、その3つのトラックバーのうちの一つだけが消えるのよ。
ためしに3つのトラックバーの順序を入れ替えてみたら消える位置に入れ替えたトラックバーがやはり消えた…。
最初FillRectで画面全体を塗りつぶしていたので再描画のとき下に隠れて描画されていないのかと思ったが、
手さぐりでいくらクリックしても反応ないのでどうもトラックバー自体がなくなってるみたいです…。
皆々様方〜、どうすればこれが直るのですか?教えてくだされ〜皆々様方〜♪
0659デフォルトの名無しさんNGNG
↑相手にしない
0660デフォルトの名無しさんNGNG
(・∀・) ニヤニヤ
0661デフォルトの名無しさんNGNG
>>641
ありがとやした。
ところで、TreeView の各アイテム毎に指定する必要がない場合でも
個々にカスタムドローしないといけないもんなんでしょか。
なんか方法がありそうな気はするんですがわからんちんです。
0662デフォルトの名無しさんNGNG
(´∀` )エヘヘ VB初心者質問スレ Part19
http://pc3.2ch.net/test/read.cgi/tech/1039859691/
から移動してきました。

Windows2000でファイルシステムがNTFSの場合、
txtやExcel、JPG等のファイルのプロパティ⇒「概要」で
作成者や、タイトル、コメント等を入力できるんですが、
その入力した内容を得るには
なんていうAPI関数使えばいいですか?

日付、ファイルサイズの取得はできたですがそれ以降わかりません

ExtendedProperty
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/objects/shellfolderitem/extendedproperty.asp
を使えばできそうな気がするんですが、いまいちわかりません
よろしくお願いします
0663デフォルトの名無しさんNGNG
C++スレよりやってまいりましたっ

C++で作成したアプリケーションについてですが
Spy++とかで確認することができる
クラス名があるじゃないですか。
あれはバイナリ(exe)にはどんな風にして格納されてるんでしょうか?

やりたいことはメインウィンドウのクラス名を
バイナリエディタで書き換えたいのです。

よろしくおながいします(´・ω・`)
0664五右衛門NGNG
沢村はリソース問題は解決したのかはっきりすべし。
その返答次第では斬る。
0665デフォルトの名無しさんNGNG
>>661
SETFONTじゃ変わらなかったっけ?
0666デフォルトの名無しさんNGNG
>>664
トリップも付けてないし途中で出現した奴は騙り荒らしだろ
0667デフォルトの名無しさんNGNG
>>663
単なる静的文字列として格納されているかもしれないし
リソースとして格納されているかもしれないし
それはアプリの実装次第。
0668デフォルトの名無しさんNGNG
>>663
んなもん書き換えてどーすんだ?
0669名無し@沢村NGNG
>>664
リソース問題はまだ解決しとらんよ。
長時間使ってみることがないので、いまのところ問題は生じとらんので、とりあえずほっといて、次をやってるところ…。
0670デフォルトの名無しさんNGNG
沢村は斬られますた
0671デフォルトの名無しさんNGNG
また、つまらぬものを…
0672次元NGNG
つまり、みんなの善意は無に帰した訳だ。
そりゃぁ、五右衛門も我慢ならねぇわな。
おいルパン。次行こうぜ。
0673デフォルトの名無しさんNGNG
>>668
えっとですね、そのアプリは多重起動を防止しているんですが、
おそらく、ウィンドウクラス名でチェックしてるんではないかなと思って
それを解除したかったのです。
ちなみにタイトルのキャプションは見てないようでした。

よろしくお願いします。
0674デフォルトの名無しさんNGNG
>>667
アプリの実装しだいというのはどういうことでしょうか?
ちなみに静的文字列ではないようでした。
バイナリエディタで検索してみたのですが、見つからなかったので・・・。
0675デフォルトの名無しさんNGNG
>>673
Mutex とかは?

>>674
本当?
それが UNICODE アプリだったりした場合は UNICODE で格納されているけど。
0676デフォルトの名無しさんNGNG
>>674
普通はミューテックスを使うと思う
圧縮されいることもあったりする
0677デフォルトの名無しさんNGNG
>>662
http://www.microsoft.com/japan/msdn/windows/windows2000/ntfs5.asp
のサンプルコード1
0678デフォルトの名無しさんNGNG
>>675
StirlingのコードセットをUnicodeにかえて
検索してみましたが発見できませんでした・・。

>>675,>>676
・Mutexについて
もしMutexを使用していた場合、
対象バイナリを変更することによって
多重起動を可能にすることは可能なのでしょうか?

以前・・・かなり昔ですが・・・多重起動が禁止されている
ソフトを多重起動可能にする(100%ではない)
ユーティリティがあったのですが
どうやってやっていたのか不思議です。。。
バイナリが2バイトだけ直接書き換えられていました。
検索してももう見つからなかったです。
0679デフォルトの名無しさんNGNG
起動チェック用Mutexの作成失敗時における
条件分岐を潰すだけだろ。
0680デフォルトの名無しさんNGNG
それか、Mutexを識別する文字列をちょこっとだけ変えるとか。
でも、プログラム勝手に変えちゃダメだぜ。カタギの人なら。
0681デフォルトの名無しさんNGNG
そうなん? ライセンスで別途禁止されていなければ
プログラムの著作物に関しては
電子計算機においてより効果的に利用し得るようにするために
必要な改変は認められるって例外規定があったような
0682名無し@沢村NGNG
皆々様方〜、リソースのちゃんとした開放について考えてるうちふと思ったんだが、
DeleteObject(hPen);
のかわりに、
Zeromemory(hPen,sizeof(hPen));
っのは使えるの?なんかこっちのほうがちゃんと開放されそうな印象だが…。
0683デフォルトの名無しさんNGNG
ハンドルってそういうことが出来ない様に抽象化されたものじゃないの?
HBITMAPやHFONTも4バイトで済むとお思いか?
0684デフォルトの名無しさんNGNG
>>682
Cを一から勉強することをオススメする。

ちなみにあなたの言っていることは、
「char *x=malloc(128);と確保したメモリを、
free(x);のかわりにx=0;にした方がいいのでは?」
という質問とあまり変わらなかったりする。
0685精神科医NGNG
DeleteObject==ZeroMemoryとなぜ思ったのですか?
Deleteが付けばメモリクリアする物だと思ってるのですか?
先生の薬をちゃんと飲みましたか?
0686デフォルトの名無しさんNGNG
>>679
そのユーティリティは対象アプリのパスを渡すだけで
バイナリを自動的に修正していました。
外部から条件分岐の場所を判別することって
できるものなのでしょうか?

>>680
Mutexを識別する文字列はどのようにして
格納されているのでしょうか?
VC++でビルドされたものと限定しても構いません。
これがわかればそこを数バイト書き換えれば
うまくいきそうですね。
0687名無し@沢村NGNG
>>684>>685
リソースを開放することと、メモリをクリアすることは違うのですか?
リソースって結局メモリのことだよね?
するとクリアと開放の違い…?
そもそも開放とは何なのですか?
0688デフォルトの名無しさんNGNG
>>687
根本的に判ってない。
>リソースって結局メモリのことだよね?
違う。「リソース=資源」。メモリに限らず、デバイスとかもリソース。
リソースの確保とは、「これから漏れが使うから、他のヤシに使わせないように汁!」で、
リソースの開放とは、「使い終わったから、他のヤシに使わせて良いよん」である。どうやって
確保するかは処理系によって変わる。
0689688NGNG
って、WinAPIのスレだった…「どうやって…」以降は蛇足だな。
0690名無し@沢村NGNG
>>688
他のヤシとは他のソフトのこと?
hDC=GetDC(hwnd);
でデバイスhDCを確保した場合、その前にhDCを使っているソフトがあるということ?
hDCをhxxxxyyyyDCと恐らく誰も使わない名前にした場合も、他にもhxxxxyyyyDCを使っているソフトがあるから、
他のヤシに使わせないように汁、だったり、他のヤシに使わせて良いよん、だったりするわけ?
0691名無し@沢村NGNG
また、プログラムの中でリソースを確保する部分はいくつかに決まっているから、
最初リソースを確保したら、最初確保した分だけリソースが減ってあとは減らないはずなのに、
使っているうちどんどん減っていくのはどうして?
0692デフォルトの名無しさんNGNG
>>691
(゚Д゚) ハァ?
0693名無し@沢村NGNG
あ、わかった。関数の中でリソースを確保したり開放しているからだ!
だからちゃんとリソースが開放されていないと、関数を呼び出した回数だけどんどんリソースを確保していくことになるから、リソースがどんどん減っていくんだ!!
だとすると…解決方法がわかったぞ!!
リソースをグローバルにして確保と開放を関数の外のプログラムの最初と最後の部分で1回だけやればいいんだ!!
そうするとちゃんと開放されなくてもリソースはどんどん減ることはない…と思うがどうですか?
0694デフォルトの名無しさんNGNG
( ´,_ゝ`) プ
0695デフォルトの名無しさんNGNG
もはや「Win32API 質問箱」ではないな
0696デフォルトの名無しさんNGNG
>>沢村

問題に対する対処方法が間違っている

「こうじゃないかな」
という解決方法を思いついた時はまず自分で確かめろ

確かに答えを知っている人に答えを教えてもらった方が
楽だし速いかもしれないが、この方法では近いうちに壁にぶつかる

あと、ここは「Win32API 質問箱」であって「沢村質問箱」じゃない
0697デフォルトの名無しさんNGNG
>>686
CreateMutexかGetLastErrorをフックしたらいけるかな。
0698デフォルトの名無しさんNGNG
>>639
沢村君・・・
まさか、ずいぶん前に君がレスしたリソースの解放について、
まだ解決してなかったのかい?
0699698NGNG
間違いた。
>693へのレス
0700名無し@沢村NGNG
>>698
もう解決したよ。
リソースの開放の仕方はいまいちわからないが、プログラムの初めでリソースを1度だけ確保し、終わりに開放すれば、リソースがどんどん減ることはないということがわかったよ。
とりあえず、これで充分だよ♪
0701デフォルトの名無しさんNGNG
if(y.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY){
これってどういう意味ですか?
何を調べてるのか教えてください。
0702デフォルトの名無しさんNGNG
MFCアプリの場合は、ウィンドウクラス名は動的に生成されているがな
0703デフォルトの名無しさんNGNG
「お前が何を調べているのか」教えろ
0704名無し@沢村NGNG
>>701
君、y.dwFileAttributesが何なのかはよくわからないが、恐らく処理系で定義されているファイル属性についての構造体だろう。
またFILE_ATTRIBUTE_DIRECTORYというのは、言葉の意味から「ファイル属性はフォルダです」という直訳が出てくるよ、君!!
そうすると & は論理and演算子だから、「もしy.dwFileAttributesが「ファイル属性はフォルダです」ならば」という直訳が出てくるよ。
そうすると漠然とながら意味がわかるだろ?どうかね、君!?
0705名無し@沢村NGNG
>>701
君、お礼は!?君!?
いいかいくだいていうと、FILE_ATTRIBUTE_DIRECTORYは多分ファイル属性を表わす定数なんだよ。
何とか.hの中で
#define FILE_ATTRIBUTE_DIRECTORY 1
みたく定義されているはずなんだ。
また恐らく他にも、
FILE_ATTRIBUTE_xxxとか
FILE_ATTRIBUTE_yyyとか
FILE_ATTRIBUTE_のつく定数がたくさん定義されているはずなんだ。
そして、y.dwFileAttributesも多分ファイル属性についての構造体メンバで、
if(y.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY){
以前にy.dwFileAttributesにFILE_ATTRIBUTE_のいずれかが代入されているはずなんだよ。
だからif(y.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY){ はどのFILE_ATTRIBUTE_が代入されているかを調べているのだと思うよ。
というよりFILE_ATTRIBUTE_DIRECTORYが代入されているかどうかを調べていると言ったほうがいいだろうね。
そして、y.dwFileAttributes かつ FILE_ATTRIBUTE_DIRECTORYが真ならば、
つまりy.dwFileAttributes が FILE_ATTRIBUTE_DIRECTORYかどうかを調べているというわけだよ。
これならば馬鹿でもわかるよね?
君、俺はプログラムのド素人なんだよ!!ビックリしたかい?


0706デフォルトの名無しさんNGNG
お礼を強要するんなら帰れ
0707デフォルトの名無しさんNGNG
レスが飛んでる…
沢村?w
NGワードにしたら気分爽快♪
0708デフォルトの名無しさんNGNG
みんなよくネタ荒らしに付き合ってられるほど暇だよな
0709デフォルトの名無しさんNGNG
>>701の質問は(゚Д゚)ハァ? と思ったが、沢村に回答されて
正直>>701が哀れに思ってきたのは漏れだけだろうか…
0710デフォルトの名無しさんNGNG
>>709
安心しろ、俺もだ。
0711デフォルトの名無しさんNGNG
>>704-705
どうもありがとうございました。
とりあえず、y.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORYが真だと
ディレクトリだということですね。
なんとなく理解できました。そして、手元のソースも理解できました。
0712デフォルトの名無しさんNGNG
沢村、その調子だ。俺は応援しているぞ!!
0713デフォルトの名無しさんNGNG
沢村のジサクジエン…
0714デフォルトの名無しさんNGNG
沢村ウザいなあ。
リアルなら嫌われ者の癖についてきたがるやつは
殴りつけて追っ払えるのにネット上じゃそうもいかん
0715デフォルトの名無しさんNGNG
>なんとなく理解できました。
なんとなくかよ・・・
0716デフォルトの名無しさんNGNG
リストビューでキー入力を無効にしたいのですが、どうしたらいいでしょうか。
デフォルトの動作だとキー入力があると、そのキーと同じ頭文字のところに
フォーカスが移動してしまいます。これをやめさせたいのです。
よろしくおねがいします。
0717デフォルトの名無しさんNGNG
>>716
LVN_KEYDOWN
0718デフォルトの名無しさんNGNG
>>717
ありがとうございます。
でも、それだと、キー入力に対する動作が追加できるだけで、
選択状態を変更されないようにはできないので、困っているんです。
0719デフォルトの名無しさんNGNG
沢村に礼を言われたこと無いが。
0720デフォルトの名無しさんNGNG
>>686
ひょっとしてそのユーティリティはWindows3.1用では???
0721717NGNG
>>718
↓じゃだめ?

case WM_NOTIFY:
switch ( ((LPNMHDR)lp)->code )
{
case LVN_KEYDOWN:
return TRUE;
}
break;
0722デフォルトの名無しさんNGNG
GDIに関して、質問したい事があります。


hDCに対して、3種類のペン、A,B,Cで描画するのですが、この時
SelectObjectで受け取る、変更前のオブジェクトを

HPEN prev;

prev = (HPEN)SelectObject(hDC, A);
/*(描画)*/
SelectObject(hDC, prev);
prev = (HPEN)SelectObject(hDC, B);
/*(描画)*/
SelectObject(hDC, prev);
prev = (HPEN)SelectObject(hDC, C);
/*(描画)*/
SelectObject(hDC, prev);

のように、毎回新しいオブジェクトを使う前に元の状態に戻すべきですか?
それとも、

prev = (HPEN)SelectObject(hDC, A);
/*(描画)*/
SelectObject(hDC, B);
/*(描画)*/
SelectObject(hDC, C);
/*(描画)*/
SelectObject(hDC, prev);

のように、最終的に元のオブジェクトに戻っていればOK?

0723デフォルトの名無しさんNGNG
>>722
最終的に元に戻ってりゃOK。
関数内で描いてる場合、その関数を呼んだヤツにバレなきゃいいのさ…
0724デフォルトの名無しさんNGNG
>>722
どちらでもよし。
てか、上しかダメなら「Select」なんて単語つかわんだろ。

むしろ1関数でしか使わないなら元に戻さなくてもよかったり…
0725デフォルトの名無しさんNGNG
私の住んでいる地域では今日から小学校が冬休みです。
0726デフォルトの名無しさんNGNG
こちらの地域では今日から工房以下すべて冬休みです。
おかげで通勤が楽になります。
0727デフォルトの名無しさんNGNG
現在、会社からカキコしてますが何か?
0728デフォルトの名無しさんNGNG
システム全体の通信送受信量を返すAPI教えていただけませんか?
そういうものがあるって話は聞いたのですが
0729デフォルトの名無しさんNGNG
>>728
始めに断って置くが俺は解らない。
ところで、システム全体ってのはどういう意味なんだろう。
例えばネットワークカード2枚入っている場合はそれらの合計?
それともシステム内でパケットを飛ばしている場合はそれも含める?
0730728NGNG
説明不足ですみません。
NICの合計通信量ということです。ローカル内での通信は抜きで。
多分用意されているのはそういうAPIかと思います。
送受信量をリアルタイムに表示するプログラムを作りたいのです。
0731デフォルトの名無しさんNGNG
すみません、SDKプログラミング1ヶ月の初心者です。
いろいろ調べてみたのですが分かりませんでした。教えてください…

例えば、Outlook Express(6.0) のメールのリストを見ると、選択した
アイテムでも「送信者」より左側の部分は反転表示になっていませんよね。
このように、レポート形式のリストビューを、サブアイテム単位で
反転(選択)状態にするにはどうすればいいのでしょうか?
0732デフォルトの名無しさんNGNG
>>730
Windowsのネットワークのプロパティを見れば出てくるから
方法はあると思うんだけれど…

ちょっと解らないです。面白そうだから調べてみようかな

>>731
俺はOutlook使ったことが無いのでわからないけれど、
直感的にカスタムコントロールを使ってる気がする。
spy++等でwindow classを調べてみるところから初めてみるといいかも。
0733デフォルトの名無しさんNGNG
>>730
随分時間がかかったけど、大体わかりました。NetBIOSを使えば出来そうです。
#SNMPから調べていたためにいらぬ時間を取ってしまった
サンプルコード書いてみましょうか?
0734728NGNG
>>733
おお!
どうもありがとうございます。
NetBIOSですか・・・
是非サンプルお願いします。
0735デフォルトの名無しさんNGNG
>>734
サンプル書いたらsent/receive共に0になりますた(涙
netBios::ADAPTER_STATUSは使えない模様です。
もう少し調べてみよう…ぬか喜びさせてしまいスマソ
0736デフォルトの名無しさんNGNG
GetIfEntry
の
dwInOctets; // octets received
dwOutOctets; // octets sent
じゃねーのか?
0737デフォルトの名無しさんNGNG
随分長い間調べてしまった……

>>736
MSが表示しているのは、そこではなくてunicast packetsの方みたいです。
dwInUcastPkts; // unicast packets received
dwOutUcastPkts; // unicast packets sent

サンプル書いたので、適当に整形して読んでみてください。
なおエラー処理は一切やっていません。あしからず

#include <stdio.h>
#include <winsock2.h>
#include <iprtrmib.h>
int main(void){
HINSTANCE hIpHelpApi=LoadLibrary("iphlpapi.dll");
typedef DWORD (CALLBACK* T_GETIFTABLE)(PMIB_IFTABLE, PULONG, BOOL);
T_GETIFTABLE pfGetIfTable=(T_GETIFTABLE)GetProcAddress(hIpHelpApi,"GetIfTable");
char *buffer=NULL;DWORD buf_size=0;(*pfGetIfTable)((PMIB_IFTABLE)buffer,&buf_size,true);
buffer = (char*)malloc(buf_size);memset(buffer,0,buf_size);
(*pfGetIfTable)((PMIB_IFTABLE)buffer,&buf_size,true);
MIB_IFTABLE* mit=(MIB_IFTABLE*)buffer;
for(int i=0;i< (int)mit->dwNumEntries;i++) {MIB_IFROW* mir=(mit->table)+i;
printf("interface %d:%s\n",i,mir->bDescr);
printf("sent:%d/recv:%d\n\n",mir->dwOutUcastPkts+mir->dwOutNUcastPkts,mir->dwInUcastPkts);
}free(buffer);FreeLibrary(hIpHelpApi);return 0;}
0738デフォルトの名無しさんNGNG
>>737
そこまで親切に書いていただけるとは・・・
2chでこんな優しくされたのは初めて(´д⊂)
まずはこのソースを解読せねば
本質的でない部分もわからとこけっこうありまして
大事な時間を割いて調べていただいて、本当にありがとうございました。
0739デフォルトの名無しさんNGNG
>>732
お返事、どうもありがとうございます。
早速クラスを調べてみたら、
"SysListView32"ではなくて
"ATL:SysListView32"になっていました。
これは、やはり"SysListView32"に少し手を加えた
カスタムコントロールと見るのが妥当でしょうか。
勉強してまた出直してきます…
0740デフォルトの名無しさんNGNG
CreateToolbarExでツールバー作るときに256色以上のビットマップを使ったら実行時にエラーが出るんだけど何で?
0741デフォルトの名無しさんNGNG
>>740
あのさ、頼むから検索してから聞けよ
http://www.google.com/search?hl=ja&lr=&q=CreateToolbarEx+256
0742名無し@沢村NGNG
>>722
prev = (HPEN)SelectObject(hDC, A);
/*(描画)*/
SelectObject(hDC, B);
/*(描画)*/
SelectObject(hDC, C);
/*(描画)*/
SelectObject(hDC, prev);
とした後、
DeleteObject(hDC);とするのね。
hDCに対して選択されているObjectを元に戻して削除するのね。
それはわかったぞ!!
わからないのは、PenをDeleteObjectするときは、何をどう元にもどせばいいのですか?
0743名無し@沢村NGNG
つまりhDCを削除するときは、hDCに対して選択されているペンを元にもどして削除する…と。
ではペンを削除するときは、ペンに対して選択されている何を元にもどして削除するのかが、わからないわけ。
0744デフォルトの名無しさんNGNG
>>742
いや、 hDC は DeleteObject しないぞ。
0745デフォルトの名無しさんNGNG
>>742
センスがない。諦めてDelphiでも使う方が絶対にいい
0746名無し@沢村NGNG
>>744
いや、だからキスプリ。
つまりhDCをDeleteDCするときは、hDCに対して選択されているペンを元にもどして削除する…と。
ではペンをDEleteObjectするときは、ペンに対して選択されている何を元にもどして削除するのかが、わからないわけ。
0747デフォルトの名無しさんNGNG
選択はずしたら DeleteObject で OK。
0748名無し@沢村NGNG
>>747
いや、だからそれは、hDCをDeleteDCするときは、hDCに対して選択されているペンをはずしたらDeleteDCでもOK…と。
あ、hDCでもDeleteObjectしてOKなの?
ただ、ペンをDEleteObjectするときは、何をどう選択はずして削除するの?
0749デフォルトの名無しさんNGNG
>>746
DeleteDCって滅多に使わんと思うが・・・まぁいい。
ペンがデバイスコンテキストから選択解除されてれば、いつでもそのペンを DeleteObject で削除できる。
0750名無し@沢村NGNG
>>74
ペンがデバイスコンテキストから選択解除するということは、
ペンをSelectObjectで最初の選択に戻すことと同じなのですか、違うのですか?
また、そうすればペンを DeleteObjectできるのですか?
ではデバイスコンテキストを削除するときは、何をどう選択解除しなければならないのですか?
0751デフォルトの名無しさんNGNG
AはPENで、BはBRUSHで、CはFONTという罠(ワラ
0752名無し@沢村NGNG
>>749
>ペンがデバイスコンテキストから選択解除されてれば、いつでもそのペンを DeleteObject で削除できる。

prev = (HPEN)SelectObject(hDC, A);
/*(描画)*/
SelectObject(hDC, B);
/*(描画)*/
SelectObject(hDC, C);
/*(描画)*/
SelectObject(hDC, prev);

上の例で削除できる「そのペン」とはどのペンのことですか?
prev?A?B?C?
0753デフォルトの名無しさんNGNG
いいから沢村はpetzold本よめ。
0754デフォルトの名無しさんNGNG
>>750
最初のでもいいし、他のペンを選択しても元のペンは選択解除される。
そうすればペンを DeleteObject できるです。

デバイスコンテキストを本当に削除したいのですか?
それはあなたが CreateDC で作ったものでしょうね?
もしそうなら、ペンもブラシもフォントもビットマップも全部、SelectObject で最初の選択に戻してから、DeleteDC すれば良いと思います。
0755デフォルトの名無しさんNGNG
いいから沢村の相手はやめろ。
0756名無し@沢村NGNG
>>754
いや、CreateDCで作ったものではなく、GetDCでつくったもの。
CreateDCというのは知らんでした…。

>最初のでもいいし、他のペンを選択しても元のペンは選択解除される。
そうすればペンを DeleteObject できるです。


prev = (HPEN)SelectObject(hDC, A);
/*(描画)*/
SelectObject(hDC, B);
/*(描画)*/
SelectObject(hDC, C);
/*(描画)*/
SelectObject(hDC, prev);

の場合、次にDeleteObject(prev) してもいいし、DeleteObject(A) してもいいし、DeleteObject(B) してもいいということですか?

0757名無し@沢村NGNG
皆々様方〜私は今回もリソースの開放の問題に挫折したようです…。
また日を改めて質問しますのでその時はよろしくね♪
ま、プログラムの最初に一回だけペンなどのオブジェクトを作っとけば、リソースがどんどん減っていくことはないという必殺技があるから、とりあえずそれで間に合わせときます♪
0758デフォルトの名無しさんNGNG
けっきょく、petzold本よまないつもりなのか、、、
0759名無し@沢村NGNG
>>758
基本的に本は読まないポリシーだが、
ちなみにそれはどこの出版社から出ているのですか?著者は誰ですか?いくらですか?
0760デフォルトの名無しさんNGNG
>>759
お前は、自分で調べることが出来ないのか?

本気で鬱陶しいと思っている。
0761デフォルトの名無しさんNGNG
名無し@沢村 の発言

> 基本的に本は読まないポリシーだが、
> ちなみにそれはどこの出版社から出ているのですか?著者は誰ですか?いくらですか?


プログラマに向いてない今すぐやめろ。
0762ルパンNGNG
っていうかよぉ、とっつぁ〜ん!
沢村は人のレスもマトモに読〜んでないぞぉ。
SelectObjectすらまだ分かってないんだから、たまったもんじゃないぃ。

教え甲斐があるヤツぁいいが、コイツは教え甲斐が全くないんだよぉ。
なぁ?ふっじこちゃ〜ん。
0763デフォルトの名無しさんNGNG
あーあ、ここの厨はいつになったら沢村を放置できるようになるのかね。
0764デフォルトの名無しさんNGNG
リッチエディットコントロールで
error C2061: 構文エラー : 識別子 'HRESULT' がシンタックスエラーを起こしました。
とエラーが出てしまうのですが、何が原因でしょうか?
0765デフォルトの名無しさんNGNG
>>764
ソースあげて
0766766NGNG
バイナリデータ中の 0x15 0xA1 0x6C の3バイトの位置を検索するには
1バイトずつ調べる以外に方法はないんですか?
普通の文字なら strstr() が使えるけど、バイナリのマッチは
一般的にはどうやっているのですか?
0767デフォルトの名無しさんNGNG
>>766
漏れは小さいデータしか扱ったことがないから、データを16進文字列
EA029EF5C0426FFF0A0B
のような文字列に変換して、15A16Cをstrstr関数で検索しているよ。
小さいならこれで逝ける。
0768766NGNG
ありがとうございます。
でも僕はそれはバグがあると思いますよ。
00010000
に対して
001000の位置を strstr() で調べようとしたら。
でもその考え方は使えそうです。
コンマ区切りとかすれば問題は無いですね。
ありがとうございます。
他にもいい方法があったら教えてください。
0769デフォルトの名無しさんNGNG
バイナリはバイナリで検索すれば良い。
Win32なら_lfindとかね。
リニアサーチが嫌ならば、BM法を使って調べると速くなる
0770766NGNG
768>>
ヤバ!!!!!!
漏れの顔は青ざめた。今日寝れない。でもバグ発見ありがとう。
0771デフォルトの名無しさんNGNG
UINT(4byte)やMMX(8byte)使って検索するとかで検索スピードを
速めることは可能。
さらにデータ配列に一定の規律が守られていればさらに最適化も
可能。例えば、その並びは必ずあるアラインメントで並びが保証され
ているとか。
0772766NGNG
ありがとうございます。_lfind は珍しい関数ですか?
http://websearch.yahoo.co.jp/bin/query?p=_lfind+Win32+%a5%d0%a5%a4%a5%ca%a5%ea&hc=0&hs=0
見つかりませんでした。
BM法を検索してみます。
0773デフォルトの名無しさんNGNG
> 772
_lfind は VC についてくるライブラリの関数。
ttp://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vclib/html/_crt__lfind.asp
で、その _lfind の様な関数の実装。
ttp://www.hidecnet.ne.jp/~sinzan/tips/c/c_tip23.htm
そしてBM法。
ttp://alfin.mine.utsunomiya-u.ac.jp/~niy/algo/b/bmMatch.html
0774766NGNG
ありがとうございます。
_lfind は↓にもありました。
http://www.tru64unix.compaq.com/docs/i18n/japan/Single_UNIX_Documentation/NCH0944X.HTM
今からそれでやってみます。
0775デフォルトの名無しさんNGNG
BROWSEINFO構造体のulFlagsに BIF_RETURNONLYFSDIRS を指定してSHBrowseForFolder関数を呼び出すと、
ディレクトリ以外を選択しているときにOKボタンが灰色になります。
ところが ulFlags に BIF_USENEWUI と BIF_RETURNONLYFSDIRS を指定するとディレクトリ以外を選択してもOKボタンが灰色になりません。
BIF_USENEWUI でもOKボタンを灰色にしたいのですがどうすればよいのでしょうか。
0776766NGNG
苦戦しております。_lfind() の最後の引数が分かりません。
ABと出力するつもりでソースを書いているのですが、最後の引数は
何を書けばいいんですか?

#include <windows.h>
#include <iostream.h>
#include <search.h>

main(){
BYTE a[7] = {0x10, 0x11, 0x12, 0x13, 0x65, 0x66, 0x0};
BYTE b[3] = {0x12, 0x13, 0x65};
unsigned int num = 7;
unsigned int wid = sizeof(BYTE);
char *p;

p = (char*)_lfind(b, a, &num, &wid, ?);

printf("%s", p);
}
0777722NGNG
>>723,724
回答ありがとうございました。後者の最後に元のハンドルに戻す方法で行こうと思います。

>>742氏の指摘しているDeleteObjectのタイミングですが、
私の(質問するきっかけとなった元の)ソースでは
AにSelectする前にA,B,CをまとめてCreatePenし、
最後のprevに戻す処理の後で3つまとめてDeleteObjectしています。
0778766NGNG
VCというコンパイラでないとだめなみたいですね。

#include <windows.h>
#include <iostream.h>
#include <search.h>
#include <string.h>
#include <stdio.h>

int compare( const void *arg1, const void *arg2 );

main(){
BYTE a[7] = {0x10, 0x11, 0x12, 0x13, 0x65, 0x66, 0x0};
BYTE b[3] = {0x12, 0x13, 0x65};
unsigned int num = 7;
char *p;

p = (char*)_lfind(b, a, &num, sizeof(BYTE), compare);

printf("%s", p);
}

int compare(const void *arg1, const void *arg2 ){
return( _stricmp( * (char**)arg1, * (char**)arg2 ) );
}

_lfind と _stricmp か未定義だと言われてしまいました。

BM法に夢を託します。
0779デフォルトの名無しさんNGNG
つーか、_lfindは要素単位で探すんだから使えないんでは?
0780デフォルトの名無しさんNGNG
>>777
それでいいと思われ。
使う前にCreateし、いざ使うときになったらSelectし、使い終わったらDelete。
Deleteは忘れちゃまずいから、まとめてするようにしてます。俺はね。
0781デフォルトの名無しさんNGNG
strstr みたいな memmem を自作したほうが楽だし汎用性が高いと思うが
_lfind を使ってできないこともないだろう。

int compare(const void*p,const void*q)
{
  const BYTE*a=(BYTE*)q;
  const BYTE*b=(BYTE*)p;
  return (a[0]!=b[0])&&(a[1]!=b[1])&&(a[2]!=b[2]);
}
int main(void)
{
  BYTE a[]={'0','1','2','3','4','5','6','\0'};
  BYTE b[]={'3','4','5'};
  unsigned int num=sizeof(a)-sizeof(b);
  printf("%s\n",_lfind(b,a,&num,1,compare));
  return 0;
}
0782デフォルトの名無しさんNGNG
車輪の再発明〜♪
0783デフォルトの名無しさんNGNG
> 782
で、1個目の車輪は何処に?
0784デフォルトの名無しさんNGNG
_lfindのソースはSDKにあったりするな。
自分で同等品作るならSTL的に書くのがいいと思うが。
0785デフォルトの名無しさんNGNG
>>721
できました。感謝感激です。ありがとうございますた。
0786デフォルトの名無しさんNGNG
IEのツールに自前のツールを登録したいのですがどうやればいいですか?
0787デフォルトの名無しさんNGNG
>>786
レジストリ
0788デフォルトの名無しさんNGNG
メニューにそのままビットマップを表示させるのはInsertMenuItemでできるのですが、
ワードみたいに、反転表示になったらビットマップの部分が盛り上がるようにしたいのです。
http://www5b.biglobe.ne.jp/~kouta_y/news/newsc/c03.html
↑ここみたいに自分で描画するしか方法はないのでしょうか。
0789デフォルトの名無しさんNGNG
>>788
Spy++で調べてみればいいけど、自分で描画するのが普通だぞ
0790名無し@沢村NGNG
ヌヒ等よ、俺はプログラミングの息抜きに時々↓こういうところで吠えることがあるよ。

http://sports3.2ch.net/test/read.cgi/k1/1040558493/l50
0791デフォルトの名無しさんNGNG
放置でお願いします
0792デフォルトの名無しさんNGNG
奴婢よばわりされてもでつか
0793デフォルトの名無しさんNGNG
>>792
そう言うのを「釣られる」という。
0794デフォルトの名無しさんNGNG
だからトリップつけてないウザコテなど
共有煽りハンドルになるに決まってるといってるだろ
0795名無し@沢村NGNG
ライトウェーブや3DStudioMaxのフォーマットなんてダサくて使えないよ。
せめてバーチャファイターのチェンリーなみのがサクサク動かないと…!
PCの3Dはダサいから今のところ手を出していない…。
0796デフォルトの名無しさんNGNG
↑刺客をおくりました。

はい次の方質問をどうぞ
0797初心者NGNG
すいません、質問をします。

最新のWinXPのIE6で、ウィンドウの上側にツールバーがありますよね。(メニューやボタンやアドレス入力欄など)
このツールバーの左側(XPだと縦の列で点が並んでいる)をドラッグすると、ツールバーを移動できますが、・・。

今VISUALC++6で開発をしていて、ウィンドウにツールバーをつけようとしていますが、表示されるツールバーが昔の98・MEのようなふるいツールバーになります。
最新のXPに対応したツールバーデザインを表示させるためには、どのように手を加えればいいのですか?

教えてください。
0798初心者NGNG
つづき・・・。
いわゆる、LUNAインターフェースですよね。

今HPを検索してますが・・・なかなか資料がでてこないです・・。

だれかおしえてください。
0799名無し@沢村NGNG

もうちょっとでクリスマス。。★彡
パートナーは見つかりました?(o^.^o)

http://petitmomo.com/mm/
ここがちょっぴりエッチ系の沢村が運営している出会いサイトです。
もしよかったら使ってみて、、、
ヨロシクです。

名無し@沢村(^o^)-☆
0800デフォルトの名無しさんNGNG
>>798
manifestとかビジュアルスタイルでぐぐれ。

はい次の方
0801デフォルトの名無しさんNGNG
晒しage
http://gyaraxy.s10.xrea.com/
0802名無し@沢村NGNG
>>797
TBSTYLE_FLAT
0803デフォルトの名無しさんNGNG
797が哀れだ
しかも間違ってるし
0804デフォルトの名無しさんNGNG
>> 797
ReBar のことを言っているのか?
だったら、ReBar とか クールバー でググる。

ReBar が何かわかったら、
あとは vector で配布されている Win32API のサンプルでも見て勉強。
ReBar が実現できたら、manifest とか試してみれ。
0805デフォルトの名無しさんNGNG

この前、人のソースをみたら、

 HDC hdc = GetDC( hWnd );
 HDC mdc = CreateCompatibleDC( hdc );
 HBITMAP bmp = CreateCompatibleBitmap( hdc, x, y );

 (中略)

 DeleteObject( bmp );
 DeleteDC( mdc );
 DeleteDC( hdc );

とかやってあって驚いた

CreateDC, CreateCompatibleDC, GetDC, GetWindowDC, BeginPaint と、
DeleteDC, ReleaseDC, EndPaint の対応付けがわからないまま
プログラムやっているヤツラってけっこういるのな。
0806名無し@沢村NGNG
それくらい分かってますが、何か?
0807デフォルトの名無しさんNGNG
GetDCで取ってきたハンドルをDeleteDCしたら
Windowsがお亡くなりにならないか?

漏れはなった(NT4.0)
0808デフォルトの名無しさんNGNG
>>805
まぁ、関数名を理解出来ていないって事だな

Get(取得)したからRelease(開放)してやる
Create(作る)したからDelete(削除)してやる

>>806
Object関数も理解出来ていな香具師には聞いてない
0809デフォルトの名無しさんNGNG
>>806
それくらい分かってるなら、さっさとリソース問題を解決しろよ。
屁みたいなもんだろ。
0810デフォルトの名無しさんNGNG
簡単に沢村に釣られるのはやめましょう

はい次の方、質問をどうぞ
0811デフォルトの名無しさんNGNG
沢村って何人居るの?
0812デフォルトの名無しさんNGNG
次スレの 1 のテンプレには、是非 「名無し@沢村は徹底的に無視してください」 と
書いて欲しいな。
0813デフォルトの名無しさんNGNG
全員、「名無し@沢村」の名前にするとか。
0814デフォルトの名無しさんNGNG
勝手に

皆々様方〜教えてくだされ〜♪
(書き込みの内容)
教えてくだされ〜♪

に置換してくれるとなおよい。
0815デフォルトの名無しさんNGNG
その変換を自動で行う沢村ブラウザを・・・


作るなよ?
0816デフォルトの名無しさんNGNG
ときどきビジー状態になる処理のあるアプリを作っています。
ビジー中のキー入力やマウスクリックは無視したいのですが、
どのようにすればよいのでしょうか?
0817デフォルトの名無しさんNGNG
EnableWindow() とか?
0818デフォルトの名無しさんNGNG
ファイルを検索するのはどうやればいいんですか
0819デフォルトの名無しさんNGNG
FindFirstFile() で、ディレクトリ出てきたら再帰かな?
0820デフォルトの名無しさんNGNG
>>816
ビジー処理を別スレッドで処理すれば理想的ですよ。
0821デフォルトの名無しさんNGNG
質問です。
巨大なファイル(数M〜数十Mまで、可能性としては数Gも扱いたい)の中の
非常に小さい一部分のみを変更・削除・追加する場合、
どのように処理をすればいいのか教えて貰えませんか?
0822デフォルトの名無しさんNGNG
変更はfopen("rw")/fseek/fwrite
追加削除は最後尾でないかぎり、全部をコピーしなおすしかない
0823デフォルトの名無しさんNGNG
途中の削除や追加が必要ならインデックスを作って状態を管理する
DBの実装を参考に汁
0824デフォルトの名無しさんNGNG
>>822
それで数Mのファイルをアクセスするのはきついです…

>>823
エディタみたいな物で、ファイル形式を変えるわけにはいきませんし、
今までの情報を残しておくことも基本的には出来ません

セクタチェインとかをいじる方法だと、ファイルシステム依存になるので、
なにかそういうAPIがあるとは思うのですが、なかなか見つからず…
0825デフォルトの名無しさんNGNG
ないよ。
0826デフォルトの名無しさんNGNG
Windowsプログラミングしてる奴はリチャード・J・シモンの
1万円ギリギリマトリックスのWindows95 APIバイブル1/2/3本
持ってんの?
星の数ほどあるAPIを用途別に理解する為には買うべき?
0827デフォルトの名無しさんNGNG
Jeffrey RichterのAdvanced Windowsを穴があくまで読んで
あとはMSDN libの検索を使いこなせるようになれば
API一覧は要らないと思う
0828デフォルトの名無しさんNGNG
>>825
無い?確か大容量専門のAPIがあったと思ったが。
昔このスレで読んだような気がするぞ
0829デフォルトの名無しさんNGNG
ないよ。
0830デフォルトの名無しさんNGNG
メモリマップトファイルとmemmoveを使えばコピーしなおす
必要はないと思うが途中で強制終了されたりすると
確実にファイルが壊れる
0831デフォルトの名無しさんNGNG
>>830
ファイルを書き込んでいる時に強制終了されても、
どちらにせよファイルは壊れるのでは?
0832デフォルトの名無しさんNGNG
コピーしなおしなら、元のファイルが壊れることはないでしょ。
0833デフォルトの名無しさんNGNG
メモリマップトファイルを使うな、という話が昔あったなぁ。
ただファイルの内容をメモリに展開したいだけなら、多少面倒でも
自分で制御する方がいいだろうね。
0834デフォルトの名無しさんNGNG
メモリマップ`ト'ファイル


プ
0835デフォルトの名無しさんNGNG
↑
0836デフォルトの名無しさんNGNG
226件
http://www.google.com/search?q=%E3%83%A1%E3%83%A2%E3%83%AA%E3%83%9E%E3%83%83%E3%83%97%E3%83%88%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB&ie=UTF-8&oe=UTF-8&hl=ja&lr=
237件
http://www.google.com/search?q=%E3%83%A1%E3%83%A2%E3%83%AA%E3%83%9E%E3%83%83%E3%83%97%E3%83%89%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB&ie=UTF-8&oe=UTF-8&hl=ja&lr=
微妙だな。発音は「ト」で間違ってないと思うが
何がおかしい?
0837デフォルトの名無しさんNGNG
>>833
結果としてコピーの回数を減らせたりしないと
メリットないね
0838デフォルトの名無しさんNGNG
英語の発音とカタカナがマップドだと思うな
0839デフォルトの名無しさんNGNG

つーか、ファイル扱うときには、どんなに小さな変更であれ、
一時ファイルを作ってそこへ書き込み、すべて正常に終了したら、
ファイルを置き換えるのが常識だと思うのですが。
0840デフォルトの名無しさんNGNG
>>839
で、ハードリンクがいつのまにかバックアップのほうを指していて
鬱になると。
Winにも標準でファイルへのシンボリックリンクがほしい。
0841デフォルトの名無しさんNGNG
>>840
>Winにも標準でファイルへのシンボリックリンクがほしい。

IShellLinkとIPersistFileでできるだろ
0842デフォルトの名無しさんNGNG
>>838
エンハンス ド とかあったからなー
ちょっと違和感持っても迂闊にプとか言えないよな
0843デフォルトの名無しさんNGNG
>>838
メジャーな解説書やサイトでは大体「マップト」だと思うが。
0844デフォルトの名無しさんNGNG
メジャー信奉者か


プ
0845デフォルトの名無しさんNGNG
>843
うるこい
0846デフォルトの名無しさんNGNG
無声子音で終わった後のedはドでもトでもいいんでなかったか。
0847デフォルトの名無しさんNGNG
「ド」で合わせるのが日本語英語の常という事でよろしいか?
0848デフォルトの名無しさんNGNG
ブッシュ・ド・ノエル
0849デフォルトの名無しさんNGNG
>>821
NTFS限定でなら Sparse File で検索しれ。
0850デフォルトの名無しさんNGNG
Sparse Fileとはちと違ったか。早とちり。鬱。
0851単位すらまともに書けない奴に粘着するお化け ◆efCnjqFIg6 NGNG
>>821
0852デフォルトの名無しさんNGNG
そこの名前長いヤシうざい
0853デフォルトの名無しさんNGNG
>>852
239 名前:デフォルトの名無しさん 投稿日:2002/12/25(水) 18:50
お馬鹿さんは日本語も理解できないんだね。哀れ。

0854デフォルトの名無しさんNGNG
お化けなんてないさ、お化けなんて嘘さ♪
2ちゃんの馬鹿が電波飛ばしたのさ〜
0855デフォルトの名無しさんNGNG
> 239 名前:デフォルトの名無しさん 投稿日:2002/12/25(水) 18:50

(゚Д゚)ハァ?

> お馬鹿さんは日本語も理解できないんだね。哀れ。

「名前」 欄は名前を書くところだと理解できない香具師が居るんだね。遭われ。
0856デフォルトの名無しさんNGNG
マイクロソフトがメモリマップトと言っている以上、
MS系の開発に限っては「メモリマップト」と言うべきだと思われ。

英語の発音だと無声音化するし、だいたいカタカナでは書けないし。
0857デフォルトの名無しさんNGNG
>>854
その先は、

だけどちょっとだけどちょっと僕だって怖いさ。

だっけか?(w 
0858デフォルトの名無しさんNGNG
>>853
うわっ
粘着晒しあげっ
0859デフォルトの名無しさんNGNG
えっと、Win32に関係ない話題はどうかと思うが
0860デフォルトの名無しさんNGNG
>>853
うぜぇよ。粘着君(藁
0861858NGNG
>>855
某スレの粘着厨房なので無視してやってください。
0862デフォルトの名無しさんNGNG
>>853
空気読めよ。ばればれだっつーのwww
0863デフォルトの名無しさんNGNG
ム板で煽りあいはやめてくれぃ。
0864デフォルトの名無しさんNGNG
>>863
あんたが煽ってるんじゃん。
止まってたのに。
0865デフォルトの名無しさんNGNG
>>864
それはいわゆる「オマエガナー」
0866デフォルトの名無しさんNGNG
お?嵐か?
俺もはいろーか?
0867デフォルトの名無しさんNGNG
>>841
カーネルで解釈できないショートカットなんぞがほしいんじゃない。遅いし
0868デフォルトの名無しさんNGNG
ジュンマは実在した!
0869デフォルトの名無しさんNGNG
最後まで見なかった。結局、藤岡弘がジュンマだったんでしょ?
0870841NGNG
>>867
ハードリンクだってあるじゃん
ショートカットとUNIXのシンボリックリンクのどんな違いが気に入らないの?
0871867ではないがNGNG
>>870
fopen("hogehoge.lnk") で元のファイルが開けないのでは
シンボリックリンクとしては使えないじゃない。そりゃ、ハードリンクで
間に合わせることが出来る場合もあるけれど。

--
ファイルにジャンクションを張れるようにするパッチとか。
ttp://homepage1.nifty.com/emk/symlink.html
0872870NGNG
>>871
fopen()の直呼びで元ファイルが開けるかどうかは
カーネルで解釈しているかどうかには関係ないし
速度に根本的な違いがあるわけでもないよね

漏れはダブルクリック以上の使い方でストレスがあるとすれば
ソース管理をフォルダ単位でやりたい時くらいだけど
ボリュームセットの中ではハードリンクできないんだっけ?
0873870NGNG
>>839の時点での話では
fopen()の直呼びじゃなくても
よかったような...
0874デフォルトの名無しさんNGNG
昔(NT3.1か3.5時代だったような)、Win32SDKのヘルプかなにかで、
エディタのサンプルを見た記憶があります。
エディタといっても、Editを使うものではなくて、自分でゴリゴリ処理を
行うものでした。(といっても、サンプルっていうくらいだから、簡単なものでした)
このサンプルって今どこにあるか分かる方はいらっしゃいますでしょうか?
0875デフォルトの名無しさんNGNG
>>874
それはしらないけど、今月のCマガでエディタ作ってたよ。
0876デフォルトの名無しさんNGNG
そんなヲタ雑誌買えません。。。
0877874NGNG
>>875
アリガトウ!(´▽`)
買ってくるよ。
0878デフォルトの名無しさんNGNG
>>870
> ハードリンクだってあるじゃん
840読みました? つーか841は840へのレスだから
読んでないわけないんだが脊髄反射だけでレスしてません?
>>872
> カーネルで解釈しているかどうかには関係ないし
関係大ありだと思うがそれはともかくようするに
どんなAPI使っても透過的に開いてくれないんじゃ
嬉しくない
> 速度に根本的な違いがあるわけでもないよね
実際遅いんだもん
Cygwinのnowinsymlinkとwinsymlinkで比べれば一目瞭然
ファイルのオープンしかしないのにshell32.dll
(ひいてはuser32だのgdi32だの)をロードさせられるのも
気に食わないし
0879デフォルトの名無しさんNGNG
あとショートカットはエクスプローラでツリー表示できないのもやだ
もっともディレクトリへのシンボリックリンク相当物はすでにあるから
たいした問題じゃないんだが
0880843NGNG
>>856
MSDN検索すると、どっちの語もヒットするんだよな。
まあ、翻訳者によるみたいな。

漏れ的にはどちらでもいいが、>844-845あたりは自分しか信じられない阿呆。
0881デフォルトの名無しさんNGNG
>880
うるこい
0882sage 粘着スマソNGNG
とりあえずmappedの発音記号を調べると「t」になってるわけだが。
英語のできないプログラマは(略

0883デフォルトの名無しさんNGNG
>882
うるこい
0884デフォルトの名無しさんNGNG
>>882
そんなことは百も承知のうえでやってたんじゃないの?
0885デフォルトの名無しさんNGNG
マップドもマップトも日本語。英語を使いたいならmappedと書けばいいだけの話。
0886デフォルトの名無しさんNGNG
>>882
今更得意げに何言ってんだか・・・
0887843NGNG
>>884
>>834,838みたいなのが居るからおかしいんじゃないのって話になったかと。

>>885
まあそゆこと。
英語を日本語になおしたら「こうだ!」的な事を言うのが間違ってるし、
そんなプログラマは(略
0888デフォルトの名無しさんNGNG
まあ、正しいのはマップドだけどね
0889デフォルトの名無しさんNGNG
マップドだけで埋めようぜ
0890デフォルトの名無しさんNGNG
>>887-888
オマイラうるこい。
クダランことでスレ流すな。ボケェ
発音変わっただけで、動くプログラムが動かんようなるわけじゃないじゃろ。
ええかげんにせーや。
0891デフォルトの名無しさんNGNG
こんだけ需要があるんだから
カタカナ読みスレでも立てれば?
たしかUNIX板にはそんなスレがあったはず
0892デフォルトの名無しさんNGNG
>>891
雑談スレで充分。
0893デフォルトの名無しさんNGNG
マップルにしとこう
0894デフォルトの名無しさんNGNG
API は Application *Programmer* Interface なのに
*Programming* ってかくバカが多くて困りますッ!!
0895デフォルトの名無しさんNGNG
http://www.cnet.com/Resources/Info/Glossary/Terms/api.html

それより、何が困ったのか知りたい。
0896デフォルトの名無しさんNGNG
ネタスレ!!(・∀・)
0897デフォルトの名無しさんNGNG
>>890
適当プログラマーだな。
真相を追求するのが真の技術者だよ。
0898デフォルトの名無しさんNGNG
適度にネタをたしなむのが真の技術者だよ。
0899デフォルトの名無しさんNGNG
>897
追求する部分を間違えているぞ。
発音なんか、地方訛りが加わると「ト」でも「ド」でもどうにでもならぁ
んな、くだらんこと議論するんだったら他へ逝け、ドアフォが
そんなものが真の技術者だったら、日本の開発者の未来は無いな。

ただ、>>897-898は真の技術者でないことが判明したんだがな
0900デフォルトの名無しさんNGNG
どうでもいいわけだが。
0901デフォルトの名無しさんNGNG
そろそろ次スレ立てようぜ。
Win32 Application *Programmer* Inteface 質問箱8
0902デフォルトの名無しさんNGNG
PerlをParlと書こうが、Googleをゴーグルと発音しようが、真の技術者ですか?
0903デフォルトの名無しさんNGNG
http://msdn.microsoft.com/library/en-us/winprog/winprog/windows_api_start_page.asp?frame=true
Windows APIのは Programming らしいな。
0904デフォルトの名無しさんNGNG
Perl 言語っていうヤシは張っ倒していい?
0905デフォルトの名無しさんNGNG
Windows 2000 を「にせん」と言おうが、「にーけい」と言おうが真の技術者です。
Tを「ティー」と言おうが、「テー」と言おうが真の技術者です。
スタジオを「ステューディオ」と発音しようと真の技術者です。
0906デフォルトの名無しさんNGNG
>>895>>903
誤植だな
0907デフォルトの名無しさんNGNG
>>903
そうとも言い切れんぞ。
http://www.google.com/search?num=50&hl=ja&&q=application-programmer-interface+site%3Amicrosoft.com
0908デフォルトの名無しさんNGNG
米国人と話する時はどうしましょう。
0909デフォルトの名無しさんNGNG
独自解釈、独自翻訳する人達の集まりはここですか?
0910デフォルトの名無しさんNGNG
>>908
まじめな話、「マップド」だろうが「マップト」だろうが通じる
というか日本語だって
「トーキョー エキ ハ ドコデスカ?」
と片言で発音めちゃくちゃで話しかけられても何とか理解できるだろ

きちんとした発音じゃないと通じないと思っているなら
米国人なめすぎだ
0911デフォルトの名無しさんNGNG
そもそも100%の翻訳なぞ存在せん罠
そこまでこだわるなら、翻訳自体許されない行為だろ。
英語のままで使え。
それも、米英どっちの英語かは知らんがな。
0912デフォルトの名無しさんNGNG
舞妓さん見て「ゲイシャガール」と言われるのもOKだとか?
ちと違う?
0913デフォルトの名無しさんNGNG
もう鎖国するしかないな。
0914デフォルトの名無しさんNGNG
>913
外来語、外国語も禁止。
0915デフォルトの名無しさんNGNG
>>878
あるノードaへのリンクb,cがあって
aのコピーdを作りdに修正を加え
後でbをdへのリンクに貼り直したら
cがaへのリンクのままだったって話なら
b,cはハードリンクでもシンボリックリンクでもショートカットでも同じことだろ
IShellLinkがCOMでない形で欲しいならそう言えばいい

脊髄反射という医学用語の使い方がよくわからんが
仮に漏れが840を読んでいなかったとして
そんなのは漏れの勝手だ放っとけちゅーねん
あんたが840を読んでない者と話したくなければレスする義務はない
見も知らぬ者に何を甘ったれてるんだおまえは
0916デフォルトの名無しさんNGNG
>914
外来技術も禁止。
0917デフォルトの名無しさんNGNG
そしてぴゅう太日本語ベーシックへ(w
0918デフォルトの名無しさんNGNG
まだドとトの話やってたのか。。
0919デフォルトの名無しさんNGNG
純国産文化って貧弱ね
0920デフォルトの名無しさんNGNG
>>917
「日本語ベーシック」
ダメです。ベーシックは外来語です。
0921デフォルトの名無しさんNGNG
指輪物語の翻訳も俺はどうかと思うんだよね。
つか日本人って翻訳にたいする意識が低すぎ。
0922デフォルトの名無しさんNGNG
機械太日本語基礎
0923デフォルトの名無しさんNGNG
>>907
http://www.google.com/search?num=50&hl=ja&&q=application-programming-interface+site%3Amicrosoft.com
圧倒的に多いね
0924デフォルトの名無しさんNGNG
量に頼るなんて低俗だな
0925デフォルトの名無しさんNGNG
まったくだ。メジャーならそれでいいのかよ。
0926デフォルトの名無しさんNGNG
マイナーならそれでいいのかよ。
0927デフォルトの名無しさんNGNG
CreateFileMappingA(-1, ...)
MapViewOfFileEx(hoge hoge hoge ...)
で作成した領域に、プログラムファイルをロードして動作させているプログラムがあります。

この領域の保護属性をEXEにして、デバックしたいのですが、
最初の段階でSEC_IMAGEを加えても、
「%1は有効なWIN32アプリケーションではありません。」
(GetLastError+FormatMessageからとれるメッセージ)
といわれてしまいます。
どうすればいいでしょうか?
0928927NGNG
x最初の段階
○CreateFileMappingで
0929デフォルトの名無しさんNGNG
>>915
>>878はただのUNIX厨なんだろ。
「Windowsは糞!UNIXこそは神!!マンセー!!!」
って叫びたいだけなんだから、そっとしとけ。
0930デフォルトの名無しさんNGNG
NTFS ってリンク作れなかったか?
エクスプローラは対応していないようだが・・・。
0931デフォルトの名無しさんNGNG
>>924-925
量が多い方が、メジャーな方がいいに決まってるだろ。
どれだけ多くの人に通じるかが問題なんだから。
0932デフォルトの名無しさんNGNG
量が多いと大変なんだが・・・。
0933デフォルトの名無しさんNGNG
>>930
リンク・・・フォルダのハードリンク・・・ジャンクション便利よ。
お気に入り(の一部)を他ユーザと共有できるし。
0934933NGNG
× フォルダのハードリンク
○ フォルダのシンボリックリンク
0935デフォルトの名無しさんNGNG
アホ質問ですまん。。。
どこかにAPI関数一覧及びその意味・使い道を列挙した
サイト・本は無いのですか???
0936デフォルトの名無しさんNGNG
>>935
ヘルプ
0937デフォルトの名無しさんNGNG
VC++ 付属の MSDN
0938デフォルトの名無しさんNGNG
APIバイブ
0939名無し@沢村NGNG
>>935
ヌヒよ、APIの一覧は
http://www.microsoft.com/japan/developer/library/
の「プラットフォームSDK」の「プラットフォームSDK(日本語)」の中に全て書いてあるよ、ヌヒよ。
0940デフォルトの名無しさんNGNG
沢村って、マジで質問に答えてるよな・・・
もしかして、他の奴らよりマシな存在なのかも・・・
0941デフォルトの名無しさんNGNG
939=940
0942デフォルトの名無しさんNGNG
ヌヒよ、沢村って、マジで質問に答えてるよな・・・
もしかして、他の奴らよりマシな存在なのかも・・・、ヌヒよ。
0943940NGNG
>>941
ゴメン・・・今、少し酔ってるから・・・
ただ、ほ〜んの少し、沢村がマトモに見えてしまった・・・
0944デフォルトの名無しさんNGNG
> ヌヒよ

この時点でまともでないと思われ
0945デフォルトの名無しさんNGNG
不良が偶にいいことをすると高く評価される現象と同じだ。
0946デフォルトの名無しさんNGNG
ストックホルム症候群みたいなものか。
0947デフォルトの名無しさんNGNG
WIN32_FIND_DATA x.cFileNameをCreateFileに使うにはどうすればよいでうsか。
0948デフォルトの名無しさんNGNG
>>947
引数lpFileNameにそのまま渡し、諸引数を設定すれば出来るけれど、
このような質問を投げているということはプログラミングに向いていないのかもしれない。
0949デフォルトの名無しさんNGNG
この板で質問をするということはプログラミングに向いていないのかもしれない。
0950デフォルトの名無しさんNGNG
この板で回答をするということはプログラミングに向いていないのかもしれない。
0951947NGNG
そのまま渡したんですけどカレントディレクトリから一個下のディレクトリにあるファイルは
うまく開いてくれません。どうすればいいですか?
0952デフォルトの名無しさんNGNG
剥けてないと思う。
0953デフォルトの名無しさんNGNG
むしろ向いているけど左向き、みたいな。
0954デフォルトの名無しさんNGNG
>>951
相対パスと絶対パスを理解していればそういう質問は出てこないはずだが、
もしそうなら PC 初心者板に逝ってくれ。
0955デフォルトの名無しさんNGNG
右に何かあったりするの?
0956947NGNG
すみません。解決しました。
おさw
0957947NGNG
お騒がせしました。
0958デフォルトの名無しさんNGNG
次スレまだー?
0959デフォルトの名無しさんNGNG
VBで画像処理のプログラムを組んでるんですが
画素一つ一つの情報を取得する関数(~.Point()ってやつ)で、全画素について情報を得て
得た画素一つ一つについて反転処理をしたんですが
どーにもPhotoshopのような超高速の反転処理と比べると足元にも及ばない遅い速度になってしまいます
アルゴスレでも聞いたんですがどーやら使ってるAPIに問題があるとかで
どうすれば高速化できるのでしょうか?
0960デフォルトの名無しさんNGNG
API云々の問題じゃないような…。
とりあえず使うとしたらGetPixel/SetPixelかな?

でも、本格的な画像処理するんだったらいちいちそんなことしないでしょ。
0961デフォルトの名無しさんNGNG
って、アルゴリズムスレで言われたのね。
失礼。(アルゴスレって初めて聞いた)
0962デフォルトの名無しさんNGNG
反転ならBitBlt一発で出来るのでは?
0963デフォルトの名無しさんNGNG
BitBlt一発ならPhotoshopより速いだろうね。
0964デフォルトの名無しさんNGNG
VBならPaintPictureでも一発反転できるんじゃないの?
0965デフォルトの名無しさんNGNG
959 は根本的に勘違いしてるでしょ。
Photoshop のようなペイントソフトは、内部に独自の作業領域を持ってる。
普通にプログラム内の配列のように使っている領域だ。
反転などの処理はその作業領域に対して行っていて、画面に直接描画しているわけでは
ない。
描画に必要な時にはじめてその作業領域をビットマップとして画面に貼りつける。
0966959NGNG
その作業領域に読み込ませる方法と
ビットマップとして画面に貼付ける方法をぜひ教えてください
0967デフォルトの名無しさんNGNG
アドビに聞けや
0968デフォルトの名無しさんNGNG
>>966
DIBセクションを作業領域として使うんじゃだめ?
0969デフォルトの名無しさんNGNG
> あるノードaへのリンクb,cがあって
> aのコピーdを作りdに修正を加え
> 後でbをdへのリンクに貼り直したら
> cがaへのリンクのままだったって話なら
そんな話は誰もしてない。勝手にお前の都合のいいように
話を作り替えるな。

> IShellLinkがCOMでない形で欲しいならそう言えばいい
だから誰もそんなこと言ってない。

> 仮に漏れが840を読んでいなかったとして
> そんなのは漏れの勝手だ放っとけちゅーねん
そうだな。ハードリンクと言ってる奴に対して
ハードリンクがあるじゃんといったり
遅いといってるのにCOM以外のインターフェース
がどうとかぜんぜん無関係の話はじめて恥かくのは
お前だし確かに余計なお世話だった
0970デフォルトの名無しさんNGNG
次次スレ
http://pc3.2ch.net/test/read.cgi/tech/1040964626/
0971デフォルトの名無しさんNGNG
>969
シツコイ(・∀・)カエレ!!
0972959NGNG
>>968
なんかよくわからないので
基本を勉強してからまたこのスレ戻って来ます
0973デフォルトの名無しさんNGNG
VBでDIBセクションってつかえるのか?
0974968NGNG
>>973
>VBでDIBセクションってつかえるのか?
見落としてました。スマヌ。
0975名無し@沢村NGNG
>>972
ヌヒよ、BitBltを使えば良いよ。
0976なNGNG
>>959
反転させるだけなら、
Picture1.DrawMode = vbInvert
Picture1.Line ( 0 , 0 )-( 100 , 100 ), , BF
で出来ると思います。

0977デフォルトの名無しさんNGNG
どうしてVBではDIBセクションが使えないの?
0978デフォルトの名無しさんNGNG
>>977
使えるけど、VBはポインタがないからうまみが少ない。
0979デフォルトの名無しさんNGNG
 他のアプリにキー送信するプログラムを組んでいます。
keybd_event関数を調べていたら、sendinput関数を推奨とおり、
サンプルを探したのですがみつかりませんでした。
サンプルでいい参照先がありましたら教えてください。
0980デフォルトの名無しさんNGNG
MSDN に載ってたけど・・・

次のサンプルコードは、仮想キー VK_NUMLOCK を指定して keybd_event() を
使うことにより、NumLock のランプをトグルさせます(Windows NT のみ)。
1 個の Bool 型の値を使って、ランプがオフ(FALSE)とオン(TRUE)のどちら
になっているかを表します。CapsLock キー(VK_CAPITAL)と ScrollLock キー
(VK_SCROLL)にも、これと同じ手法を適用できます。

 #include <windows.h>
 void SetNumLock( BOOL bState )
 {
  BYTE keyState[256];
  GetKeyboardState((LPBYTE)&keyState);
   if( (bState && !(keyState[VK_NUMLOCK] & 1)) ||
    (!bState && (keyState[VK_NUMLOCK] & 1)) )
   {
   // キーの押し下げをシミュレートする。
    keybd_event( VK_NUMLOCK,
     0x45,
     KEYEVENTF_EXTENDEDKEY | 0,
     0 );
   // キーの解放をシミュレートする。
    keybd_event( VK_NUMLOCK,
     0x45,
     KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP,
     0);
  }
 }
 void main()
 {
  SetNumLock( TRUE );
 }
0981979NGNG
>>980
 ありがとうございます。私の記述が悪かったのですが、知りたかったのはSendinputを
つかったものだったのです。新しいスレッドができているようなのでそちらで改めて質問
してみます。
レス数が950を超えています。1000を超えると書き込みができなくなります。