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


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

Win32API 質問箱 Build7
1 名前:デフォルトの名無しさん :02/11/07 16:41
スレ立てるまでもない、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


2 名前:デフォルトの名無しさん :02/11/07 16:41
        まもなくここは 乂1000取り合戦場乂 となります。

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

http://big.freett.com/scheme_a/num1000.swf

3 名前:デフォルトの名無しさん :02/11/07 16:48
>>1

>>2 せっかちさん

4 名前:デフォルトの名無しさん :02/11/07 16:56
1 乙
2 のタイムスタンプが素晴らしい。
リンクのフラッシュはもっと素晴らしい。誰が作ったんだ。

5 名前:デフォルトの名無しさん :02/11/07 19:31
5get

6 名前:デフォルトの名無しさん :02/11/08 20:35
ダイアログを生成して、ユーザにいくつかの文字列を選択させます。
その文字列をlist<string>などで返したいのですが、どういう手段が考えられるでしょうか?

DialogBoxParamを用いてlist<string>のポインタを渡してやれば良いとは
思いますが、もう少しスマートな解決法を模索しています。

7 名前:デフォルトの名無しさん :02/11/08 23:22
CD−ROMをRAW読み込みするにはASPIつかわないと駄目なんでしょうか。
CD-ROMドライブを直接読み込んだらRAWなしのISOイメージになってしまいます。

8 名前:デフォルトの名無しさん :02/11/09 03:53
前スレから持ち越し。
このコードはリンクするライブラリをマルチスレッド対応版にするだけで動くんだが何故だ?
_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;
}

9 名前:8 :02/11/09 03:54
で、前スレで 「名前を指定してCreateMutexしなきゃ」 と言われたんだけど、
名前付きミューテックスと名前無しミューテックスとで、何か動作が変わるの?

10 名前:デフォルトの名無しさん :02/11/09 04:37
MTでなければ、strtokが死ぬ。
MTであれば、beginthread*を使わずとも、必要な情報は
OnTheFlyでライブラリが用意する。ただし、その情報を格納
するのに使ったcallocは、DLL版でないと開放されない。
(beginthread*なら、開放される)

11 名前:デフォルトの名無しさん :02/11/09 04:49
>>9
前スレ読んでないのでその文脈で名前付きが必要なのかは分からんが、
名前付き同期オブジェクトは、同じ名前を指定する事で複数のプロセス
の間で共有できる(いちいちハンドルを複製して相手に渡す必要が無い
ので扱いが楽)

1プロセス内(の各スレッド)からしか使わないなら名前無しでいい。

12 名前:デフォルトの名無しさん :02/11/09 05:01
前スレ(Build6)を保存しときますた。
Build4は未だにdat落ちしたままなのか…

-=-=-=-=-=-=-=-=-=-=
ここまで読んだ
-=-=-=-=-=-=-=-=-=-=

13 名前:8 :02/11/09 05:37
>>10
そうなのか・・・。
動きはするけど後片付けしないと・・・。
らじゃ、サンクス。

>>11
8 のコードを指して言われた。
でもこのコードだけで言えば必要無いよね。
サンクス。

14 名前:前スレ :02/11/09 06:57
前スレ996〜998の話が丁度いい所で終わっちまってる。
続き聞かせて

15 名前:デフォルトの名無しさん :02/11/09 07:05
>>14
あれはそのつもりのネタだろ

16 名前:デフォルトの名無しさん :02/11/10 05:25
少しお聞きしたいのですが、
WindowsXPproでユーザーアカウントの画像を
ランダムに変更するプログラムを作りたいんですよ。
それでレジストリ書き換えて
(HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Hints\(ユーザー名)\PictureSource)
C:\Documents and Settings\All Users\Application Data\Microsoft\User Account Pictures\ユーザー名.bmp
のフォルダに画像を生成させるとこまではできたのですが、
そのあと表示を更新させる方法がわかりません。
手動でなら、
コンパネ→タスクバーのプロパティ→スタートメニューのカスタマイズ
を開いて全てOKでとじれば更新されるのですが・・・。
どなたかご存じの方がいらっしゃれば宜しくお願いします。

17 名前:デフォルトの名無しさん :02/11/10 22:03
Win2k で使えて、WinNT6 で使えない API 関数を調べたいのですが、
どこかに良いサイトはありますか? オフィシャルにある?



18 名前:デフォルトの名無しさん :02/11/11 04:17
>>17
そんな API がどうしてあると思ったの?

19 名前:デフォルトの名無しさん :02/11/11 07:56
>>17
なんでNT5、あるいはXPという表記じゃないの?

20 名前:デフォルトの名無しさん :02/11/11 10:12
>>19
XPはNT6じゃないから(NT5.1)、と言ってみる

21 名前:デフォルトの名無しさん :02/11/11 13:24
一定時間PCに入力(キーボード・マウス)がないと
何かの処理をするってゆ〜のを実現する方法ってないですかね?
自アプリへの入力だけぢゃなく、他アプリへの入力も考慮に入れたいんですけど・・・


22 名前:デフォルトの名無しさん :02/11/11 13:54
>>21
スクリーンセイバー。
またはフック。

23 名前:デフォルトの名無しさん :02/11/12 01:47
DLL内で共有する変数を#pragmaで宣言したいんですが、
変数が2次元配列の場合はどうやって初期化すればいいですか?
今はこのように初期化してます。
#pragma data_seg(".shared")
int data = 0;
int pnt[1000]={0,};
#pragma data_seg()

POINT型を使いたいのですが、初期化方法がわかりません。

24 名前:デフォルトの名無しさん :02/11/12 02:29
唖然・・・。
初期化の方法もまともに知らないで DLL に手を出しちゃうの?

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

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

POINT pt = { 10, 20 };

つーかそもそも、DLL 内の共有域を初期化しても、コードによってはどっから
どんな更新があるかわからんぞ。

25 名前:デフォルトの名無しさん :02/11/12 02:32
>>23
(Cの)構造体や、その多次元配列でも、= {0};でいける。
POINT p[10][20][30] = {0];

26 名前:デフォルトの名無しさん :02/11/12 02:40
>>23
つーか、0 初期化したいだけなら、グローバルにはその必要が無い。
グローバルは初期化指定しなくても 0 初期化される事が保証されている。

