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

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

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言語ポインタ完全制覇があれば十分。

251 :デフォルトの名無しさん:02/11/27 11:02
>>247
ローマ字入力で「ディ」が出せなかったものと思われ
最近の記事ではちゃんとエディットになってる(w

252 :デフォルトの名無しさん:02/11/27 12:22
>>250
( ゚д゚) ポカーン

253 :デフォルトの名無しさん:02/11/27 14:12
ツールバーのボタンのそれぞれを好きな寸法にしたいのですが、
どんな方法があるのでしょうか。

254 :デフォルトの名無しさん:02/11/27 14:18
TBSTYLE_AUTOSIZE でできました・・・。

255 :悲しい:02/11/27 20:06
デスクトップに文字列表示できないかと思って
以下のコード書いたんですがうまくいかないんです。
なぜうまくいかないんだ。
よかったらどなたか教えてくれませんか?

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);


256 :悲しい:02/11/27 20:07
何にも表示されないんです・・・。


257 :デフォルトの名無しさん:02/11/27 20:51
CString* をchar* に代入するには いかそ?

258 :デフォルトの名無しさん:02/11/27 20:55
>>257
コンパイルでUNICODE定義していないなら、

CString *aaa;

aaa になんか値が入る。

char* p = (char*)(*aaa);

259 :デフォルトの名無しさん:02/11/27 21:26
>>255
試してないが、
CreateDC("DISPLAY",NULL,NULL,NULL);
でどうだ?

260 :うれしい:02/11/27 22:27
>>259
うまくいった!
感謝!
あなた神です。


261 :デフォルトの名無しさん:02/11/27 22:49
>>259
それだと「デスクトップ」じゃなくて画面全体じゃないか?
っていっても、260で喜んでるので、そういうものが欲しかったのか。
普通デスクトップって言ったら、Explorerの画面全体を覆ってる
リストビューのこと指すと思うんだがなあ。

262 :デフォルトの名無しさん:02/11/27 22:56
>>261
(゚Д゚)ハァ?

263 :デフォルトの名無しさん:02/11/27 22:59
>>261
窓でのデスクトップの定義について
小2週間くらい勉強してこい

264 :デフォルトの名無しさん:02/11/27 23:07
>>262-263
(゚Д゚)ハァ?

265 :デフォルトの名無しさん:02/11/27 23:08
( ゚д゚)ポカーン

266 :デフォルトの名無しさん:02/11/27 23:11
>>261-264
俺にもわかるように説明してくれ


267 :デフォルトの名無しさん:02/11/27 23:16
>>266
(゚Д゚)ハァ?


268 :デフォルトの名無しさん:02/11/27 23:24
>>266
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/desktops.asp
これでも読め

269 :デフォルトの名無しさん:02/11/27 23:28
>>261
「Explorerの画面全体を覆ってるリストビュー」って
どれのこと?
・・・あーそういうことだったのか! やっとわかった!


270 :デフォルトの名無しさん:02/11/27 23:31
>>269
(゚Д゚)ハァ?

271 :デフォルトの名無しさん:02/11/27 23:41
・・・で、真の厨房は誰だったんだ?


272 :デフォルトの名無しさん:02/11/27 23:43
( ゚д゚)ポカーン

273 :デフォルトの名無しさん:02/11/27 23:44
270


274 :デフォルトの名無しさん:02/11/27 23:47
つれた!!

275 :260:02/11/27 23:50
>>261
その「Explorerの画面全体を覆ってるリストビュー」って
どうやって取得できるんですか?
よかったら教えてもらえませんか。


276 :デフォルトの名無しさん:02/11/27 23:51
>>271
261です。
「Explorerの画面全体を覆ってるリストビュー」がデスクトップか否かに関わらずアホだから。

277 :デフォルトの名無しさん:02/11/27 23:53
>>275
FindWindowとかでProgram Managerを検索して、
その子ウインドウでクラスがSysListView32になっている奴を捜すんじゃないの?

278 :デフォルトの名無しさん:02/11/27 23:53
>>275
やったことないけどGetWindow(GetDesktopWindow(),GW_CHILD);
とかで取れないか?

279 :デフォルトの名無しさん:02/11/28 00:13
>>278
それは安全か?

280 :デフォルトの名無しさん:02/11/28 00:13
だめなんだなー
それじゃー

281 :デフォルトの名無しさん:02/11/28 00:23
今Spyで見てみたら、

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

だった。

282 :名無し@沢村:02/11/28 00:32
皆々様方〜、ツールバーだが、ツールバーにビットマップを標示すると、
色が表示されずにグレーになったり、使ってるうちにだんだんイロがあせてきたりするんだが、
これはどうやったら直せるのですか?
ちなみに画面のプロパティの詳細は256色です。

283 :デフォルトの名無しさん:02/11/28 00:34
>>282
モニタを買い換えろ。

284 :デフォルトの名無しさん:02/11/28 01:09
また沢村かよ・・・

285 :デフォルトの名無しさん:02/11/28 09:38
>>283
Macじゃあるまいしモニタを買い換えても意味ないだろ。
ビデオカードを買い換えないと。とかマジレスしてしまうテスト

286 :デフォルトの名無しさん:02/11/28 12:41
WinMain() の中から直接 DialogBox() をコールしてダイアログボックスを
表示するアプリを作っているのですが、キーボードイベントをうまく扱え
ません。
ネットで調べてみると、どうも「ダイアログボックスには WM_KEYDOWN
イベントが飛んでこない」ようです。
「ウインドウのサブクラス化」も試みてみたのですがうまくいきませんでした。
やはり、親ウインドウがないダイアログボックスではキーボードイベントを
扱うことは出来ないのでしょうか?

287 :デフォルトの名無しさん:02/11/28 12:57
>>286
できるけど、どーしたいん?

288 :デフォルトの名無しさん:02/11/28 13:19
>>286
SetWindowsHookEx()

289 :286:02/11/28 13:27
>>288
そのものずばりでした。ありがとうございます。

290 :デフォルトの名無しさん:02/11/28 14:55
>>287 が可哀相に思えるのは俺だけか?

291 :287:02/11/28 15:17
>>290
いいのいいの。

292 :デフォルトの名無しさん:02/11/28 15:59
今タイムタグ付き歌詞ファイルを読み込んで色を変えながら表示していく
("[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で透過転送してたら重くて使い物にならなかった。

293 :224=245:02/11/28 17:35
解決しますた。

リソースにmanifestを含める場合、manifestのリソースIDを必