27 名前:デフォルトの名無しさん :02/11/12 03:00
>>26
それは一般論だろ。
この場合初期化しないとせっかく宣言した .shared セクションではなく
.bss に領域が取られてしまうの。

28 名前:26 :02/11/12 03:43
>>26
本当だ。今知った。

でも、一般論じゃなくて C/C++ の規格の話なのだが。
まずくないのか?

29 名前:26 :02/11/12 05:31
あ、規格というのは data_seg がどうのという話じゃなくて、グローバルなのに
dup(?) になるって話。

30 名前:aru :02/11/12 09:01
スレ違いだと思うので、ごめんなさい。
でも、もし知っている人がいたら教えてくだされ。

WindowsXP DDKのデバッグ情報をモジュールに入れ込むにはどうすればいいんですか?
PDBを作らないように設定しようと思ったけど、うまくいかないし…。
おかげでビルドしているPCでしかデバッグできなそう。
デバッグPCでデバッグしたいのになぁ。
makefileをいじったけど、全然うまくいかないし (T_T)


31 名前:デフォルトの名無しさん :02/11/12 09:19
>>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++に依存しない話という意味で一般論と書いたの。

32 名前:デフォルトの名無しさん :02/11/12 09:21
で、Win32環境に限って言えばBSSセクションはゼロクリア
されることが保証されているので普通はまずくない。
プロセス間で変数を共有するとか特殊なことがしたいときに
だけ問題になるけどそれはすでにC/C++の規格の話ではない。

33 名前:デフォルトの名無しさん :02/11/12 10:14
Win32 API スレと厳密に言うなら、VC++ 固有の話はスレ違いだと思うが。

34 名前:デフォルトの名無しさん :02/11/12 10:40
>>30

外してたらスマンが、
PDBで無くデバッグ情報を作る(ファイル内に)ようにして
rebaseで.dbgファイルを作ればできた気がする。

35 名前:デフォルトの名無しさん :02/11/12 11:53
プロセス間通信などは考慮して作られていないプロセスの
メモリアドレスの内容を直接読む方法ってありますか?

36 名前:デフォルトの名無しさん :02/11/12 12:11
VirtualQueryEx とかかな。

37 名前:デフォルトの名無しさん :02/11/12 12:16
VirtualQueryExで得られるのはメタ情報であって
「読む」という言葉から一般にイメージするのは
ReadProcessMemoryのほうでは

38 名前:35 :02/11/12 12:19
>>37
ありがとう。試してみます。

39 名前:35 :02/11/12 14:14
読めずに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;
}

40 名前:35 :02/11/12 18:41
ハンドルを勘違いしてたので修正しましたがだめだったのでエラーコード
取ってみると
「ReadProcessMemory要求またはWriteProcessMemory要求の一部だけを完了しました。」
と出ました。どこが間違ってるんだろう;;

41 名前:35 :02/11/12 18:43
#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;

42 名前:デフォルトの名無しさん :02/11/12 19:28
あるクラスに参照カウントを持たせ、InterlockedIncrement./InterlockedDecrementで
マルチスレッド対応にしようとしたのだが…

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

ところが、delete thisの直後にref()が呼ばれると、m_ref自体が解放された領域にあるため、
とんでもない値になってしまう。参照カウントをメンバー変数にするのが間違い?
どうしたらいんだろう?マルチスレッドのエキスパート様の降臨おながいします。

43 名前:42 :02/11/12 19:30
マルチスレッドプログラミングのスレを発見したのでそちらに移ります。ゴメソ

44 名前:デフォルトの名無しさん :02/11/12 20:31
staticじゃないメンバ関数をコールバックさせることはできますか?
おねがいします。

45 名前:デフォルトの名無しさん :02/11/12 21:06
>>44
コールバック関数にthisを渡してやれば解決できない問題なの?

46 名前:デフォルトの名無しさん :02/11/12 21:12
OpenGLの描画を行うと画面下につけたステータスバーが消えちゃうんですが
回避する方法を教えてください。

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

VC++&SDKです。

47 名前:名無し@沢村 :02/11/13 02:15
皆々様方〜教えてくだされ〜♪
stopボタンを押したときにforループを抜けるようにしたいんですが、どうすればいいですか?

48 名前:デフォルトの名無しさん :02/11/13 02:52
>>47
WinAPIはしらんけど、
for文の脱出条件にフラグ一個置いといて、ボタン押したら
フラグ立てたら?

49 名前:名無し@沢村 :02/11/13 06:42
>>48
それはやってみました。
が、forループの間、ボタン自体押せなかったっス。

50 名前:デフォルトの名無しさん :02/11/13 06:43
なぜWin32APIを知らずにここで答えてるんだろう…

51 名前:デフォルトの名無しさん :02/11/13 06:46
>>49
PeekMessageとforループあたりで検索すればサンプルが見つかるかも

52 名前:デフォルトの名無しさん :02/11/13 07:27
ふつうMulti Threadにするとおもふ

53 名前:デフォルトの名無しさん :02/11/13 08:35
この程度なら普通マルチにしないが。
マルチは嫌われるぞ。

54 名前:デフォルトの名無しさん :02/11/13 08:56
>>46
MainWindowの中にChildWindowを貼り付けて、それをOpenGL化するよろし。
ただしこれを受け付けないグラフィックカードがあるから注意されたし。

55 名前:デフォルトの名無しさん :02/11/13 12:16
マルチって嫌われるんですか?

56 名前:デフォルトの名無しさん :02/11/13 13:07
UNIXのatexit( )関数のように終了時に実行される関数を登録するAPIは
ありますか?
ただいまpdhEnumObjectItems()を使ったプログラムをテストしているのですが、
なかなかmainにおいてreturnしたあと、なかなかプロンプトが返ってきません。
そこでatexitのようなものを試しに使ってみたいと思いました。

よろしくお願いします。

57 名前:デフォルトの名無しさん :02/11/13 13:10
http://www.microsoft.com/japan/developer/library/vccore/_crt_atexit.htm
逝ってきます・・・

58 名前:名無し@沢村 :02/11/13 16:02
皆々様方〜、教えてくださらんか〜?
InvalidateRect((HWND)param,&rect,FALSE);で画面を更新すると画面がちらちらしてきたないのだが、
ちらちらしないで画面を更新するにはどうしたらいいのですか?
皆々様方〜、教えてくださらんか〜?

59 名前:デフォルトの名無しさん :02/11/13 16:09
オフスクリーン デバイスコンテキスト

60 名前:デフォルトの名無しさん :02/11/13 17:50
CS_*REDRAWを削除
WM_ERASEBKGNDを処理

61 名前:46 :02/11/13 21:08
>>54
おお、なるほど。
やってみたらちゃんと動きました
ありがとうございます

62 名前:デフォルトの名無しさん :02/11/14 04:26
TV_INSERTSTRUCTのitem.lParamって好きな値って
構造体のポインタとかいれて、後で使ったりするための変数?

好きな値いれていいのかな?

63 名前:デフォルトの名無しさん :02/11/14 04:35
>>62
イイ!

64 名前:デフォルトの名無しさん :02/11/14 06:25
急にお好み焼きそばが食べたくなった。

65 名前:デフォルトの名無しさん :02/11/14 13:19
唐揚げを食え。

66 名前:デフォルトの名無しさん :02/11/14 13:29
唐揚げうまうまって何のことかと思ったら
空ageにかけてたのか

67 名前:デフォルトの名無しさん :02/11/14 21:36
クライアント領域が完全に隠れているかどうかを調べるにはどうしたら良いですか?

68 名前:デフォルトの名無しさん :02/11/14 22:28
 厨房な質問ですいません。
WM_ENDSESSIONなどをヘルプで引くと、
「このメッセージを処理するアプリケーションは、 0を返さなければなりません。」
とかかれていますが、メッセージに値を返すにはどうしたら良いのでしょうか

69 名前:デフォルトの名無しさん :02/11/14 22:30
>>68
return 0;

70 名前:752 :02/11/14 23:43
一つ聞きたいことがあるのですが、
整数があって、特定の桁数にそろえて文字列(CString)
に代入するにはどうすればいいでしょうか?
例:
int i = 20;
CString s;
5桁にそろえるとき、
sに00020という値が欲しいわけです。


71 名前:デフォルトの名無しさん :02/11/14 23:50
>>70
スレ違い。

72 名前::02/11/15 00:31
>70
Format
っていってるだろ
頭悪いのか?
マルチしね。

73 名前:デフォルトの名無しさん :02/11/15 00:45
>>72
時間見れアフォ。

74 名前:デフォルトの名無しさん :02/11/15 01:12
シャットダウンのイベントを取得する方法って何かありませんか?

75 名前:デフォルトの名無しさん :02/11/15 01:15
シャットダウン時にイベントを取得する方法を知っていたら、教えていただけませんか?

76 名前:デフォルトの名無しさん :02/11/15 01:18
WM_QUERYENDSESSION/WM_ENDSESSION

77 名前:67 :02/11/15 01:44
すいませんが誰かわかりませんか?

78 名前:デフォルトの名無しさん :02/11/15 01:52
透過ウインドウの話ってかなり既出かもしれませんが、
生きてる過去ログあさってみたけどほとんど見つからず。
手ほどきお願いします。
Googleで引っかかったまともなHPは
http://techtips.belution.com/ja/vc/0005/
これぐらいでした(検索キー 透過ウインドウ)

79 名前:78 :02/11/15 02:03
自己レスです。
SetLayeredWindowAttributesでいけるみたいです
「透明ウインドウ」で検索すると結構引っかかりますね、鬱だ・・・。

80 名前:デフォルトの名無しさん :02/11/15 02:10
>>77
何がしたいのかわからんが、
GetUpdateRgn()で空のREGIONが返ってきたらとかいうのはダメかな。
試してないけど。

81 名前:67 :02/11/15 03:00
>>80
常にレンダリングしていまして、
クライアント領域が他のウインドウに完全に隠れている状態では
レンダリングを中止させようと考えています。
基本的なことが良く分からないのでとりあえずリージョンについて調べてみます。
どうもありがとうございました。

82 名前:68 :02/11/15 06:23
>>69
 Delphiで、Application.OnMessageを使った時はどうすれば良いのでしょうか?

83 名前:デフォルトの名無しさん :02/11/15 09:30
>>81
常にInvalidateRect(NULL, TRUE)するとか。
完全に隠れていればWM_PAINTが発生しない。

84 名前:デフォルトの名無しさん :02/11/15 12:35
>>81
GetClipBox を使えばよろしい。


85 名前:デフォルトの名無しさん :02/11/15 13:53
おいおまいら、
エディットコントロールのオーナードロー(自前で描画)ってできませんか。
やっぱ1から自作するしかないんでしょうか?

カーソル移動(マウス/キーボード)とかクリップボード周りの実装とか禿げしく面倒なヨカーン

86 名前:デフォルトの名無しさん :02/11/15 14:13
よくわからんけど、オーナードローするならカーソル移動は実装しなきゃ
逝けないんじゃないのか?
(EM_OWNERDRAW なんてのが MSDN に見当たらないからできなさそうだけど)

87 名前:デフォルトの名無しさん :02/11/15 16:05
クリップボード回りはそんなに面倒ではないよ。

88 名前:デフォルトの名無しさん :02/11/15 16:41
というか、カーソル移動とかに比べたら全然簡単だけど。
API 調べたらすぐ終わる。

89 名前:デフォルトの名無しさん :02/11/15 16:47
そういや、リストビューで、「左キー押したら左セルに、下キー押したら
下セルに」みたいな処理してたら、なんとなくパチモンエディタみたく
感じたことがある・・

90 名前:デフォルトの名無しさん :02/11/15 20:23
うぃ、おまいさんら!

DLL内から、WMメッセージを取得する方法を教えてください。
でも、EXE本体は全くいじれない。

91 名前:デフォルトの名無しさん :02/11/15 20:46
おなじプロセスに居るなら、サブクラス化したらええやん。

92 名前:デフォルトの名無しさん :02/11/15 21:00
>>82
メインフォームにWM_ENDSESSIONのメッセージハンドラを作って
そこで処理してから message.Result に返したい値を入れる。
っちうかスレ違いじゃメルシィボケェ。

93 名前:デフォルトの名無しさん :02/11/15 21:34
ファイルの一覧をリストビューで表示しているのですが、
IEで右クリックすると出て来るポップアップメニューと
同じ物を作るにはどうしたらいいのでしょうか。

94 名前:デフォルトの名無しさん :02/11/15 21:43
TrackPopupMenu、、、というわけではなく、
Shellのメニュー用インターフェースがどうこう、という話?

95 名前:デフォルトの名無しさん :02/11/15 22:10
>>94
オリジナルのポップアップは作れるのですが、
IEと同じ挙動(ファイルの種類によって違うメニューがでる)にできないのです・・・

96 名前:デフォルトの名無しさん :02/11/15 22:16
test

97 名前:デフォルトの名無しさん :02/11/15 22:17
IEじゃなくてEだろ

98 名前:67 :02/11/15 22:26
リージョンのハンドルを作成しなくてはいけないことと、
WM_PAINTが発生しない状態かどうか判断しにくいということで、
結局>>84さんの方法で行かせてもらいました。
遅くなりましたが、レスくれた方々どうもありがとうございました。


99 名前:デフォルトの名無しさん :02/11/15 23:32
>>95
MSJ97/4号のWicked Code。
だが、これはファイル一つ用だけのメニューしか出せない。
複数のファイルのメニューをだすには、ファイル数分のITEMIDLISTを取得する必要がある。
また、「送る」を実装するにはIContextMenu2を使う。

100 名前:デフォルトの名無しさん :02/11/16 00:47
エディットコントロール使わずにエディタ作ろうと思ってるんだけど、
データは1行ずつをリストで管理して、表示の時(WM_PAINT)に表示開始行まで
リスト移動させて、1ページ分TextOutで表示させてるんだけど、遅いマシンだと
スクロール時にかなり画面がちらつく。

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

ちらつかせないためには、どうしたらいいの?

101 名前:デフォルトの名無しさん :02/11/16 01:18
>>100
スクロールする時にScrollWindowEx使ってるか?
あと、PAINTSTRUCTのrcPaintに更新領域が入ってるから、
その中に入るテキストだけ描画するようにすれば軽くなる。

メモリDCには、ビットマップ作ってSelectObjectしておかないと
描画しても無意味。

102 名前:デフォルトの名無しさん :02/11/16 01:29
>>101
スクロールはウインドウスタイルにスクロール属性つけて、WS_HSCROLL,VSCROLL
を処理してる。

>メモリDCには・・
そうだったのか。。って、ビットマップ作るってどういうこと?

103 名前:デフォルトの名無しさん :02/11/16 01:38
> スクロールはウインドウスタイルにスクロール属性つけて、WS_HSCROLL,VSCROLL
> を処理してる。
つーかその「処理」の内容。

104 名前:デフォルトの名無しさん :02/11/16 01:42
>>103
単に内部の変数(開始行)を加減して、InvaridateRectして、
SetScrollPosでスクロールバーを変更してるだけです。
ScrollWindowExは使ってないです。

105 名前:デフォルトの名無しさん :02/11/16 03:51
なぜ ScrollWindow(Ex)? を使わない。
1ページ全部 TextOut で描画し直すよりも ScrollWindow(Ex)? でスクロールして、
新たに画面内に入ってきた行だけを再描画した方が速いだろうに。


106 名前:デフォルトの名無しさん :02/11/16 05:45
ボリュームコントロール→トーン→デジタル出力
のON・OFFを切り替えるにはどうすればいいですかね?

107 名前:デフォルトの名無しさん :02/11/16 09:50
コントロールのウィンドウ内位置の座標を
取得する方法を教えてくらはい。

108 名前:デフォルトの名無しさん :02/11/16 09:54
GetWindowRect

109 名前:デフォルトの名無しさん :02/11/16 10:45
してからScreenToClient

110 名前:デフォルトの名無しさん :02/11/16 14:01
IWebBrowser2を使用してHTMLイメージ全体を
取得するにはどうすればよいのでしょうか?


111 名前:デフォルトの名無しさん :02/11/16 17:58
Windowsは大部分がCOBOLで書かれているそうだ。
C/C++&asmで記述されているMacOSXと比べて基本性能がケタ違いに低い。

112 名前:デフォルトの名無しさん :02/11/16 18:13
>111
( ´д)ヒソ(´д`)ヒソ(д` )

113 名前:デフォルトの名無しさん :02/11/16 18:25
ライブラリ関数について質問です
Video for WindowsライブラリのcapGrabFrame関数で取り込んだ画像を
RGBの配列に変換する方法をご存知の方教えてください。
イメージバッファには読み込まれてると思うんですが、
capSetCallbackOnFrame等を使わずに
そこをどうやってプログラムから参照すればいいのかわかりません。
よろしくお願いします。

114 名前:デフォルトの名無しさん :02/11/16 19:04
1 行目からしてスレ違いな気がしないでもない

まー漏れ Video for Windows わかんねーけど

115 名前:デフォルトの名無しさん :02/11/16 22:18
リッチエディットコントロールで、RTFの画像を表示したいのですが、
どうすればできるでしょうか?MFCが使えない環境なので、困っています。

116 名前:  :02/11/16 22:33
>>111
ファミリーベーシックって聞いたよ。
直接ゲイシが言ってたから間違いない。

117 名前:デフォルトの名無しさん :02/11/16 22:41
>>111 >>116
スレ違いだから出て逝ってくれ。

118 名前:デフォルトの名無しさん :02/11/17 00:36
>>106
mixer...で始まるAPIの使い方を調べてみるといいんじゃないかな。
ボリュームコントロールと同等のことをするサンプルコードが
あったはず。

119 名前:デフォルトの名無しさん :02/11/17 04:06
IWebBrowser2をオフスクリーンに描画する方法を教えて下さい。
メモリデバイスコンテキスト作ってSetDCとかできないんでしょうか?

120 名前:デフォルトの名無しさん :02/11/17 23:50
>>119
TextOut(hdc,0,0,"IWebBrowser2",strlen("IWebBrowser2"));

121 名前:デフォルトの名無しさん :02/11/18 02:20
keybd_event 以外で
起動しているIEへBackSpaceキーを送りたく、
ハンドルはIEのタイトルバーの所の値として

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

としても、だめでした;。 どうしたら良いでしょうか?

122 名前:デフォルトの名無しさん :02/11/18 02:22
WM_CHAR

123 名前:デフォルトの名無しさん :02/11/18 02:23
訂正
×SendMessage(,*** WM_KEYUP, VK_BACK, 0)
○SendMessage(***, WM_KEYUP, VK_BACK, 0);

124 名前:デフォルトの名無しさん :02/11/18 02:25
>>122
おお、 早速ありがとう!!
そのてがありましたね。試してみます。

125 名前:106 :02/11/18 02:42
>>118
レス、サンクス。
私もそれについては多少調べてみたんですが、
各ラインに対してMuteや音量の設定はできるようなのですが
デジタル出力のON・OFFに関する設定は見つかりませんでした。
mixerMessageを使えばいけるかなとも思いましたが
どんなメッセージを送ったらよいのか、さっぱりわかりませんでしたし。
使ってるサウンドカードはAudigyなんですけど
ドライバに対するプログラミングリファレンスなんて
転がってないですよねぇ?(^^;


126 名前:デフォルトの名無しさん :02/11/18 03:03
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;
ってどういう意味なの?

127 名前:デフォルトの名無しさん :02/11/18 03:11
>>126
fnsは関数へのポインタへのポインタもしくは関数へのポインタの配列。

fni番目に格納された関数へのポインタを用いて、その関数を間接的に呼んでる。

128 名前:デフォルトの名無しさん :02/11/18 03:18
C++なら、operator[]が定義されたクラスかもしれんなあ・・・

129 名前:デフォルトの名無しさん :02/11/18 09:54
そんな変態は無視汁
マクロ定義されてたらとか言い出すとキリがねえ

130 名前:デフォルトの名無しさん :02/11/18 17:47
#define private public

131 名前:デフォルトの名無しさん :02/11/18 19:20
現在、リモート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コマンドは休止からの復帰をさせることができません。

132 名前:デフォルトの名無しさん :02/11/18 19:53
↓ これ分かる人いません?
http://pc3.2ch.net/test/read.cgi/tech/1018239290/316

133 名前:デフォルトの名無しさん :02/11/18 20:23
>>131
2.b 「Task Scheduler」でMSDNを検索しる
2.c SetSystemPowerState(FALSE, TRUE) ただしNT系のみ

134 名前:デフォルトの名無しさん :02/11/18 20:25
自分(実行ファイル)のファイルハンドルを取得し、
ReadFileで読み込むという作業をしたいのですが
CreateFileでINVALID_HANDLE_VALUEが返ってきてしまいます。
どのようにしたら取得できるでしょうか?(↓自分が書いたもの)
hFile = CreateFile("crackme1.exe", GENERIC_READ, 0, NULL, OPEN_EXISTING,
                            FILE_ATTRIBUTE_NORMAL, NULL);

135 名前:デフォルトの名無しさん :02/11/18 20:29
>>134
FILE_SHARE_READ

136 名前:134 :02/11/18 20:35
>>135
即答ありがとうございます。
FILE_SHARE_READにしてみたのですが
INVALID_HANDLE_VALUEが返ってきてしまいました。
もうすこしがんばってみます。

137 名前:デフォルトの名無しさん :02/11/18 20:41
>>136
それで、できるはずですが、ファイルパスは合ってますか?
::GetModuleFileNameで取得した値を使ってみるとか。

138 名前:デフォルトの名無しさん :02/11/18 20:43
というか、GetLastErrorの値ぐらいみれ。

139 名前:デフォルトの名無しさん :02/11/18 20:46
crackme1.exe

140 名前:デフォルトの名無しさん :02/11/18 21:16
全言語のページから#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件目


141 名前:134 :02/11/18 21:26
>>137
GetModuleFileNameで取得した値でできました。ありがとうございます。
>>138
2でした。って漏れFormatMessageの使い方わからん(;´д`)

142 名前:デフォルトの名無しさん :02/11/18 21:53
ErrorLookup 値:2
指定されたファイルが見つかりません。

143 名前:デフォルトの名無しさん :02/11/18 21:57
>>141 >漏れFormatMessageの使い方わからん
MSDNの FormatMessage() のところに、サンプルもろに出てますよ?

144 名前:デフォルトの名無しさん :02/11/18 22:08
マウスを制御するAPIの名前までは調べたのですが、どうもうまく動かん。
キーボードの制御は出来た。マウスを自分の思う位置に動かして、クリック操作などを制御したい。
操作するウィンドウは、自アプリ外。Win9x系で動けばいいです。
アドバイス頼む!
                 ┌─┐
                 |ま|
                 |た |
                 │く │
                 │る│
                 │ね.|
      ヤホィ    イェェア   │ !!.│
                 └─┤    ニコニコ
    ヽ(´∀`)ノ ヽ(´∀`)ノ  (´∀`)ノ    ( ´∀)
    | ̄ ̄ ̄|─| ̄ ̄ ̄|─| ̄ ̄ ̄|─□( ヽ┐U
〜 〜  ̄◎ ̄  . ̄◎ ̄   ̄◎ ̄   ◎−>┘◎

145 名前:デフォルトの名無しさん :02/11/18 22:47
Win32APIの関数などをヘルプファイルにして簡単に
検索できるようにしたものってありますか。

bccでやっているけど、いちいちmsdnみるのが面倒で(ダイヤルアップ回線なので)。

146 名前:デフォルトの名無しさん :02/11/18 22:50
ヽ(´∀`)ノ 

147 名前:デフォルトの名無しさん :02/11/18 22:55
>>145
MSDNに加入しる!
ライブラリサブスクリプション(技術資料だけ)なら安くてオフラインで読める。

148 名前:デフォルトの名無しさん :02/11/18 22:56
というか、PlatformSDKに付いてくる英語のならロハだし、
それで充分だろ。日本語訳ってたまにdでもない
間違いとかあるし。

149 名前:119 :02/11/19 00:02
>>120
オゥ、即答ありがとう。
解決しました。

150 名前:デフォルトの名無しさん :02/11/19 00:21
マジかよ?!

151 名前:118 :02/11/19 01:30
>>125
あ、「トーン」でしたか。
ろくに読まずに書いてしまいました。すみませぬ。
mixer系APIからは直接操作できないっていうか仕様が調べられない
部分ですか。うーん。どうすればいいんだろ。

っていうかこのあたり、サウンドカードによって同じような名前の
ミキサーラインでもタイプが違ってたりして混乱しますよね。

152 名前:デフォルトの名無しさん :02/11/21 08:46
NT限定でいいんだけど、
%SystemRoot%\System32\〜
みたいなパスを
C:\WINNT\System32\〜
みたいに正式なパスに変換してくれるAPIってないんかな?

153 名前:デフォルトの名無しさん :02/11/21 12:10
ExpandEnvironmentStrings
つーか、ちったぁ検索しろや。機能そのままの名前じゃんかよ。

154 名前:デフォルトの名無しさん :02/11/22 00:57
Win95+IE5の環境で、SHGetSpecialFolderLocationにCSIDL_APPDATAを
渡して実行しても失敗してしまいます。
このAPIで取得するにはどうしたら良いのでしょうか?

155 名前:デフォルトの名無しさん :02/11/22 01:31
そのフォルダは 95 にある?



156 名前:デフォルトの名無しさん :02/11/22 01:40
無かった気がする。

157 名前:デフォルトの名無しさん :02/11/22 01:59
SHFolder.dllを明示的にリンクしてSHGetFolderPathを呼び出すしかないんでしょうか・・・

158 名前:デフォルトの名無しさん :02/11/22 06:50
どなたかタスクバーのプロパティを起動する方法を知りませんか?
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ファイルも無いみたいだし。
宜しくお願いします。

159 名前:158 :02/11/22 11:51
>>158
自己レスです。
CoCreateInstanceを使えばいけました。
スレ汚し申し訳ない。


160 名前:デフォルトの名無しさん :02/11/23 17:17
よく最前面のウィンドウに張り付くようなソフトがありますが、任意のウィンドウが最前面
になったタイミングというのはどうやって取得しているのでしょうか?

161 名前:名無し@沢村 :02/11/23 23:58
皆々様方〜、私はいま複数のトラックを鳴らすところで大変苦労してるんですが、なんとか同時に複数のトラックを鳴らすとこまではできたのですよ。
でもあともう一歩なんです…!
もう一歩というのは、トラック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]++;
}}}}}


162 名前:デフォルトの名無しさん :02/11/24 00:17
マルチポスト(・A・)イクナイ

163 名前:デフォルトの名無しさん :02/11/24 02:17
リソースエディタで作ったエディットボックスの文字の色を変えるには
どうしたらいいですか?

164 名前:デフォルトの名無しさん :02/11/24 02:38
MFCを使わずに、自分のウインドウにhtmlファイルを表示したいのですが、
どうしたらできるでしょうか?

165 名前:デフォルトの名無しさん :02/11/24 02:45
>>163
オナードロウ

>>164
IWebBrowser2(だったかな)

166 名前:デフォルトの名無しさん :02/11/24 02:49
>165
エディットボックスってオーナドロー出来なかった気がする、、、

167 名前:デフォルトの名無しさん :02/11/24 03:03
>>166
サブクラス化してとかでも無理?

168 名前:デフォルトの名無しさん :02/11/24 03:10
OnCtlColor WM_CTL_COLOR スペル違ったらスマソ

169 名前:デフォルトの名無しさん :02/11/24 03:12
>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

170 名前:デフォルトの名無しさん :02/11/24 03:14
>>167
それで、描画するためのデータはどこから持ってくる?

171 名前:デフォルトの名無しさん :02/11/24 03:44
WM_CTLCOLOREDITのwParamがエディットコントロールのHDCだから
それでSetTextColor()できる気もするな。

172 名前:デフォルトの名無しさん :02/11/24 07:09
>>165
さんくすです。
IWebBrowser2のNavigate2を使い、htmlやjpegが表示できますた。

でも、bmpを表示しようとしたら、ペイントが立ち上がったり、
開くかどうか聞いてくるダイアログがでたりしました。
でも、ときどき表示されたりもします。原因がさっぱりわかりません。
何か、先行して処理する必要があるのでしょうか?

173 名前:デフォルトの名無しさん :02/11/24 14:40
Win32 static libraryで、どういう関数にWINAPIをつけたら良いのでしょうか。
内部で使う関数には付けず、外部に公開する関数だけにつけておけばよいのでしょうか?

174 名前:デフォルトの名無しさん :02/11/24 15:08
>>173
ハァ?

175 名前:デフォルトの名無しさん :02/11/24 15:17
calling conventionのことか?
そのライブラリが激しく内輪ならべつにどうでもいいと思う

176 名前:デフォルトの名無しさん :02/11/24 16:10
>>175
激しく内輪でなければ?

177 名前:デフォルトの名無しさん :02/11/24 16:26
その lib をどういう位置付けにするかですべき事が変わるだろ。

178 名前:デフォルトの名無しさん :02/11/24 17:25
とりあえず自分で作ったライブラリの関数にWINAPIを付けたい理由を聞かせてくれ。

179 名前:デフォルトの名無しさん :02/11/24 18:04
C言語以外から呼ぶことを考えるなら、WINAPIというかstdcallにするべきでは?
(ついでに、C規約より少しだけ効率いいし)

180 名前:デフォルトの名無しさん :02/11/24 18:06
>>179
dynamic linkならそれも考慮するかもしれんが・・・

181 名前:179 :02/11/24 18:19
>>180
んー、Delphiならbccとリンクできるし、
gccはC++に限らずFortranとかAdaとかでミックスランゲージできるし……ちと苦しいか。

正直staticの文字を見逃してました。スマソ

182 名前:デフォルトの名無しさん :02/11/25 12:49
Explorerで、ファイルのプロパティの概要で得られる、
コメント、キーワード、分類などので情報を
設定するには、どうすればいいですか?

183 名前:デフォルトの名無しさん :02/11/25 13:24
>>182
プロパティから設定できます。

184 名前:デフォルトの名無しさん :02/11/25 13:36
>>183
APIとか、コードでやりたいとおもわれ。

185 名前:182 :02/11/25 14:30
やりかたわかりましたので結構です。
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/stg/stg/the_summary_information_property_set.asp

186 名前:デフォルトの名無しさん :02/11/25 16:03
あるフォルダが存在するかどうかを知るにはどのAPIを使えばよいのでしょうか?

187 名前:デフォルトの名無しさん :02/11/25 16:56
>>186
Win32APIなら、FindFirstFile()
標準C Libraryなら、_findfirst()


188 名前:デフォルトの名無しさん :02/11/25 17:02
>>186
SetCurrentDirectory とか CreateFile でもいけそうだけどなー。> 教えて君

189 名前:デフォルトの名無しさん :02/11/25 17:33
_stat

190 名前:デフォルトの名無しさん :02/11/25 18:24
いつも思うんだけど、
こういう質問をする「教えてクン」って、
後で仕事をきちんと完成させることができたかどうかが気になる。
つか、ちょっと心配になるよ。

191 名前:デフォルトの名無しさん :02/11/25 18:31
2ちゃんねるで聞くよりも検索した方が早いと思うしね。
もし>>186が検索をしていないとすると、
>>187の回答を得るまでに>>186は53分間も待たなければならなかったわけでしょ。
教えてクンはまたーりしているんだなぁ...

192 名前:デフォルトの名無しさん :02/11/25 18:33
どなたか Win32API WriteProcessMemory を使ったごくごく簡単なサンプルを......
環境はwin2k vc5 です。
Web上にあった物はまともに動きません......

193 名前:デフォルトの名無しさん :02/11/25 18:41
エクスプローラーが落ちた時に、
児童復旧する
タスクトレイ
のプログラム方法を教えてください。


194 名前:デフォルトの名無しさん :02/11/25 18:50
_beginthreadのハンドルをHANDLEにキャストしてWaitForSingleObjectに使えるらしいんですが
INFINITEにしたら際限無く待ちつづけるのですが、他がおかしくてキャストは間違いないのでしょうか?

195 名前:デフォルトの名無しさん :02/11/25 18:52
↑スレッドはちゃんとexitThreadで終了しています

196 名前:デフォルトの名無しさん :02/11/25 18:58
>>194
それができるのはexの方。
Win32マルチスレッドプログラミングって本読んでね。

197 名前:デフォルトの名無しさん :02/11/25 19:07
>>193
RegisterWindowMessage TaskbarCreated をgoogle

198 名前:デフォルトの名無しさん :02/11/25 19:17
>>197
サンクス。

199 名前:デフォルトの名無しさん :02/11/25 20:11
>>195
どうもです。CloseHandleがいるやつですね。

200 名前:デフォルトの名無しさん :02/11/25 23:26
> 標準C Libraryなら、_findfirst()

おいおい・・・

201 名前:デフォルトの名無しさん :02/11/25 23:56
>>186
漏れなら、GetFileAttribute()とかPathIsDirectory()かな。
ハンドルを閉じる手間がないから。

202 名前:デフォルトの名無しさん :02/11/26 01:41
PathIsDirectory() は素でリンクできないからキライ

203 名前:デフォルトの名無しさん :02/11/26 03:37
>>188
マルチスレッドで破綻する
失敗したときどこにファイルを作るかわからない
話にならんな
こういうインストーラーを作りたいなら止めないが
http://pc3.2ch.net/test/read.cgi/tech/997727326/56-

204 名前:203 :02/11/26 03:39
あ、ひょっとしてどんなに煽られようと必ずお節介な奴が
答えて教えてクンの「聞いたもの勝ち」になるのがムカつくから
自分で答えを調べられない奴には分からない程度に嘘教えたのかな
だったら邪魔してスマソ

205 名前:デフォルトの名無しさん :02/11/26 03:42
>>203
そこの 57 の反応が素直に笑える。

206 名前:デフォルトの名無しさん :02/11/26 04:26
虫眼鏡みたいなウインドウを作ろうと思っています。
自分のウインドウの下のイメージを取得するにはどうしたらいいでしょうか?

207 名前:デフォルトの名無しさん :02/11/26 07:52
> 自分のウインドウの下のイメージを取得する

できるかなあ?
できないんじゃないか?

208 名前:デフォルトの名無しさん :02/11/26 09:50
「ウインドウの下のイメージ」なんて(WindowがLayered化
されてない限り)存在しないので不可能です。
WM_PRINTに対応してたらなんとかなるかも

209 名前:デフォルトの名無しさん :02/11/26 10:57
質問ですが、Winの印刷で、一つの印刷ジョブでA4→B4→A4・・・とかの
異なるサイズの印刷ってできますかねぇ?
ジョブ分けると、スプーラからのメッセージがちょっと・・・

210 名前:デフォルトの名無しさん :02/11/26 13:41
>>208
半透明ウインドウとかはどうやってるの?

211 名前:デフォルトの名無しさん :02/11/26 13:46
ホットゾヌの書き込みウインドウが半透明になっている下で、
スレッドがスクロールしたりするんですけど。
画面からはみ出したりすると、他のウインドウも下に見えるし、どうやってるの?これ。

212 名前:デフォルトの名無しさん :02/11/26 13:48
>>210
それがLayeredなウィンドウ。

213 名前:デフォルトの名無しさん :02/11/26 13:52
>>212
Layered化すれ(どうやってするんだろう・・・)ば、下のイメージが取り出せるのですか?

214 名前:デフォルトの名無しさん :02/11/26 14:33
>>209
ResetDCで行けそうな気はするが、このファンクションは
DEVMODEのどこまで書き換えられるのかイマイチ掴めないんだよな。

215 名前:デフォルトの名無しさん :02/11/26 14:33
>>213
Win2kからは簡単に出来るよ。

216 名前:デフォルトの名無しさん :02/11/26 15:32
ReadやReadlnでは、Enterキーが押されるまで帰ってきませんが、
キーボードの押された1文字読み込める関数はあるのでしょうか?
ググってみたのですがダメでした。よろしくおねがいします。


217 名前:216 :02/11/26 15:36
cut:「やReadln」

218 名前:デフォルトの名無しさん :02/11/26 16:07
>>192
debug privilege
一般的に使われるものではないから、素人に質問しても無駄だと思われ


219 名前:216 :02/11/26 16:15
add:「getch()以外で」

220 名前:デフォルトの名無しさん :02/11/26 16:16
>>210
SetLayeredWindowAttributes
で検索しる

221 名前:デフォルトの名無しさん :02/11/26 17:12
>>219
GetKeyState
WM_KEYDOWN


222 名前:デフォルトの名無しさん :02/11/26 17:17
>>218
素人って誰だよ

223 名前:デフォルトの名無しさん :02/11/26 17:31
>>220
ありがとうございました。できますた。

224 名前:デフォルトの名無しさん :02/11/26 18:51
PropertySheet() で作成するダイアログでWinXPの新しいコントロールを
使うようにしたら、どのようにしたらいいんでしょう?
manifestは書いてみたものの変わらず、PROPSHEETHEADER にもそれらしい
項目はありませんでした。

225 名前:224 :02/11/26 19:10
なんか日本語が崩壊してる・・・(´Д`;)

× PropertySheet() で作成するダイアログでWinXPの新しいコントロールを
  使うようにしたら、どのようにしたらいいんでしょう?
○ PropertySheet() で作成するダイアログでWinXPの新しいコントロールを
  使わせるようにするには、どのようにしたらいいんでしょう?

226 名前:216 :02/11/26 19:57
>221
レスありがとうございます。
さっそく、挑戦してみます。

227 名前:デフォルトの名無しさん :02/11/26 20:11
int ch;
SetConsoleMode( GetStdHandle(STD_INPUT_HANDLE), 0 );
while( ch = fgetc(stdin), ch != EOF)
fputc( ch + 1 , stderr );

228 名前:216 :02/11/26 20:45
>227
ありがとうございました。ジャストでした。
感謝、感謝、感謝です。


229 名前:216 :02/11/26 21:13
>>227
お礼です。
http://www.skku.ac.kr/~bkasia/board/cwb-data/data/kbhwdata/

230 名前:デフォルトの名無しさん :02/11/26 21:19
>>229
韓国の大学ではそういう授業があるんですか?

231 名前:貧民 :02/11/26 22:05
猫プロのWinSDK第18章で、
bcc32 でコンパイル&実行できた人っています?
どうしてもダイアログのメニューが出てこないんですが。

リソースはばっちりだと思うんだけどなぁ。

232 名前:貧民 :02/11/26 22:26
うあ。
プロシージャの中の switch からっぽで、
リソースだけくっつけてコンパイルしてもメニューが出ないぢゃねーか。
bcc32 で Windows プログラミングって・・むちゃ?

233 名前:デフォルトの名無しさん :02/11/26 23:06
>>232
bcc32というかWindows(GUI)プログラミングをC++で作るのに
GUIエディタが無いのがむちゃ。

234 名前:デフォルトの名無しさん :02/11/26 23:11
>>233
んなこたーない。
メニューは全て動的に作って、追加する。
コントロールも全て動的に作って追加する。
別にGUIツールが無くても問題ない。

235 名前:貧民 :02/11/26 23:18
んー。全部動的に・・・てのはやりたくないです。

Borland C++ Compiler に付属の
brcc32 (リソースコンパイラ)でリソースをコンパイルして、
bcc32 (コンパイラ)で .c をコンパイルして、
brc32 (リソースシェル)でコンパイルした .res を .exe にくっつけて
やってるんですが、これって何か陥りやすいミスってあります?

236 名前:デフォルトの名無しさん :02/11/26 23:31
ここでメニューが出ないといえばたいがいMAKEINTRESOURCEで解決

237 名前:デフォルトの名無しさん :02/11/27 00:01
>>235
素直にBCCDeveloper使え。

238 名前:貧民 :02/11/27 02:13
>>236
ごめん。巣でわからないです。
つか、MAKEINTRESOURCE調べてもわからなかった・・・。
これと猫プロSDK18章ってなんか関係すんの?

>>237
BCCDeveloper 入れてみました。
cygwin 上で vim + GNU make とどっちがいいんだろ。
しばらく使ってみよ。

239 名前:デフォルトの名無しさん :02/11/27 02:29
DLLを明示的リンクしたいのですが

DLLEXPORTした関数(HOOK)が

?HOOK@@YAHHP6G

みたいに変な関数名になるのですが、
綺麗に出来ませんか?

240 名前:デフォルトの名無しさん :02/11/27 02:35
defファイルを書く
extern"C"を使う

241 名前:デフォルトの名無しさん :02/11/27 02:42
スゲー。アリガd。

242 名前:デフォルトの名無しさん :02/11/27 03:37
猫プロの本が出るみたい。
あれが全部本になるんだろうか? 
それともC#?
http://www.kumei.ne.jp/c_lang/shoseki/noflash.htm

243 名前:デフォルトの名無しさん :02/11/27 04:17
VC6でですが、
現プロジェクトのmain.cpp以外を
スタティックライブラリとして
生成したいのですが、

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

階層がいっぱいあって、めんどくさいのです。
ビルド→構成→追加(コピー)
から、出来そうな気がするのですが。
出来ないでしょうか?

244 名前:243 :02/11/27 04:19
API質問じゃなかった。
間違えましたすんません。

245 名前:224 :02/11/27 06:31
レスついてない・・・ ⊃Д`;)

あれから PROPSHEETPAGE の項目に hActCtx なんてのが comctl32 ver.6.0 から
増えていることが分かったけど、何に使うのかよく分からない(苦笑)。
(どうやらmanifestに書くような内容を記述するみたい)
これが関係してるのかな?

246 名前:デフォルトの名無しさん :02/11/27 07:20
リソースに manifest の xml を参加させる。

247 名前:デフォルトの名無しさん :02/11/27 09:18
猫プロ、Editを「エジット」と記述するのさえなければ、
いいんだけどなぁ。違和感ありまくり。

#スレ違いスマソ。

248 名前:デフォルトの名無しさん :02/11/27 10:18
>>222
スマソ。言葉が悪かった。
それを専門又は相当詳しいやつがいないと厳しいという意味。ちょっとだけ特殊な世界なので。



249 名前:デフォルトの名無しさん :02/11/27 10:32
>>247
「エヂット」じゃなかったっけ。

250 名前:デフォルトの名無しさん :02/11/27 10:49
>>242
出ても買わん。C言語ポインタ完全制覇があれば十分。


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