Win32API質問箱 Build86

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんやお姉さんたちが答えてくれるかも。
「知らないならレスしないで下さい。ウザイだけです。 」なんて言わないでねっ!

過去スレ、関連リンクは>>2-10くらい。

■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。英語版( http://msdn.microsoft.com/en-us/library/ )の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで

- Win32API質問箱 wiki
http://wiki.livedoor.jp/program1/d/FrontPage

Win32API質問箱 Build85
http://pc12.2ch.net/test/read.cgi/tech/1262430441/
2デフォルトの名無しさん:2010/02/05(金) 15:23:45
3デフォルトの名無しさん:2010/02/05(金) 15:23:57
60 ttp://pc11.2ch.net/test/read.cgi/tech/1196874830/
59 ttp://pc11.2ch.net/test/read.cgi/tech/1194701996/
58 ttp://pc11.2ch.net/test/read.cgi/tech/1191781463/
57 ttp://pc11.2ch.net/test/read.cgi/tech/1189255282/
56 ttp://pc11.2ch.net/test/read.cgi/tech/1186989201/
55 ttp://pc11.2ch.net/test/read.cgi/tech/1184853465/
54 ttp://pc11.2ch.net/test/read.cgi/tech/1181645965/
53 ttp://pc11.2ch.net/test/read.cgi/tech/1178882828/
52 ttp://pc11.2ch.net/test/read.cgi/tech/1176828891/
51 ttp://pc11.2ch.net/test/read.cgi/tech/1174416295/
50 ttp://pc11.2ch.net/test/read.cgi/tech/1171721448/
49 ttp://pc10.2ch.net/test/read.cgi/tech/1168708801/
48 ttp://pc10.2ch.net/test/read.cgi/tech/1166172047/
47 ttp://pc8.2ch.net/test/read.cgi/tech/1163375772/
46 ttp://pc8.2ch.net/test/read.cgi/tech/1159158014/
45 ttp://pc8.2ch.net/test/read.cgi/tech/1156032806/
44 ttp://pc8.2ch.net/test/read.cgi/tech/1151501925/
43 ttp://pc8.2ch.net/test/read.cgi/tech/1148005509/
42 ttp://pc8.2ch.net/test/read.cgi/tech/1144962549/
41 ttp://pc8.2ch.net/test/read.cgi/tech/1141392216/
40 ttp://pc8.2ch.net/test/read.cgi/tech/1138893959/
39 ttp://pc8.2ch.net/test/read.cgi/tech/1136673250/
38 ttp://pc8.2ch.net/test/read.cgi/tech/1133798345/
37 ttp://pc8.2ch.net/test/read.cgi/tech/1131884991/
36 ttp://pc8.2ch.net/test/read.cgi/tech/1128951330/
35 ttp://pc8.2ch.net/test/read.cgi/tech/1125850096/
34 ttp://pc8.2ch.net/test/read.cgi/tech/1122723009/
33 ttp://pc8.2ch.net/test/read.cgi/tech/1120153520/
32 ttp://pc8.2ch.net/test/read.cgi/tech/1117271829/
31 ttp://pc8.2ch.net/test/read.cgi/tech/1114762194/
4デフォルトの名無しさん:2010/02/05(金) 15:24:06
30 ttp://pc8.2ch.net/test/read.cgi/tech/1112345886/
29 ttp://pc8.2ch.net/test/read.cgi/tech/1110281860/
28 ttp://pc5.2ch.net/test/read.cgi/tech/1108199304/
27 ttp://pc5.2ch.net/test/read.cgi/tech/1106103119/
26 ttp://pc5.2ch.net/test/read.cgi/tech/1104109858/
25 ttp://pc5.2ch.net/test/read.cgi/tech/1101393155/
24 ttp://pc5.2ch.net/test/read.cgi/tech/1098967135/
23 ttp://pc5.2ch.net/test/read.cgi/tech/1095534704/
22 ttp://pc5.2ch.net/test/read.cgi/tech/1092524669/
21 ttp://pc5.2ch.net/test/read.cgi/tech/1090422324/
20 ttp://pc5.2ch.net/test/read.cgi/tech/1088140233/
19 ttp://pc5.2ch.net/test/read.cgi/tech/1084697545/
18 ttp://pc5.2ch.net/test/read.cgi/tech/1081702990/
17 ttp://pc5.2ch.net/test/read.cgi/tech/1077470361/
16 ttp://pc2.2ch.net/test/read.cgi/tech/1073830065/
15 ttp://pc2.2ch.net/test/read.cgi/tech/1069339866/
14 ttp://pc5.2ch.net/tech/kako/1065/10653/1065328397.html
13 ttp://pc5.2ch.net/tech/kako/1059/10595/1059549320.html
12 ttp://pc5.2ch.net/tech/kako/1056/10560/1056033645.html
11 ttp://pc5.2ch.net/tech/kako/1052/10526/1052651750.html
10 ttp://pc5.2ch.net/tech/kako/1047/10478/1047819779.html
9 ttp://pc5.2ch.net/tech/kako/1044/10449/1044929160.html
8 ttp://pc5.2ch.net/tech/kako/1040/10409/1040964626.html
7 ttp://pc3.2ch.net/tech/kako/1036/10366/1036654893.html
6 ttp://pc3.2ch.net/tech/kako/1032/10325/1032548635.html
5 ttp://pc3.2ch.net/tech/kako/1028/10285/1028580373.html
4 ttp://pc3.2ch.net/tech/kako/1023/10233/1023361418.html
3 ttp://pc.2ch.net/tech/kako/1017/10170/1017072275.html
2 ttp://pc.2ch.net/tech/kako/1006/10067/1006783012.html
1 ttp://pc.2ch.net/tech/kako/991/991576947.html
5デフォルトの名無しさん:2010/02/05(金) 15:24:34
引き続きクソスレクソレスの嵐をお楽しみください
6デフォルトの名無しさん:2010/02/05(金) 15:31:55
前スレの991さんへ

これですこれです
出来ましたありがたや
7デフォルトの名無しさん:2010/02/05(金) 15:35:19
それじゃない
それじゃない
コンソールアプリとして組んで(int mainエントリー)
GUIも使う
それが出来てからWinMainエントリーなGUIアプリ
に改造する
これが常道。
WinMainから始めるのは外道
8デフォルトの名無しさん:2010/02/05(金) 15:40:42
そんなやり方もあるんですか?
よかったらそれも教えてください
subsystemスイッチを消すとエントリポイントを勝手に探してくれるのは知ってるけど
GUI用のメッセージキューとか?は
どうやって準備するんですか?
9デフォルトの名無しさん:2010/02/05(金) 15:45:06
てか今時コンソールにメッセージ出すんじゃなくて
ファイルにHTMLとかでメッセージ出したほうが
見やすくね?表とかに整形して出すこととか
出来るし、フォントの大きさも色も変えられるし...
10デフォルトの名無しさん:2010/02/05(金) 15:45:17
何も変わらない
WinMainがなにか用意してくれたか?
11デフォルトの名無しさん:2010/02/05(金) 15:54:32
なるほど。hInstanceにGetModuleHandle(NULL)渡したら普通に出来ました
こっちはGUIが終了してもコンソールは残るのか
12デフォルトの名無しさん:2010/02/05(金) 16:20:55
>>7
実は外道と常道なんてちょっとした差
でしかないという考えもある。ブラウザ
とかインフラが揃っておるご時世、
UNIXのシェルアプリのような組み合わせ
て使ってナンボなアプリにするわけでもな
きゃ、最初からコンソール出力はせず
>>9のようにリアルタイムにHTML出
力してブラウザでログを眺めるというよう
なやり方もありだとオモ
13デフォルトの名無しさん:2010/02/05(金) 16:45:27
いつまでもあると思うなカネとブラウザ
ってか?
14デフォルトの名無しさん:2010/02/05(金) 16:48:12
できた!
int test()
{
 HKEY hRootKey;
 char KeyName[512];
 strcpy(KeyName, "SOFTWARE\\Microsoft\\NET Framework Setup\\NDP\\v2.0.50727");
 if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, KeyName, 0, KEY_READ, &hRootKey) != ERROR_SUCCESS) {
  printf("err!\n");
  return 0;
 }
 DWORD dwType, DWordValue, cbBuff;
 dwType = REG_DWORD;
 cbBuff = sizeof(DWordValue);
 if (RegQueryValueEx(hRootKey, "Install", NULL, &dwType, (LPBYTE)&DWordValue, &cbBuff) != ERROR_SUCCESS) {
  RegCloseKey(hRootKey);
  printf("err!\n");
  return 0;
 }
 RegCloseKey(hRootKey);
 printf("dwType=%d\n", dwType);
 printf("DWordValue=%d\n", DWordValue);
 return 0;
}
15デフォルトの名無しさん:2010/02/05(金) 17:15:15
Ctrl+Oでファイルを開くとかのアクセラレータキーって
対応するメニューアイテムないと使えないんでしょうか

ショートカットキー込で再利用できる部品を作れないかと思ったんですが
メニューアイテムとセットになってるんだとすると
そういう部品化は出来ないってことになりますよね?
16デフォルトの名無しさん:2010/02/05(金) 18:27:16
独自でアクセラレータテーブル作って非メニューコマンドを実装することはできる
CreateAcceleratorTable()で作ったハンドルをTranslateAccelerator()に渡すだけでよい
複数のハンドル作れば、PCゲームみたいな1つの操作に複数のキー割り当て的なこともできる
17デフォルトの名無しさん:2010/02/06(土) 04:28:49
EnumWindowsて先に起動された順に列挙していくの?
18デフォルトの名無しさん:2010/02/06(土) 09:05:10
何を言ってるんだ
19デフォルトの名無しさん:2010/02/06(土) 11:07:19
だから
早く起動されたアプリの情報から順番に
プロシージャへ渡されるの?
20デフォルトの名無しさん:2010/02/06(土) 11:10:35
EnumWindows で取得できるウィンドウと、プロセスには直接の関係はない。
21デフォルトの名無しさん:2010/02/06(土) 19:00:01
Win32APIって.netでも使えますか
22デフォルトの名無しさん:2010/02/06(土) 20:57:55
使えます。
23デフォルトの名無しさん:2010/02/06(土) 22:42:13
24デフォルトの名無しさん:2010/02/07(日) 00:03:34
うぃなぴ
25デフォルトの名無しさん:2010/02/07(日) 06:06:38
全スレは史上最低の無駄スレだったな
26デフォルトの名無しさん:2010/02/07(日) 10:02:41
そうだなすべてが無駄だ
27デフォルトの名無しさん:2010/02/07(日) 13:32:15
winsockとSocketクラスってどっちが優れてるの
28デフォルトの名無しさん:2010/02/07(日) 13:49:03


Socketクラスはwinsockで実装されてるんじゃないかな
29デフォルトの名無しさん:2010/02/07(日) 14:11:27
ツールバーのボタンの右横に、▼マークのついた
メニューボタンをつけるにはどうしたらいいの?
30デフォルトの名無しさん:2010/02/07(日) 14:16:36
TB_SETEXTENDEDSTYLEとTBSTYLE_EX_DRAWDDARROWS
31デフォルトの名無しさん:2010/02/07(日) 14:43:01
有名なこのサイト
ttp://www.kumei.ne.jp/c_lang/index_sdk.html
信頼度は高いですか?
32デフォルトの名無しさん:2010/02/07(日) 14:47:28
うまくいかないと思ったらMSDN確認するくらいの気で行けば平気
33デフォルトの名無しさん:2010/02/07(日) 14:48:25
本家というかMSDNライブラリ(>>1)を信頼したほうがいい
34デフォルトの名無しさん:2010/02/07(日) 17:07:56
apiで数式エディタを作りたいのですが
参考になるサイト等がありましたら教えて
35デフォルトの名無しさん:2010/02/07(日) 17:12:54
36デフォルトの名無しさん:2010/02/07(日) 17:17:29
参考になるサイトっていうのは
APIで数式エディタを作ろう!みたいなタイトルでサンプル提供してるような所を指してるの?
そんなニッチなもんあるわけねえだろ
37デフォルトの名無しさん:2010/02/07(日) 17:29:32
数式エディタは難しいよ
Σとかどうやって作るんだよ
38デフォルトの名無しさん:2010/02/07(日) 17:35:54
>>30
ありがとう
39デフォルトの名無しさん:2010/02/07(日) 18:16:44
40デフォルトの名無しさん:2010/02/07(日) 19:17:50
数式を表示できるソフト普及するよりは、コンピュータに適した形で
数式の体系自体を変えるべきだと思うんだ
41デフォルトの名無しさん:2010/02/08(月) 02:59:53
Tex最強!
42デフォルトの名無しさん:2010/02/08(月) 18:02:11
ツールバーのドロップダウンメニューにチェックマークを付けたいのに
クリックしても何もおこらないんですがなんでですかねえ

HWND hToolbar;
HMENU hPopupMenu;

LRESULT CALLBACK WndProc(HWND hwnd , UINT msg , WPARAM wp , LPARAM lp) {
switch (msg) {
case WM_COMMAND: {
if(LOWORD(wp) == 50){
MENUITEMINFO info;
info.cbSize = sizeof(info);
info.fMask = MIIM_STATE;
GetMenuItemInfo(hPopupMenu, 50, false, &info);
if(info.fState == MFS_CHECKED){
info.fState = MFS_UNCHECKED;
SetMenuItemInfo(hPopupMenu, 50, false, &info);
} else {
info.fState = MFS_CHECKED;
SetMenuItemInfo(hPopupMenu, 50, false, &info);
}
DrawMenuBar(hToolbar);
}
return 0;
}
43デフォルトの名無しさん:2010/02/08(月) 18:03:23
つづき
case WM_NOTIFY:{
#define lpNM ((LPNMHDR)lp)
#define lpnmTB ((LPNMTOOLBAR)lp)
RECT rc;
TPMPARAMS tpm;
if(lpNM->hwndFrom == hToolbar && lpNM->code == TBN_DROPDOWN){
SendMessage(lpnmTB->hdr.hwndFrom, TB_GETRECT,
(WPARAM)lpnmTB->iItem, (LPARAM)&rc);
MapWindowPoints(lpnmTB->hdr.hwndFrom,
HWND_DESKTOP, (LPPOINT)&rc, 2);
tpm.cbSize = sizeof(TPMPARAMS);
tpm.rcExclude.top = rc.top;
tpm.rcExclude.left = rc.left;
tpm.rcExclude.bottom = rc.bottom;
tpm.rcExclude.right = rc.right;
hPopupMenu = CreatePopupMenu();
AppendMenu(hPopupMenu, 0, 50, TEXT("開く(&O)"));
TrackPopupMenuEx(hPopupMenu,
TPM_LEFTALIGN| TPM_LEFTBUTTON| TPM_VERTICAL,
rc.left, rc.bottom, hwnd, &tpm);
DrawMenuBar(hToolbar);
}
44デフォルトの名無しさん:2010/02/08(月) 23:15:32
Windowsで開発したことないんですが、
あるスレッドが複数のイベントを待ちたい場合ってどういうふうに
設計するのが一般的でしょうか?

複数のイベントとは、片方はソケットからの入力、
もう片方は他のスレッドからの要求です。

MsgWaitForMultipleObjectはソケットが待てないっぽいんで。
環境はCで、MFCなしです。
45デフォルトの名無しさん:2010/02/09(火) 00:35:34
windowsプログラミングでオブジェクト指向なコードが書きたいときって、アンマネージド限定でどうするのがベター?
メインウィンドウのプロシージャに振り回されて、まともな設計ができない
46デフォルトの名無しさん:2010/02/09(火) 00:46:55
>>44
むしろ、MsgWaitForMultpleObjectでソケットが待てないソースを教えてほしい。
WaitForMultipleObjectsとかでもソケット使えるのだから、
直感的にはMsgWaitForMultpleObjectでダメとは思えないのだけど。
47デフォルトの名無しさん:2010/02/09(火) 00:51:09
>>45
つMFC
48デフォルトの名無しさん:2010/02/09(火) 00:56:55
>>45
Windows API自体オブジェクト指向の固まりだと言うことに気付け。
ハンドル1つ1つがインスタンス。

それはともかく、ウィンドウプロシージャをクラスのメンバ関数にする方法は
いくつかあって誰か書いているはずだから、ググれば見つかる。
それでメインウィンドウという括りで1つのクラスが出来上がる。
49デフォルトの名無しさん:2010/02/09(火) 00:59:20
ExtTextOutで文字を表示する時に等間隔にしてくれるような関数ありますか?
例えば日本語(全角)5文字表示する所に半角10文字のスペースを上書きしても
日本語の方が横長みたいで全て埋まらないのです

まとめると、全角5文字を半角10文字のスペースできっちり埋めれるようにするような関数はありますか?
50デフォルトの名無しさん:2010/02/09(火) 01:06:27
等幅フォントは?
51デフォルトの名無しさん:2010/02/09(火) 01:13:26
>>50
CreateFontのcharsetに等幅フォントやってみようと思います
ありがとうございました
52デフォルトの名無しさん:2010/02/09(火) 02:40:04
>>45
WTLもあるよ
5344:2010/02/09(火) 08:44:11
>>46
*WaitFor*Objectで待てるものに、ソケットが対象になっていませんでした。
ハンドルしか待てないからソケットは待てないと思っているのですが、
何か方法があるのでしょうか?
単純に待つハンドルの配列にソケットを突っ込めばいけてしまうとかでしょうか?

MFCのAPIを使えば、ソケットとハンドルが関連付けられてWaitFor*でも
待てるっぽいところまでは分かったのですが、今回はMFCが使えないので…。
54デフォルトの名無しさん:2010/02/09(火) 09:06:56
>>43
毎回CreatePopupMenu呼んでるから
55デフォルトの名無しさん:2010/02/09(火) 09:40:54
他のスレッドからの要求もソケットでやればいいな
56デフォルトの名無しさん:2010/02/09(火) 09:42:19
>>44
WSAEventSelect
57デフォルトの名無しさん:2010/02/09(火) 11:54:22
CSSパーザ探してます。
だいぶ昔に作り捨てたプログラムではスタイルシートをres:プロトコルでIEコン
ポーネントに流し込む手法を使いましたが、この方法は使えなくなってしまった
ようで、IHTMLStyleSheet::addRuleで流し込む必要ががあるようです。

元データ自体はCSSの文法で持ちたいので、C/C++から利用できるフリーのCSSパー
ザまたはIEコンポーネントの再利用法は有りませんか?
58デフォルトの名無しさん:2010/02/09(火) 12:57:07
>>57です
正規表現だけでいけるような気がしてきたので質問取り下げます。
59デフォルトの名無しさん:2010/02/09(火) 15:54:13
TEXTマクロって1バイト文字には使わなくていいんだよね?
60デフォルトの名無しさん:2010/02/09(火) 16:09:28
_tcslen()に1バイト文字入れてみ
61デフォルトの名無しさん:2010/02/09(火) 16:48:18
unicode/MBCSをコンパイルオプションで切り替える、ってことをしないならTEXT自体使わなくていい。
切り替えるからTEXT使う、なら基本は全部に使う。(処理の詳細的に使わない場合はあり得る)
切り替えないけどLよりTEXTが好き、でも別にいい。

だいぶスレ違いな気がする。
62デフォルトの名無しさん:2010/02/09(火) 19:06:03
ファイルが関連付いているアプリケーションのアイコンを取得したいと思っています。
ExtractAssociatedIcon という API を使用すると 32 x 32 のアイコンしか取得することができません。
48 x 48 のアイコンを取得したいのですが、どのようにすれば良いでしょうか?
63デフォルトの名無しさん:2010/02/09(火) 22:50:25
漏れの記憶では
xn_resourceeditor
64デフォルトの名無しさん:2010/02/09(火) 23:02:59
>>56
ありがとです。
いろいろ検討してみます。
65デフォルトの名無しさん:2010/02/10(水) 04:59:51
IMPLEMENT_DYNAMIC(CCustomFileDialog, CFileDialog)

CCustomFileDialog::CCustomFileDialog(BOOL bOpenFileDialog, LPCTSTR lpszDefExt, LPCTSTR lpszFileName,
DWORD dwFlags, LPCTSTR lpszFilter, CWnd* pParentWnd) :
CFileDialog(bOpenFileDialog, lpszDefExt, lpszFileName, dwFlags, lpszFilter, pParentWnd)
{
m_customDlgPtr = this->GetIFileDialogCustomize();
if(m_customDlgPtr != NULL){
m_customDlgPtr->AddComboBox(IDC_COMOBOBOX1);
m_customDlgPtr->AddControlItem(IDC_COMOBOBOX1,101,L"foo");
m_customDlgPtr->AddControlItem(IDC_COMOBOBOX1,102,L"bar");
}
}

BOOL CCustomFileDialog::OnFileNameOK()
{
DWORD Item;
m_customDlgPtr->GetSelectedControlItem(IDC_COMOBOBOX1,&Item);
return CFileDialog::OnFileNameOK();
}

コンボボックスから選択中のアイテムを取得できたんだが、そこから文字列を取得する方法がわからない。
くぐってもさっぱり出てこないので教えてほしい。
66デフォルトの名無しさん:2010/02/10(水) 10:35:41
コア別のCPU使用率を取得する方法を教えてください。
67デフォルトの名無しさん:2010/02/10(水) 10:39:47
パフォーマンスカウンタの値を見る
パフォーマンスカウンタデータヘルパーAPIっていうバカ長い名前のAPIがあるのでそれを使います
68デフォルトの名無しさん:2010/02/10(水) 10:41:47
使いかたの説明は面倒なので↓でも見て自分で考えてください
http://nienie.com/~masapico/api_PdhGetRawCounterValue.html
69デフォルトの名無しさん:2010/02/10(水) 12:31:50
>>65
記憶によると、comboboxの各アイテムに文字列へポインタをユーザ定義のデータと
して埋め込んでおく。
70デフォルトの名無しさん:2010/02/10(水) 12:33:51
コントロールの文字を小さくするには?
71デフォルトの名無しさん:2010/02/10(水) 12:39:16
小さいフォントをセットすればいい
72デフォルトの名無しさん:2010/02/10(水) 19:46:50
>>65
選択中のならGetWindowText()でできた希ガス
リストボックスのほうならCB_GETLBTEXTとか
73デフォルトの名無しさん:2010/02/10(水) 22:11:54
>>69
>>72
とんくす。
74デフォルトの名無しさん:2010/02/11(木) 10:01:07
AnimateWindowでウインドウのフェードアウトをする方法を検索すると、
AW_BLEND | AW_HIDE としているのが見つかるのですが
msdnには、AW_BLENDとAW_HIDEを併用してはいけないと書いてあります。
どうやればいいのか教えてください。
75デフォルトの名無しさん:2010/02/11(木) 10:52:41
英語版のMSDNにはそんな事書いてないけど、日本語版が間違ってるんじゃ?
76デフォルトの名無しさん:2010/02/11(木) 10:55:07
日本語版は間違いだらけ
戻り値 True/False 間違えてて正反対の意味なんてことも
77デフォルトの名無しさん:2010/02/11(木) 11:04:31
78デフォルトの名無しさん:2010/02/11(木) 11:16:43
msdnに間違いがあるとは考えませんでした
ありがとうございました
79デフォルトの名無しさん:2010/02/11(木) 11:29:18
MSDNだけじゃなくて
●●入門とかの言語とかフレームワークとかの書籍も結構致命的な間違いがある
80デフォルトの名無しさん:2010/02/11(木) 15:40:49
ツールバーとステータスバー
両方画面の下に共存させるにはどうしたらいい?
81デフォルトの名無しさん:2010/02/11(木) 15:51:32
>>76
APIは一度公開したらインターフェースを返ることは
出来ないからな。使われない余計なパラメータがあ
ったりするのはそういう理由だし。
時には内容はほぼ同じだがインターフェースだけ
変えたAPIとかあるらしいし。古いAPIの更新を
やめて新しいAPIとして管理していくというやり方
を取らざるを得ないケースも多いだろうし
結局数は増える一方。墓地の埋葬者名簿みたいな
もので正確性を永続的に保証できるものじゃない
だろ
82デフォルトの名無しさん:2010/02/11(木) 15:55:56
日本語ページが正しくないことの言い訳としては筋違い。
83デフォルトの名無しさん:2010/02/11(木) 16:20:50
>>81
その言い訳は「かつては正しかった」という根拠を出してからにしろ。
84デフォルトの名無しさん:2010/02/11(木) 17:03:31
>>81
>墓地の埋葬者名簿
いいたとえだなw確かにそうだ

関数の戻り値の一貫性とか破綻してるから困ったもんだな・・・
85デフォルトの名無しさん:2010/02/11(木) 17:54:48
MSの技術者でさえこんな設計するんだから
一般人のコードが汚くても誰も責めることはできない
86デフォルトの名無しさん:2010/02/11(木) 17:58:55
>>85こういう奴と一緒に仕事はしたくないな。
87デフォルトの名無しさん:2010/02/11(木) 19:46:47

いっしょにコードを
書きませんか?

   ∧_∧ [windows.h]
    (・ω・)丿 ッパ
.  ノ/  /
  ノ ̄ゝ
88デフォルトの名無しさん:2010/02/11(木) 21:28:50
http://msdn.microsoft.com/en-us/library/ms633494%28VS.85%29.aspx
>Return Value
>  Not used.

http://msdn.microsoft.com/ja-jp/library/cc410802.aspx
>戻り値.
>関数が成功すると、0 以外の値が返ります。
>関数が失敗すると、0 が返ります。拡張エラー情報を取得するには、 関数を使います。


戻り値の説明が勝手に増えててしかも間違っている
翻訳ミスどころかゴミ埋め込んでどうするw
89デフォルトの名無しさん:2010/02/11(木) 21:32:45
MSに言えよ
90デフォルトの名無しさん:2010/02/11(木) 21:35:19
Win関連の訳本はASCII時代がよかったな、1000ページ本とかバンバンだしやがって・・・
91デフォルトの名無しさん:2010/02/11(木) 21:36:52
肘で押えながら検証コード打ったりな
92デフォルトの名無しさん:2010/02/11(木) 22:08:35
>>88
そもそも、何でNot usedなのにBOOL返すようになってるんだ?
93デフォルトの名無しさん:2010/02/11(木) 22:11:51
>>92
元々 BOOL で使用されていたが
ドキュメントが糞で誰も使わなくなったから
Not used に書き直された
94デフォルトの名無しさん:2010/02/11(木) 22:19:15
VC++でヘッダーコントロールを扱っていますが、
HDITEM hdi;
SendMessage(hwnd,HDM_GETITEM,0,(LPARAM)&hdi);
sprintf(str1,"%d",hdi.cxy)
でヘッダーアイテムの幅が取得できるはずなのですが、上手くいきません
参考書はVC++逆引き大辞典です
どうしたらいいでしょうか?
95デフォルトの名無しさん:2010/02/11(木) 22:23:29
一応、FALSEを返す状況もあるんだけどな。
96デフォルトの名無しさん:2010/02/11(木) 22:44:42
HttpQueryInfoでヘッダーの内容を全部文字で見たい場合に
HTTP_QUERY_RAW_HEADERS_CRLFを指定してるのですが
どうも中に書き込まれた情報は2バイトコードになっているようです
この辺の文字コードを切り替えるにはどうすればいいのでしょうか?
9796:2010/02/11(木) 23:43:54
自己解決しました
参考にしたソースがwchar_tを前提にしてない古い物だったのが原因でした
98デフォルトの名無しさん:2010/02/12(金) 01:06:37
Windows 7 Home Premium 64bit版のPCで
Win32 APIを使ってアプリケーション製作できる?
99デフォルトの名無しさん:2010/02/12(金) 01:20:48
できる
100デフォルトの名無しさん:2010/02/12(金) 01:26:03
>>99
サンクス!助かった
101デフォルトの名無しさん:2010/02/12(金) 01:28:11
Wininet関連のプログラム書いてるんですが
勉強もかねてHTTPの要求ヘッダの中身がどうなってるかみたいのですが
どうやれば見れますかね?
102デフォルトの名無しさん:2010/02/12(金) 01:31:27
このスレで聞くってことは、パケットを見るプログラムを作りたいって話か?
103デフォルトの名無しさん:2010/02/12(金) 01:33:38
>>102
いいえ
そういうのじゃなくて2chの専ブラの通信部分ですね
http://www.monazilla.org/index.php?e=198
デバックもかねて上記のページに書かれてるようなヘッダーになってるかだけみれればいいんですが
104デフォルトの名無しさん:2010/02/12(金) 01:35:08
HttpQueryInfoで受信情報のヘッダーは見れるので
送信側も何か方法があるのかなあと思いまして
105デフォルトの名無しさん:2010/02/12(金) 02:00:54
自分で鯖を立てて送られてくる情報をみるかWireSharkのようなモニターソフトで見るのが早いですかね・・・?
106デフォルトの名無しさん:2010/02/12(金) 02:02:20
実際のデータがどうなってるかって事だろ?
パケットを見るプログラムじゃないか
107デフォルトの名無しさん:2010/02/12(金) 02:06:11
>>106
いや・・・そういう風に言われても勉強初めてすぐなのでよくわからないです
InternetOpen
InternetConnect
HttpOpenRequest
HttpSendRequest ←この段階で送るであろうデータさえ見れればよかったのですが
108デフォルトの名無しさん:2010/02/12(金) 02:14:30
しつこい!
109デフォルトの名無しさん:2010/02/12(金) 02:14:57
>>105
proxy + log
110デフォルトの名無しさん:2010/02/12(金) 02:17:25
チェックの入っているラジオボタンのウィンドウハンドルを得るにはどうすればよいのでしょうか。
SendMessageで総当たりをすればどれにチェックが入っているのか分かりますがもっと良い方法はありませんか?
ラジオボタンがチェックされた時に生じる処理の中でそのハンドルを記憶させるようにしてみたのですが、
グループが複数あった場合にそれがどのグループのボタンなのか判断させる方法がわかりませんでした。
Borland C++ 5.5.1 for Win32を使っています。
111110:2010/02/12(金) 02:20:56
すみません何か勘違いしてました。
自己解決しました。
112デフォルトの名無しさん:2010/02/12(金) 04:09:59
見た目を分かりやすくしようとラジオボタンをグループボックスで囲んだところ
ラジオボタンをクリックしたときにWM_COMMANDが発生しなくなってしまいました。
どうすれば再びそれが発生するようになりますか?
113デフォルトの名無しさん:2010/02/12(金) 06:02:24
すみません自分なりに色々調べてみたんですが解決しなかったので質問します。

ツリービューコントロールに関してなんですが、.NET には TreeNode.Level というノードの深さを取得するプロパティがあるのですが、
これに相当するようなノードの深さを取得できるような関数が標準APIにもあるのでしょうか?
それとも自分で組まないといけないのでしょうか?

ttp://msdn.microsoft.com/ja-jp/library/system.windows.forms.treenode.level(VS.80).aspx
114デフォルトの名無しさん:2010/02/12(金) 06:06:17
C++ってあるけど上の方に メモ : このプロパティは、.NET Framework version 2.0 で新しく追加されたものです。
ってあるからC++/CLIの話かね・・・

というかWTLやMFCって.netと比べるとかなり見劣りするからなあ

.net環境で作ってていきなりネイティブC++とかいくと部品の陳腐さに泣きそうになる
115113:2010/02/12(金) 06:27:51
>>114
すみません説明不足でした。PlatformSDKのことです。

第115章 ツリービューにメニューをつける
ttp://www.kumei.ne.jp/c_lang/sdk2/sdk_115.htm
↑このサイトを参考に組んでいたんですが、ツリービューの項目の深さを取得しようと思い、
調べていたところにちょうどそのページを見つけたので質問しました。
116デフォルトの名無しさん:2010/02/12(金) 08:02:58
直接は無さそうね
作るにはTVM_GETNEXTITEMかな
117デフォルトの名無しさん:2010/02/12(金) 09:40:02
>>114
修羅の国では外部コンポーネント、サービスの利用方法や足りない部品は全部自力調達ですよ( ^ω^)
先輩・・・.NETしたいです
118デフォルトの名無しさん:2010/02/12(金) 09:43:45
いいや駄目だね
お前は一生修羅の国から出さん
119デフォルトの名無しさん:2010/02/12(金) 09:44:58
でもどっとねっつはリバースしやすいからなあ
120デフォルトの名無しさん:2010/02/12(金) 09:53:39
C++のお陰でソフトウェアの進歩は10年遅れたわな
121デフォルトの名無しさん:2010/02/12(金) 10:06:37
>>120
いや C++ が糞なおかげで
Rupy や Python が生まれたと思う
C++ の出来が良かったらきっと
そいつらは生まれていなかった
122デフォルトの名無しさん:2010/02/12(金) 10:09:51
画面の解像度を取得する方法を教えてくれ
123デフォルトの名無しさん:2010/02/12(金) 10:11:20
げっとしすてむめとりくす
124デフォルトの名無しさん:2010/02/12(金) 10:11:53
125デフォルトの名無しさん:2010/02/12(金) 10:13:18
126デフォルトの名無しさん:2010/02/12(金) 10:15:47
>>125
今時のライブラリでデフォルトUTFじゃないとか死ね
127112:2010/02/12(金) 14:29:15
>>112ですがどなたか教えて頂けないでしょうか?
ソース等アップロードしました。よろしくお願いします。
http://www1.axfc.net/uploader/Sc/so/82145.zip
128デフォルトの名無しさん:2010/02/12(金) 14:54:07
悪阻
129デフォルトの名無しさん:2010/02/12(金) 14:56:22
>>127
了解
130デフォルトの名無しさん:2010/02/12(金) 19:15:49
DirectWriteなんですけど、ここのサンプルをコンパイルして実行すると、
ttp://msdn.microsoft.com/ja-jp/windows/ee426939.aspx
Ex1とEx2は開いたウィンドウを移動するかアイコンにして戻すかしないと文字が出ないし、
Ex3は黒ベタで何も出ないです。環境はWin7 x64なんですが、ちゃんと表示されてる人います?
131113:2010/02/12(金) 19:53:16
>>116
>>117
やはり自力で組まないといけないんですね
ぬこにつられて修羅の国に迷い込んでしまったようです
ありがとうございました
132デフォルトの名無しさん:2010/02/12(金) 20:04:07
.Netだとオブジェクトを動的に作る際名前に階層を盛り込んだけどなあ
とC++のTreeView調べてたらアイテムの構造体ってろくな情報埋め込めないなw
typedef struct _TV_INSERTSTRUCT {
HTREEITEM hParent;
HTREEITEM hInsertAfter;
TV_ITEM item;
} TV_INSERTSTRUCT, FAR* LPTV_INSERTSTRUCT;

自分で同じような複製ツリーを作ってそっちで管理してみたら?
133デフォルトの名無しさん:2010/02/12(金) 20:08:55
typedef struct _TV_ITEM { tvi
UINT mask;
HTREEITEM hItem;
UINT state;
UINT stateMask;
LPSTR pszText;
int cchTextMax;
int iImage;
int iSelectedImage;
int cChildren;
LPARAM lParam;
} TV_ITEM, FAR *LPTV_ITEM;
こっちもあるけどノード登録の際の連絡用とか検索ででてくるなあ
134デフォルトの名無しさん:2010/02/12(金) 20:34:17
135デフォルトの名無しさん:2010/02/12(金) 20:41:52
>>132
おいこらTVITEMの中身見ろw
大体win32がヘボかったら.netもヘボくなるわけで・・・どっちも同じコモンコントロールなわけで
136113:2010/02/12(金) 21:10:43
>>132
>>133
>>134
>>135
親:0 子:1 孫:2 という深度レベルを項目ごとのTVITEMのlParamに格納すればできそうですね!
本当にありがとうございました!
137デフォルトの名無しさん:2010/02/13(土) 21:17:25
タブコントロールは CreateWindowEX で作成するとのことですが、
メイン・ウィンドウのメニューから[設定]なとの項目をクリックして、
タブコントロールのウィンドウをポップ・アップさせる場合の手順は、

1)CreateWindowEX でタブ・コントロールの親ウィンドウ (hwndParent) を作成.
2)hwndParent の子ウィンドウとして CreateWindowEX でタブ・コントロールを作成.

するという手順になると思うのですが、ここで、タブ・コントロールを操作する
メッセージなどを処理するプロシージャ−が必要になります。ところが、
CreateWindowEX にはご存知のとおりプロシージャ−関数を受け取る引数はありません、、、

ということは、hwndParent にメッセージ・ループを作らざろうえず、メイン・ウィンドウの
メッセージ・ループと”競合?”してしまうので、

A)hwndParent はスレッドを作って、そこでメッセージ・ループを回す???

という、プログラミング・スタイルになると思うのですが、違いますが???
当方、初心者でして、ズバリご指摘おねがいします。

タブ・コントロールに限らず、ダイアログ・テンプレートを使わずに
メイン・ウィンドウからコントロールの Owned ポップアップ・ウィンドウを開く場合
の手順は、どうなるのでしょう???
138デフォルトの名無しさん:2010/02/13(土) 21:42:53
設定ならプロパティシート使った方が簡単だけど、自分で作る場合の話なら

タブコントロールからのメッセージはその親ウィンドウにWM_NOTIFYとして飛んでくるので
すべて親ウィンドウのプロシージャで処理できる

それと、ウィンドウプロシージャはCreateWindowExでなくウィンドウクラスで設定してそれをCreate〜に渡してる
タブコントロールのウィンドウプロシージャはWindowsが持ってるのでそっちに全部お任せ
これはタブコントロールに限らずどんなコントロールでも同じなので
プログラムを作る側は親ウィンドウのプロシージャのことだけ考えればいい
139デフォルトの名無しさん:2010/02/13(土) 22:05:23
リストボックスをウィンドウのサイズが変更されても常に中央に配置されるようにしたいのですが
どうしたらいいのですか?
140デフォルトの名無しさん:2010/02/13(土) 22:09:15
ありがとうございます。
『タブコントロールからのメッセージはその親ウィンドウにWM_NOTIFYとして飛んでくる』
とのことですが、タブコントロール単独でポップ・アップ・ウィンドウをつくれるのでしょうか?

タブコントロール単独でポップ・アップさせようとすると移動もサイズ変更も閉じることもできません、、、
タブコントロールを子ウィンドウとしてポップ・アップさせると、メッセージはタブコントロールの
親に行くのですが、その「親」≠「メインウィンドウ」なので、タブコントロールの「親」に、メッセージを
受け取るプロシージャ−が必要になるのではないですか???

自分はなにか、根本的なところで勘違いをしていると感じるのですが、それが「何か」がわからない
ところが、トホホな現状です。 (T皿T)
141デフォルトの名無しさん:2010/02/13(土) 22:10:00
ウィンドウのサイズを元に座標を算出してMoveWindowすればよかろうに
142デフォルトの名無しさん:2010/02/13(土) 22:14:27
>>140
親ウィンドウはあなたが>>137で言っていたhwndParentだよ
メインウィンドウを親としてhwndParentを作ってタブをhwndParentの子ウィンドウにする
hwndParentを自分でウィンドウクラスを登録するなりして作成すれば、そのウィンドウプロシージャは自分で管理できる
143デフォルトの名無しさん:2010/02/13(土) 22:17:57
つーか、どこのウィンドウアプリでタブがポップアップするんだよ?
そんなのありえないことくらい、普通わかるだろ?
144デフォルトの名無しさん:2010/02/13(土) 23:36:27
……、すいませんでした。


自分が作ろうとしていたのは、『プロパティシート』であって、『タブコントロール』では
ありませんでした、、、、、、 orz。

どうもおかしい、なにか変だと思っていましたが、『プロパティシート』を『タブコントロール』と
”根本的に勘違い”してました。お騒がせしました。
145デフォルトの名無しさん:2010/02/14(日) 04:36:24
レジストリの値が変更されたことを知るAPIは有りませんか?
146デフォルトの名無しさん:2010/02/14(日) 04:37:26
APIHook
147デフォルトの名無しさん:2010/02/14(日) 04:48:02
148デフォルトの名無しさん:2010/02/14(日) 11:34:44
RegNotifyChangeKeyValue
149デフォルトの名無しさん:2010/02/14(日) 12:42:06
そのてのapi hookってx64でも使えるっけ?
150デフォルトの名無しさん:2010/02/14(日) 16:52:46
つかえるみたいよ
151デフォルトの名無しさん:2010/02/14(日) 21:23:59
マウスカーソルを砂時計にしたいのだけど

HCURSOR cur = SetCursor(LoadCursor(NULL,IDC_WAIT));

とやってもカーソルがかわらないです。
152デフォルトの名無しさん:2010/02/14(日) 22:36:15
WM_SETCURSOR
153デフォルトの名無しさん:2010/02/14(日) 23:34:42
HCURSOR cur = SetCursor(LoadCursor(NULL,IDC_WAIT));
したあとはWM_SETCURSORでreturn 0;するようにしたけど
状況かわらずでした。
154デフォルトの名無しさん:2010/02/14(日) 23:38:35
>カーソルがウィンドウ上にある間ずっと表示される
>ようにカーソルを設定する場合には、指定されたウ
>ィンドウのウィンドウクラスで設定されるクラスカ
>ーソルが 0 (NULL) になるようにします。クラス
>カーソルが 0 (NULL) でない場合、システムはカー
>ソルが動かされるたびにクラスカーソルに戻します。
http://yokohama.cool.ne.jp/chokuto/urawaza/api/SetCursor.html
155デフォルトの名無しさん:2010/02/15(月) 00:11:43
>>154
デフォルトで表示するカーソルはなしにしておいて
WM_SETCURSORの都度表示するカーソルを任意に指定するってことね
脳みそ足りなくて理解に時間がかかりますた
156デフォルトの名無しさん:2010/02/15(月) 01:08:34
脳みそとクソ知識が足り過ぎていて理解の邪魔をしてるんだろな
157デフォルトの名無しさん:2010/02/15(月) 19:59:11
CPUのインストラクションキャッシュをクリアするような
APIがあったと思うんですが名前を忘れてしまいました。
ご存じの方いらっしゃいませんか?
やりたいことは実行時にコードを書換えながら実行するというようなことです。
158デフォルトの名無しさん:2010/02/15(月) 20:04:45
FlushInstructionCache
159デフォルトの名無しさん:2010/02/15(月) 20:10:03
プロセスハンドルからメモリに展開してるプロセスのサイズとかってどうやって取得していますか?
160デフォルトの名無しさん:2010/02/15(月) 20:10:53
>>158
そのまますぎて吹いた orz
ありがとうございます
161デフォルトの名無しさん:2010/02/15(月) 20:17:10
>>159
ヒープのスナップショット取って合算するくらいしか思いつかない
162159:2010/02/15(月) 20:33:49
>>161
別なアプローチがあるかと思って聞いたのですが、
やはりそれしかないですか

ありがとうございました。
163デフォルトの名無しさん:2010/02/15(月) 23:11:06
エディッタなどの編集画面は、RichEditコントロールとかが使われているのでしょうか?
それともウィンドウに直接”描画?”してるのでしょうか??

後者の場合、マウスでハイライト選択するのは、どうやって実現しているのでしょうか。
マウスの押し下げメッセージを捕らえるとして、どんな関数を使うのでしょう?
164デフォルトの名無しさん:2010/02/15(月) 23:23:14
SPY++やフックでぐぐれ
165デフォルトの名無しさん:2010/02/15(月) 23:56:38
CreateProcessで生成したときのLPPROCESS_INFORMATION構造体のプロセスIDで
CreateToolhelp32SnapshotのTH32CS_SNAPMODULEを指定して実行したら
エラーになるんですが、何か心あたりがある方はいますか?
166デフォルトの名無しさん:2010/02/16(火) 00:02:54
>>163
HTMLでクリッカブルマップ辺りを使ったページを
作ってみると「霊感(インスピレーション)」を得れるかも
167デフォルトの名無しさん:2010/02/16(火) 00:03:56
他人に聞く前にOSに聞け。
168デフォルトの名無しさん:2010/02/16(火) 11:12:25
>>163
マウスのY座標からそこが何行目かを計算する (例えばフォントの高さで割るとか)
マウスのX座標と行数からそこが何文字目かを計算する (例えば行中の文字幅を1文字ずつ数えるとか)
求めた位置に基づいて選択範囲を保持する変数を変更し、その部分を再描画する
各文字を描画するとき選択範囲内だったらその文字は背景色付きで描き、選択範囲外だったら普通に描く
およそこんな感じ
169163:2010/02/16(火) 15:07:49
ありがとうございます。
…、すごい”低レベル”なことをするんですね。C言語ではじめて文字列操作を
やろうとした頃を思い出しました。
170デフォルトの名無しさん:2010/02/16(火) 15:12:54
低レベルも何も、隠匿されてるだけであらゆる環境の同じ目的の関数は、
全て同じような手順で実現されてるんじゃないの?
171デフォルトの名無しさん:2010/02/16(火) 15:26:02
Win32アプリケーションでAllocConsoleを使わずにコンソール画面を表示する方法はありますか?
172デフォルトの名無しさん:2010/02/16(火) 15:58:32
知らないならレスしないで下さい。ウザイだけです。。。
173デフォルトの名無しさん:2010/02/16(火) 16:07:04
>>172
そういう無意味に煽るだけのレスは、せめてどのレスに向けたものか示しておけよ。
174デフォルトの名無しさん:2010/02/16(火) 16:13:23
>>173
知らないならレスしないで下さい。ウザイだけです。。。
175デフォルトの名無しさん:2010/02/16(火) 16:19:25
>>171
コンソールアプリを起動してAttachConsole
176デフォルトの名無しさん:2010/02/16(火) 23:06:55
>>175
ありがとうございました。
177デフォルトの名無しさん:2010/02/17(水) 15:33:54
editウィンドウをただの黒い線の枠じゃなく
立体的なデザインにするには?
178デフォルトの名無しさん:2010/02/17(水) 15:56:11
テキストエディタ作ると結構奥が深いんぜ
最大の敵は垂直スクロールバーとウィンドウ幅に合わせた行折り返し
179デフォルトの名無しさん:2010/02/17(水) 17:20:51
えっ
180デフォルトの名無しさん:2010/02/17(水) 18:40:12
ええっ
181デフォルトの名無しさん:2010/02/17(水) 20:20:25
・・・そんなに難しいか?
182デフォルトの名無しさん:2010/02/17(水) 20:21:48
テキスト編集は編集中のデータ管理だろう
まあListと同じで部品化すれば問題ないか
183デフォルトの名無しさん:2010/02/17(水) 22:55:56
メモ帳みたいにテキストボックス貼り付けるだけなら簡単だが、
秀丸みたいに内部データ管理から画面描画まで全部作って実用的な速度で動かすのはかなり大変
まあ最近はCPUが速いしメモリも大量に積んでるから、そういう環境限定なら難易度は下がるけど
184デフォルトの名無しさん:2010/02/17(水) 23:30:23
逆。難易度は逆に上がる。手に馴染むのが決め手なコントロール系
の製品開発は、遅いプロセッサで負荷をかけた状態でテストされ
プロトタイプが出来てからも何回も書き直される。
速いマシンで製品レベルのものが作れるのは余程の経験者か天才。
185デフォルトの名無しさん:2010/02/17(水) 23:35:36
お前らが作ったことが無いのは分かった
186デフォルトの名無しさん:2010/02/17(水) 23:57:10
俺ちょうど今作っててやとスクロールできるようになったぐらいなんだけど
>>178の言ってることはわかるような気がするよ、場合分け増えるし

たとえば一行が長くて折り返しがある行の時に右端にカーソルがある時
折り返す前の行の右端と折り返した後の行の左端は(ドキュメント的には)同じ位置
しかし画面では別の位置なのでカーソルを移動させたときに
前行の一文字手前で次の行にいくか、
次行の先頭行の最初の位置にカーソルがいかないようにするか
改行で表示行が変わってるときとでは動作が異なるから場合分けが増える

この辺ソフトによって動作が違ってて、GreenPadは後者、Terapadは前者だった
187デフォルトの名無しさん:2010/02/18(木) 07:41:17
両方に表示しちゃえばいいじゃない
188デフォルトの名無しさん:2010/02/18(木) 08:43:33
貴様らスレ違い
189デフォルトの名無しさん:2010/02/18(木) 17:22:09
スレ違いを承知で質問です。
(A) と (B) で見る AppriData構造体のデータは、整合性が取れてると思うのですが違いますか??
***** Main.c ****
struct AppriData;
main() {
  funcA();
}
*****************

**** funcA.c ****
extern struct AppriData;
funcA(VOID) {
  AppriDataを処理;     (A)
  ……
  funcB();
}
*****************

**** funcB.c ****
extern struct AppriData;
funcB(VOID) {
  ……
  AppriDataを処理;     (B)
}
*****************
190デフォルトの名無しさん:2010/02/18(木) 17:43:10
>>189
スレ違いと分かってて質問するなよ
191デフォルトの名無しさん:2010/02/18(木) 18:35:31
すいません、、、他所のスレがあまりに下らないので、みなさんにお願いします。
192デフォルトの名無しさん:2010/02/18(木) 18:45:01
m9(^Д^)プギャーーーッ
193デフォルトの名無しさん:2010/02/18(木) 18:57:09
appliだろjk
194デフォルトの名無しさん:2010/02/18(木) 20:39:03
まずは変数宣言しろよ
195デフォルトの名無しさん:2010/02/18(木) 21:38:49
>>189
>整合性が取れてる
の意味がわかりません
196デフォルトの名無しさん:2010/02/18(木) 22:09:57
構造体はヘッダに書いて include 汁
197デフォルトの名無しさん:2010/02/19(金) 01:47:47
もうだめだこのスレ
198デフォルトの名無しさん:2010/02/19(金) 08:55:47
まじでか
199デフォルトの名無しさん:2010/02/19(金) 09:50:19
スレの存在自体無理がある
まともな質問の回答はMSDNに書いてある
MSDNに回答が無い質問は環境依存
200デフォルトの名無しさん:2010/02/19(金) 10:02:06
まじでか
201デフォルトの名無しさん:2010/02/19(金) 11:28:26
>>199

それマジで言ったん?ソースあんならすぐ出せ
マジなら2ちゃんねら総力を上げて潰すが
202デフォルトの名無しさん:2010/02/19(金) 11:30:08
MSDNを潰すのは勘弁してくれw
203デフォルトの名無しさん:2010/02/19(金) 11:31:54
総力ってお前誰だよ
今ふと思ったが
妙に「ねらー」とか「2ちゃんねら」とか言うの多いな
なんつうかν速慣れしてなそうな感じの
204デフォルトの名無しさん:2010/02/19(金) 11:36:40
一応突っ込んどくがそれ最近流行ってるコピペなんだぜ・・・釣りだったかな?
205デフォルトの名無しさん:2010/02/19(金) 11:44:39
しらんかった。
206デフォルトの名無しさん:2010/02/19(金) 11:53:21
一応突っ込んどくがそれ最近どころか数年前に流行ったコピペなんだぜ・・・釣りだったかな?
207デフォルトの名無しさん:2010/02/19(金) 12:10:12
>>201,>>203-204の流れまでがコピペなんだぜ・・・釣りだったかな?
208デフォルトの名無しさん:2010/02/19(金) 12:11:20
最初に言った人はマジなんだろうな
209デフォルトの名無しさん:2010/02/19(金) 13:15:18
はじめに見たのは1年半くらい前だった希ガス
210デフォルトの名無しさん:2010/02/19(金) 17:27:27
一応突っ込んどくがそれ最近流行ってるコピペなんだぜ・・・釣りだったかな?
211デフォルトの名無しさん:2010/02/19(金) 18:42:30
「総力を上げて潰す」は2007年7月頃に流行
212デフォルトの名無しさん:2010/02/19(金) 18:49:20
ウィンドウサイズの変更時などノ時
ステータスバーに表示された文字が再描画されないんですが
どうしたらいいの?
213デフォルトの名無しさん:2010/02/19(金) 21:44:36
214デフォルトの名無しさん:2010/02/19(金) 21:45:57
おっ、書けた。

それでは質問させてください。
Windows Vista以降で、タイトルバーに3つのシステムボタンに加えて独自のボタンを自分のアプリのウィンドウに表示したいのですが、
どういう風に書けばいいでしょうか?
C#で書いてますが、C/C++の書き方で構いません。
215デフォルトの名無しさん:2010/02/19(金) 22:14:50
WM_NCPAINTで描く。
216デフォルトの名無しさん:2010/02/19(金) 22:18:40
>>215
それは最初に試しましたが、
Aeroが有効時にはDefWindowProcの呼び出しで完全に描画されてしまい、
その後から書いても書き込んだ内容が見えません。
217デフォルトの名無しさん:2010/02/19(金) 22:27:55
keybd_eventでalt+numpadの文字入力はできないの?
218デフォルトの名無しさん:2010/02/19(金) 22:57:08
>>217
Altキーはメニューが受け取るようにWindows自体が作られているから、
そういうショートカットキーは避けた方がいいんじゃね?
219デフォルトの名無しさん:2010/02/19(金) 22:59:19
>>214
BITMAP作ってリソース読み込めばいいんじゃない?
220デフォルトの名無しさん:2010/02/19(金) 23:01:53
>>219
おっしゃることがよく分かりません。
タイトルバーをなるべくOS標準のまま、必要最小限のカスタマイズをしたいのですが。
描画さえちゃんとできれば、クリックの受け取りはさほど難しくなさそうです。
221デフォルトの名無しさん:2010/02/19(金) 23:30:54
あーすまん
ツールバーと勘違いしてた
222デフォルトの名無しさん:2010/02/20(土) 00:18:36
>>216
http://msdn.microsoft.com/en-us/library/bb688195(VS.85).aspx
これの「Drawing in the Extended Frame Window」のところ。
DWM (Aero)環境下で、ウィンドウ全体をクライアント領域にするという方法がある。
これで、ウィンドウ全体を好きに描画できるようになる。
引き替えに、WM_NCHITTESTを自分で処理しなければいけないのが面倒。

その記事にもあるように、MS Office 2007も
これを使ってタイトルバー部分に食い込んで描画している。
223デフォルトの名無しさん:2010/02/20(土) 00:47:18
GDI製のボーダーを持たないWindow(ガクブチ)を作って
独自のボーダー(ボタン付き)にする。
クライアント領域は下のウィンドウをそのまま
書く。(Timerで定期的に下のウィンドウの更新を
チェック。自分のウィンドウに来たメッセージは
下のWindowに当然SEND)
この方法ってWindowが動いた時とかサイズが変わった
時、ちょっとみっともないこともなくもないけど
手軽でイくね?(もちょっとイイ小技もあるらしいが)
224デフォルトの名無しさん:2010/02/20(土) 02:25:01
>>222
おおっ! これぞドンピシャ!
しかし紹介いただいたサンプルを動かしてみてるところですが、
挙動が摩訶不思議でまだ大意がつかめてません。
(特にウィンドウメニューと組み合わせると……)
コードだけじゃなくて記事本文も読まないといけないみたい。
でもこの延長線上でなんとかなりそうです。フレームの挙動がちゃんと変わってるし。

>>223
そういう方法もありだとは思います。GOMプレーヤーとかスキンを活用する系統では
そちらの方が逆にスマートかもしれないし。
でも面倒くさそう……。
今予定してるのはボタンを1個追加するだけなので。
225デフォルトの名無しさん:2010/02/20(土) 12:28:03
全角文字の1バイト目かどうかを判断するAPIを教えてください
226デフォルトの名無しさん:2010/02/20(土) 12:30:40
文字コードは?
227デフォルトの名無しさん:2010/02/20(土) 13:01:17
CharNext(p) - p >= 2
228デフォルトの名無しさん:2010/02/20(土) 13:09:47
しふとJISですぅ
229デフォルトの名無しさん:2010/02/20(土) 13:16:57
S-JISなんてAPIいらねーだろ
半角はアスキーコード互換、全角用もアスキーコードの空き部分の
コードを利用してるだけなんだし
230デフォルトの名無しさん:2010/02/20(土) 13:38:43
IsDBCSLeadByte
IsDBCSLeadByteEx
231デフォルトの名無しさん:2010/02/20(土) 13:41:37
>>230
ありがとうございます。>>229のクズとは大違いで助かりました。
232デフォルトの名無しさん:2010/02/20(土) 13:57:30
複素数を表現するクラスMultiElemNumを作りました。
APIでは、どうするのです。か
233デフォルトの名無しさん:2010/02/20(土) 14:18:50
何をどう答えればよいのです。か
234デフォルトの名無しさん:2010/02/20(土) 15:39:15
単語「API」の用例と
あとは・・正しい日本語の使い方日本語をお願いします。
235デフォルトの名無しさん:2010/02/20(土) 16:58:41
>>232
MultiElemNumが英語になっていない。Complexが正しい。
236デフォルトの名無しさん:2010/02/20(土) 18:17:54
printfだって英語になってないがな
もしかして「適切な訳語」のことを言いたかったのか
237デフォルトの名無しさん:2010/02/20(土) 18:29:02
>>225
マルチすんな
238デフォルトの名無しさん:2010/02/20(土) 18:29:17
わかってるんなら、わざわざ聞くなよ。
239デフォルトの名無しさん:2010/02/20(土) 18:36:08
開き直ってその態度。笑っちゃうね。笑わないけど。
240デフォルトの名無しさん:2010/02/20(土) 18:37:46
>>225>>232は同じ人間のような気がする
241デフォルトの名無しさん:2010/02/20(土) 18:38:10
何言ってんだ。
242デフォルトの名無しさん:2010/02/20(土) 18:41:43
243デフォルトの名無しさん:2010/02/20(土) 18:44:32
条件反射的に一言多いというかなんとうか
そういう人間がそうそう近い時間に複数来るってのは無いしな
244デフォルトの名無しさん:2010/02/20(土) 18:47:08
>>242
241は239当てな。
245デフォルトの名無しさん:2010/02/20(土) 18:48:50
何言ってんの
246デフォルトの名無しさん:2010/02/20(土) 18:51:26
条件反射的に一言多いというかなんというか
そういう人間がそうそう近い時に複数来るってのは無いしな
247デフォルトの名無しさん:2010/02/20(土) 18:52:09
>>245
いや、「開き直って」とか言われたから、何考えてるんだろうと思って、241のレスしただけのこと。
248デフォルトの名無しさん:2010/02/20(土) 18:53:22
ではやはり上げておくべきですね。
249デフォルトの名無しさん:2010/02/20(土) 18:56:45
いいからAPI出せや
250デフォルトの名無しさん:2010/02/20(土) 19:06:38
APIを出す話だったのか
251デフォルトの名無しさん:2010/02/20(土) 19:11:07
わろた >>249は天然
252デフォルトの名無しさん:2010/02/20(土) 19:19:06
ふぁびょおおおおってんなよ
253デフォルトの名無しさん:2010/02/20(土) 19:21:56
>>252
API
254デフォルトの名無しさん:2010/02/20(土) 19:49:39
>>253
API
255デフォルトの名無しさん:2010/02/20(土) 20:02:23
>>254
あぴ
256デフォルトの名無しさん:2010/02/20(土) 20:16:19
>>255
AIP
257デフォルトの名無しさん:2010/02/20(土) 20:41:53
A・P・I!A・P・I!
258デフォルトの名無しさん:2010/02/20(土) 20:42:36
次世代型匂い付きAPI
259デフォルトの名無しさん:2010/02/20(土) 20:43:14
>>249
そういうのはID出る板でスレ立ててやれ
ここじゃ一生apiなんて出ないぞ
260デフォルトの名無しさん:2010/02/20(土) 22:01:04
↑ちなみにこれは「IDに〜〜を出す」系のスレに掛けている
261デフォルトの名無しさん:2010/02/21(日) 05:28:41
質問です。

LPCWSTR型の文字列を返却する関数を、
TextOut関数で画面に表示すると、文字化けしてしまいます。

問題となっている関数の中身をコピーして、

TextOut関数の存在する関数の中にペーストし、

返却する変数をそのまま表示するようにした場合は、正しく表示されます。

色々試行錯誤しましたが、見当が付かないので教えていただけるとありがたいです。


---参考 問題の関数---

LPCWSTR get_chart_size(void){
  char dataBuff[] = "alphabet0123カタカナひらがな漢字";
  wchar_t pwsz[sizeof(dataBuff)*2];

  std::locale::global(std::locale("japanese"));

  MultiByteToWideChar(CP_ACP, 0, dataBuff, strlen(dataBuff)+1, pwsz, sizeof(pwsz));

  LPCWSTR Data = pwsz;

  return Data;
}
262デフォルトの名無しさん:2010/02/21(日) 05:33:41
関数出たら解放されてしまってるんだろう
malloc 汁
263デフォルトの名無しさん:2010/02/21(日) 05:34:14
char dataBuff
これはマルチバイト

wchar_t pwsz
これはワイド文字

文字コードが違う

MultiByteToWideChar
これはマルチバイトからワイド文字に変換する関数?
264デフォルトの名無しさん:2010/02/21(日) 05:36:00
>>261
pwszは非静的な局所変数なので、returnした時点で無効になる。
265デフォルトの名無しさん:2010/02/21(日) 05:37:42
呼ぶ方
  wchar_t pwsz[sizeof(dataBuff)*2];
  pwsz = get_chart_size(pwsz, sizeof(pwsz));
  TextOut(hogehoge);

呼ばれる方
LPCWSTR get_chart_size(wchar_t *pwsz, size_t size){
  char dataBuff[] = "alphabet0123カタカナひらがな漢字";
  std::locale::global(std::locale("japanese"));
  MultiByteToWideChar(CP_ACP, 0, dataBuff, strlen(dataBuff)+1, pwsz, size);
  return (LPCWSTR)pwsz;
}
266デフォルトの名無しさん:2010/02/21(日) 05:57:19
というか、char、wchar、TCHARはちゃんと区別しようね。みんな。
267デフォルトの名無しさん:2010/02/21(日) 08:23:56
       /|
       |/__
       ヽ| l l│<ハーイ
       ┷┷┷
268デフォルトの名無しさん:2010/02/21(日) 09:05:42
間違えた、wchar_tだった
269デフォルトの名無しさん:2010/02/21(日) 12:42:28
>>261
スレ違い。C言語質問スレに池
270デフォルトの名無しさん:2010/02/21(日) 13:01:11
以下のような例で、vdCreateToolBar(VOID) と hdCreateToolBar(HWND hwndParent) とで
関数の中身は全く同一で、親ウィンドウのハンドルにグローバル変数を使うのと、関数の
引数を使うのとでは、作成されるツールバーの表示が (1) と (2) で異なるのですが、
なぜでしょうか???
HWND g_hMain;
WinMain() {
  HWND hMain;
  hMain = CreateWindowEX();
  g_hMain = hMain;
  vdCreateToolBar();-------------------(1)
  hdCreateToolBar(hMain);--------------(2)
  …
}
vdCreateToolBar(VOID) {
  g_hMain; グローバル変数でツールバー作成 (1)
}
hdCreateToolBar(HWND hwndParent) {
  hwndParent; 引数を使ってツールバー作成 (2)
}
271デフォルトの名無しさん:2010/02/21(日) 13:25:42
ちなみに、vdCreateToolBar(VOID) と hdCreateToolBar(HWND hwndParent) は,
WinMain() とは別の C ファイルです。

vdCreateToolBar(VOID) の g_hMain は extern で取得してます。
272デフォルトの名無しさん:2010/02/21(日) 13:26:51
vdCreateToolBarとhdCreateToolBarの内容が違うから
273デフォルトの名無しさん:2010/02/21(日) 13:30:43
デバッガで動きを比べてみな。
274デフォルトの名無しさん:2010/02/21(日) 14:30:18
キャストしたらどうなりますか?APIを教えてくだしあい
275デフォルトの名無しさん:2010/02/21(日) 15:30:42
extern "C" {} の内か外かで、結果が違ってくるとかありますか?
276デフォルトの名無しさん:2010/02/21(日) 15:33:16
呼び出し規約の不整合があると、どうなるんでしょう??
277デフォルトの名無しさん:2010/02/21(日) 15:57:28
>>274
キャスト用のAPIなんてない

>>275
ある可能性は否定できないんじゃない?

>>276
最悪の場合、期待どおりの動作にならない
278デフォルトの名無しさん:2010/02/21(日) 16:01:18
なんでキャストがでてくるんだ
キャストなんて
「俺(プログラム書いてる人)は型が違うのわかってて書いてる
からお前(コンパイラ)は気にしなくていいよ。」と教えてるだけなのに
(厳密にはいろいろあるようだが
279デフォルトの名無しさん:2010/02/21(日) 16:46:44
たまに>>278みたいな対して上手くもない例え話を載せてる入門書ってあるよね!(* ゜∀゜)ムッハー!!
280デフォルトの名無しさん:2010/02/21(日) 16:51:06
>>279
事実そうじゃん
関数の引数でconst char* hogeとかやるけどあれだって
書き換えするようなコードを書かないようにする安全策なだけだし
アセンブラレベルで考えればconst とか知ったことじゃねえって
感じだしなあ
281デフォルトの名無しさん:2010/02/21(日) 16:55:52
「俺」とか「お前」にご丁寧に括弧書きで想定する対象を書いてるのがダサいねぇ
人間が読むのに、わざわざキャストしてどうすんの
282デフォルトの名無しさん:2010/02/21(日) 17:27:59
キャストするAPIがないとか(笑)
283デフォルトの名無しさん:2010/02/21(日) 17:29:25
>>282
あるなら紹介してあげなよ。
284デフォルトの名無しさん:2010/02/21(日) 17:40:11
>>281
俺は逆で型変換でキャストなしソースのほうが読みにくくて初心者乙だなぁ
コンパイラの警告レベル上げたとたん警告が何百も出てくるとかだせぇってなる
285デフォルトの名無しさん:2010/02/21(日) 17:44:22
何言ってんだお前
286270:2010/02/21(日) 17:44:25
270 ですが、xxCreateToolBar() で関数が引数をとる形にすると、グローバル変数でも
引数渡しでも、ツールバーの動作が”不安定?”になります。

原因のヒントだけでも、ないでしょうか…、、、、
287デフォルトの名無しさん:2010/02/21(日) 17:45:36
知るかハゲ
ソースもなんも出さずに。
288デフォルトの名無しさん:2010/02/21(日) 17:48:23
すべてAPIが悪い
289デフォルトの名無しさん:2010/02/21(日) 17:56:09
APIが何の略かも知らないくせに
290デフォルトの名無しさん:2010/02/21(日) 17:57:15
あぴのせいにするな!大抵手落ちは自分にあるんだ!
291デフォルトの名無しさん:2010/02/21(日) 18:00:02
そうですねWindowsに欠陥があるわけないですね^^
292デフォルトの名無しさん:2010/02/21(日) 18:04:48
こういうキチガイがマジ多くて困る。
293デフォルトの名無しさん:2010/02/21(日) 18:08:15
>>270>>271の情報だけで原因を特定できるエスパーなんていないだろ
294デフォルトの名無しさん:2010/02/21(日) 18:10:34
こういうキチガイがマジ多くて困る。
295デフォルトの名無しさん:2010/02/21(日) 18:14:41
  ▄▄      ▄▄▄     █  ▄█
▄██▄▄   ▄▄▄▄▄  ▀▀▀▀▀▀█▄▄▄▄▄  █
▄█▄▄▄▄  ▀   █   ▀▀▀▀▀▀  █    █
 █▄         █   ▀▀▀▀ ▀▀▀█▀▀▀ █
  █▄  █    ▄█   █▀▀█    █    █▄
   ▀▀▀   ▀▀▀    ▀▀▀▀    ▀     ▀▀
    ▄▄▄▄▄▄      ▄▄▄
 ▀▀▀▀ █▀▀ ▀▀▀▀▀█▀    █
     █▀        █    ▀▀█▀      ▀▄
     █         █▀▀▀   █   █▄   ▀
     █▄▄▄      █  ▄▄▄      ▀▀
               ▀    ▀▀▀
296デフォルトの名無しさん:2010/02/21(日) 18:17:06
vbとhdが何の意味なのかわかればエスパーが出てきてくれるかもしれん、ちょっと気になった
297デフォルトの名無しさん:2010/02/21(日) 18:17:56
Visual Basic
298デフォルトの名無しさん:2010/02/21(日) 18:23:23
あげとくよー
299デフォルトの名無しさん:2010/02/22(月) 00:31:39
あげた途端レスストップとかw
300デフォルトの名無しさん:2010/02/22(月) 00:40:04
一通り語り終わった後に上げるのが悪い
301デフォルトの名無しさん:2010/02/22(月) 09:01:37
VerticalとHorizontalだろ……常考
302デフォルトの名無しさん:2010/02/22(月) 09:48:55
p
303デフォルトの名無しさん:2010/02/23(火) 01:52:16
GDI+でアルファ値を含むbmpファイルをロードして描画すると
透明になるべき部分が真っ黒になってしまいます。
Image::GetPixelFormat()でARGBではなくRGB形式となってました。

LoadImageで読み込んだ後、GetObjectで生データを取り出して
ARGB形式での生成も試したのですが
生成はできたもの描画ができない状態です。

LoadImageとAlphaBlendではうまくできたのですが‥‥
GDI+でアルファ値のbmpは駄目なのでしょうか?
304デフォルトの名無しさん:2010/02/23(火) 01:55:02
bmpの32bitはそもそもリザーブになってるはず
本気でアルファを考えるならpngを読ませないとだめなんじゃないの?
305デフォルトの名無しさん:2010/02/23(火) 01:56:27
>bmpの32bitはそもそもリザーブになってるはず
bmpの32bitのアルファにあたる部分はそもそもリザーブになってるはず
306デフォルトの名無しさん:2010/02/23(火) 02:54:46
>>303
そもそもARGBなフォーマットがBITMAP形式では定義されてない。
307デフォルトの名無しさん:2010/02/23(火) 03:22:16
ビットマップにアルファは仕様外って事でしょうか。
ヘッダをBITMAPV4HEADERにしてもGDI+では駄目でした。
LoadImage/AlphaBlendを使うか、GDI+/pngで行く事にします。
308デフォルトの名無しさん:2010/02/23(火) 04:19:49
BITMAPがアルファをサポートしたとか聞いたことないしなあ
vistaとか7のペイントは知らんけど、xpのペイントはアルファをきっちり潰してくれるしな・・・
そういう状況を見るとサポートしてないと考えるしかないだろ
それにpngがあるんだしわざわざbmpがサポートする必要もないしな
309デフォルトの名無しさん:2010/02/23(火) 08:41:52
一般的な画像で透明度を持ってるのってgifかpngだけだろ。
ビットマップの場合は「この色だけ描画しない」って指定してやって、
画像側ではなくアプリケーション側で透明度を調節するタイプじゃね?
310デフォルトの名無しさん:2010/02/23(火) 10:15:51
>>309
カラーキーは別に後でも指定できるはずだよ
一時期のゲームなのどでは原色の緑をカラーキーに使ったりしてたはず
311デフォルトの名無しさん:2010/02/23(火) 11:23:12
フォームを最善面に表示するAPIを教えてください
312デフォルトの名無しさん:2010/02/23(火) 11:36:55
もういいです役に立たないクズ共だなあ
313デフォルトの名無しさん:2010/02/23(火) 11:38:46
フォームを最善面に表示するAPIを教えてくださいを解決するAPI

つ ぐぐれカス
314デフォルトの名無しさん:2010/02/23(火) 12:34:41
ここって>>313みたいなゴミしかいないのかな?
315デフォルトの名無しさん:2010/02/23(火) 13:11:53
>>314
つ 鏡
316デフォルトの名無しさん:2010/02/23(火) 13:29:14
レス乞食乙
317デフォルトの名無しさん:2010/02/23(火) 19:24:13
GDIにおけるビットマップの扱いがWin3.1の頃と変わってないんですね‥‥
ペイントが出力するファイルもWin3.1のビットマップ形式でした。

BITMAPV4HEADER.bV4AlphaMask
BITMAPV5HEADER.bV5AlphaMask

Win9xの時からこういうのがあったもんで、てっきりOKかと思ってました。
腑に落ちなかったので、あれからいろいろ試していましたが
自前でbmpファイルを読み込み、生データをARGB形式として
直接GDI+に食わす方法が一番でした。
318デフォルトの名無しさん:2010/02/23(火) 19:40:36
>>317
別にそれでいいというのなら止めはしないけど、
正しい方法が分かってるなら正しい方法を採った方がいいよ。

BITMAPがARGBを正式にサポートしてないことには変わりがないので、
TIFFやPNGなど正式にサポートしている画像形式を使うのがこの場合は正しい。

最初にも言ったけど、動けばいい、という態度なら止めはしない。
319デフォルトの名無しさん:2010/02/23(火) 19:50:10
え、MSDNにもしっかり載ってるのに正式じゃないの?

ttp://msdn.microsoft.com/en-us/library/dd183380(VS.85).aspx
ttp://msdn.microsoft.com/en-us/library/dd183381(VS.85).aspx

Photoshopの起動ロゴのような変形レイヤードウィンドウも
アルファチャンネルのあるビットマップを使うみたいだし‥‥
ttp://www.yoshibaworks.com/Ayacy/INASOFT/wpt/ulw.html
320デフォルトの名無しさん:2010/02/23(火) 19:57:35
>>317
そもそもビットマップ形式自体が変化してないからでは?
そこが変わっちゃうと互換性問題が強く出る気がする。

それが指してるアルファマスクって、二値の情報で黒いところだけマスクする奴じゃね?
321デフォルトの名無しさん:2010/02/23(火) 22:55:36
>>319
>The high byte in each DWORD is not used.

これどういう意味
322デフォルトの名無しさん:2010/02/23(火) 23:08:07
>>319
32bitの色情報を格納する構造体RGBQUADを調べてみるといいよ
ヘッダにアルファの文字があっても多分古い規格のカラーキーについてだと思うよ
pngのような最大で1バイトまるまるアルファとかはサポートしてないはず
323デフォルトの名無しさん:2010/02/23(火) 23:14:23
あと>>317もpng使えっていわれてるのになんで自前でbmp読み込むことにこだわる
pngだって所定のデコード処理を施せばメモリ上に置かれてるのはbmpと同等だよ
324デフォルトの名無しさん:2010/02/23(火) 23:23:24
>>319
後半に関してはDIBにはAlphaがあるがBITMAPにはAlphaが無いってだけ
GDI+の内部では元が何であろうがDIBで扱ってるからAlphaがないと困る

http://msdn.microsoft.com/en-us/library/ms534412%28VS.85%29.aspx
325デフォルトの名無しさん:2010/02/23(火) 23:29:34
1ピクセル64bitとか誰が要求してんだ
326デフォルトの名無しさん:2010/02/24(水) 00:12:54
別に叩かれてるわけでもないのに>>319がふるぼっこすぎる
327デフォルトの名無しさん:2010/02/24(水) 00:19:46
叩かれてないならいいじゃねえか
328デフォルトの名無しさん:2010/02/24(水) 00:23:01
>>325
なんか業界団体はRGBで96bit目指してるらしいけど…。
329デフォルトの名無しさん:2010/02/24(水) 00:24:35
そんな細かくグラデーションしてどうすんだよ
330デフォルトの名無しさん:2010/02/24(水) 00:34:04
普通ならいらないけど、B/Wな画像(レントゲンとかCTとか)では実質1/3になっちゃうんで、
そういう分野では必要なのかも。
331デフォルトの名無しさん:2010/02/24(水) 00:48:45
モノクロ環境は考えてなかったな
なるほどな
332デフォルトの名無しさん:2010/02/24(水) 02:14:10
>>284
キャストを全然つけなくてちょいちょい泣いてるのが初心者
泣きたくないのでキャストつけまくるのがトラウマを抱えた初心者
大人になれば必要なとこだけキャストをつけるようになるよ
333デフォルトの名無しさん:2010/02/24(水) 06:43:30
複数のダイアログを使いたいんだけど
1つのダイアログごとにプロシージャを別にすることは出来ないの?
334デフォルトの名無しさん:2010/02/24(水) 08:53:47
CreateDialog()の第四引数に個々のプロシージャ指定すれば出来るお

ttp://msdn.microsoft.com/ja-jp/library/cc410690.aspx
335デフォルトの名無しさん:2010/02/24(水) 10:19:03
自分のPCに入ってるSNMPの指定オブジェクトIDに値を書くAPIを教えてください。。
336デフォルトの名無しさん:2010/02/24(水) 11:02:01
URLエンコード用のAPIってありますか?
337デフォルトの名無しさん:2010/02/24(水) 11:21:01
>>335 SnmpSetVb
>>336 UrlEscape
ここに書き込むより自分で探した方が早いはず
338デフォルトの名無しさん:2010/02/24(水) 11:28:35
>>330
本当にモノクロなら
16bitでは重複が許されないが
32bitのBI_BITFIELDSならRedMaskとGreenMaskとBlueMaskに同じ値をセットするだけで規格上は問題ないはずなのだが
339デフォルトの名無しさん:2010/02/24(水) 12:20:50
DDSでやるとか
340デフォルトの名無しさん:2010/02/24(水) 14:04:39
3時間程度でwin32apiが使えるようになるサイト教えてください。
当方VB.NETが使えます。
341デフォルトの名無しさん:2010/02/24(水) 14:10:11
342デフォルトの名無しさん:2010/02/24(水) 14:11:22
343デフォルトの名無しさん:2010/02/24(水) 14:12:38
>>337
ありがとうございます。
SnmpSetVbはwsnmp32.dllを使うみたいでこのdllは発見したのですが
これのヘッダーファイルはどこにあるのでしょうか?
344デフォルトの名無しさん:2010/02/24(水) 14:15:29
ファイル名聞いてるの?
そのものズバリWinSnmp.hだよ、PlatformSDKのディレクトリにあるよ
345デフォルトの名無しさん:2010/02/24(水) 14:32:58
>>340
http://www.google.co.jp/
このサイトなら3時間かからん
346デフォルトの名無しさん:2010/02/24(水) 14:49:41
msdnみればわかる事を聞くな。
347デフォルトの名無しさん:2010/02/24(水) 15:48:41
>>344
ありがとうございます。
C++Builderを使っているのですが、WinSnmp.hを発見しました。
libは発見済みだったのでこれでリンクもできます。

すみません、最後にSnmpSetVbとかの関数の使い方を書いてるサイトありますか?
初期化とか使うまでの一連の流れというか・・・
348デフォルトの名無しさん:2010/02/24(水) 15:58:33
349デフォルトの名無しさん:2010/02/24(水) 16:25:18
どうしても見つからない場合はSourceForgeあたりでコードを漁る
350デフォルトの名無しさん:2010/02/24(水) 16:25:41
何真面目に答えてんだカス
351デフォルトの名無しさん:2010/02/24(水) 16:54:02
そしてGPL汚染と
352デフォルトの名無しさん:2010/02/24(水) 16:56:30
>>337で、自分で探せば?といわれるが、懲りずに質問をし
>>346で、msdnみなよ、といわれ、懲りずに質問をし
>>348で、msdnへのリンクを貼られた

>>335は次に英語がよく分からないです。一連の流れのサンプルはないですか?と聞く。
353デフォルトの名無しさん:2010/02/24(水) 17:52:01
あれwwwwwwwwwwwwwww

ここって質問スレだよなwwwwwwwwwwwwww

よく>>352みたいなクズが沸くけどなんだろうなw

つーかもうこのスレいらなくね?
誰かが質問したらググれしか言わない奴が張り付いてるし
珍しく誰かが答えたら基地外が沸くしw
354デフォルトの名無しさん:2010/02/24(水) 17:54:03
質問スレって宿題スレだったのか
355デフォルトの名無しさん:2010/02/24(水) 17:54:35
こんなレスしたら今度は俺が>>335だって基地外に言われるんだよなww

このスレも酷くなったもんだよなあ
356デフォルトの名無しさん:2010/02/24(水) 18:40:43
>>353
そんなこといったら2ちゃんがいらないってことになる
実際いらないけどw
357デフォルトの名無しさん:2010/02/24(水) 18:44:43
まぁ粘着だろうな、このスレも人に恨まれる程になったとw
人生無駄に削ってくれとしか言えんな( ´ω`)
358デフォルトの名無しさん:2010/02/24(水) 19:25:12
windows 7 Home premium x64
Visual C++ 2008 Express Edition
アクティブソリューションプラットフォーム: Win32
で作業しています。

実行中のプロセスが WOW64 か Native64 かを判定しようと
以下のように記述しましたが、kernel32.dll 内に GetNativeSystemInfo 関数が無いと
いう結果になってしまいます。

typedef void (WINAPI *FPGETNATIVESYSTEMINFO)(LPSYSTEM_INFO lpSystemInfo);

FPGETNATIVESYSTEMINFO GetNativeSystemInfo =
    (FPGETNATIVESYSTEMINFO)GetProcAddress(
    GetModuleHandle(TEXT("karnel32.dll")), "GetNativeSystemInfo");


if (GetNativeSystemInfo != NULL) {
  GetNativeSystemInfo(&systemInfo);
} else {
  GetSystemInfo(&systemInfo);    <--- デバッグすると、こちらに入ります
}

win7なのに GetNativeSystemInfo関数が使えないのは
どうしてなのでしょうか?ご教授お願いいたします。
359デフォルトの名無しさん:2010/02/24(水) 19:28:02
GetModuleHandleが失敗してるだろそのコード
360358:2010/02/24(水) 19:36:11
>>359
ありがとうございます。
GetModuleHandleのエラー情報を取得する関数を調べる過程で、
kernel32.dll と karnel32.dll を見間違えていたことが分かりました。

GetModuleHandle(TEXT("kernel32.dll")) と修正したところ、
WOW64判定ができました。

簡単なミスでお恥ずかしいです。失礼します。
361デフォルトの名無しさん:2010/02/24(水) 20:43:54
ウィンドウスタイル"EDIT"のウィンドウをfor文で10個一気に作ろうとすると
処理が間に合わずプログラムが「応答なし」になるのですが、どうにか出来ませんか?
362デフォルトの名無しさん:2010/02/24(水) 21:02:40
>>361
ソースコードを晒せば?
363デフォルトの名無しさん:2010/02/24(水) 21:33:44
>>362
すみません、自己解決しました
スレ汚し本当に申し訳ないです
364デフォルトの名無しさん:2010/02/24(水) 21:36:43
>>353
MSDNのSnmpSetVbについてのページが見つからないので教えてください
365デフォルトの名無しさん:2010/02/24(水) 22:26:30
366デフォルトの名無しさん:2010/02/24(水) 22:29:45
ttp://nienie.com/~masapico/api_CreateDesktop.html

のサンプルを動かしてみたんですが、デスクトップはできるものの、
新しいデスクトップ上にメッセージボックスが表示されません。

環境は Windows XP SP2 です。どうしてでしょうか?
367デフォルトの名無しさん:2010/02/24(水) 22:49:49
>>365
ありがとうございます。
がんばって読んでるのですが、難しいです。日本語のコメント付き使用例などはないのでしょうか。。
368デフォルトの名無しさん:2010/02/24(水) 22:51:31
もう日本の公用語英語にするしかねえな
369デフォルトの名無しさん:2010/02/24(水) 22:58:13
>>367
夜間中学にでも入ってやり直せ。
370デフォルトの名無しさん:2010/02/24(水) 23:04:56
The high byte in each DWORD is not used.

が読めない人のいるスレだからしょうがない。
371デフォルトの名無しさん:2010/02/24(水) 23:07:03
372デフォルトの名無しさん:2010/02/24(水) 23:21:28
なんという。
>>353が変なこと書くから回答してもらえると思っちゃったんじゃないか?
373デフォルトの名無しさん:2010/02/24(水) 23:32:52
英語ができない奴はなでしこでもやってればいいと思うよ
374デフォルトの名無しさん:2010/02/24(水) 23:44:48
>>366
自己レス。SetThreadDesktop() が 170 で失敗してました。
ググって見ると、呼び出し元スレッドにウィンドウとかが存在するときは失敗するそうで。
前にうまくいったのは、コンソールアプリだったのを忘れてました・・・。
375デフォルトの名無しさん:2010/02/25(木) 07:19:37
>>370
その記述がBI_RGBの場合だけという事を理解できない人のいるスレだからしょうがない
376デフォルトの名無しさん:2010/02/25(木) 14:44:17

GetOpenFileName関数でコモンダイアログを用いた処理で、
ファイルを選択後、「開く(O)」ボタンを押した時、
そのファイルを判定し、有効ならばそのままダイアログを閉じ、
無効ならば、再度ファイルを促したいと思っています。
OFN_ENABLEHOOKを利用してフックし、WM_NOTIFYメッセージの時、
lpOfNotify->hdr.code == CDN_FILEOKの時に判定することまでは出来ました。
ここで、無効なファイルだった場合はCDN_FILEOKをキャンセルし、
「開く(O)」ボタンを押す前の状態に戻りたい場合、
どうするんでしょうか?

377デフォルトの名無しさん:2010/02/25(木) 14:47:47
ググれかす
378デフォルトの名無しさん:2010/02/25(木) 15:03:22
>>376
普通にMSDNに書いてある方法では駄目なの?
http://msdn.microsoft.com/en-us/library/ms646931%28VS.85%29.aspx
379デフォルトの名無しさん:2010/02/25(木) 15:11:31
!0
380デフォルトの名無しさん:2010/02/25(木) 15:35:27
WindowsのIEコンポーネントブラウザでドラッグアンドドロップを不許可にしたいんですが
なにか良い方法無いでしょうか?
DragAcceptFilesで上から順に全部FLASEにしてみましたが、効果ありませんでした。
381デフォルトの名無しさん:2010/02/25(木) 15:36:00
ぐぐれよぅ
382デフォルトの名無しさん:2010/02/25(木) 15:41:43
>>381
何時間ぐぐっても見つからないので検索ワードだけでも教えてください。
383デフォルトの名無しさん:2010/02/25(木) 15:45:43
384デフォルトの名無しさん:2010/02/25(木) 15:49:09
385デフォルトの名無しさん:2010/02/25(木) 15:55:47
>>383
どうやらドラッグアンドドロップについての文章じゃないようですね。
ソースコードをじっくり読んでみます。
386デフォルトの名無しさん:2010/02/25(木) 16:05:24
本来なら数時間ぐぐっただけでぐぐった気になるのは
許せないところだけどな。
俺なんて目から血が出るくらいぐぐるからな。
387デフォルトの名無しさん:2010/02/25(木) 16:09:50
そのまま死ねばいいのにね
388デフォルトの名無しさん:2010/02/25(木) 16:10:53
はい
389デフォルトの名無しさん:2010/02/25(木) 16:11:16
ここはもう機能してないスレだから他行った方が良いよ
390デフォルトの名無しさん:2010/02/25(木) 16:19:59
D&Dもイベントが発生するけどイベント処理ロジックがなかったら何もおきない・・・ってことはないのかな?
391デフォルトの名無しさん:2010/02/25(木) 22:05:04
registerasdroptarget
392デフォルトの名無しさん:2010/02/26(金) 00:03:59
MN_GETHMENUは、何故MN_から始まってるんでしょう。
393デフォルトの名無しさん:2010/02/26(金) 00:10:33
Menu Notify
394デフォルトの名無しさん:2010/02/26(金) 00:10:58
何も思わずMeNuだと思っていたが、それならMMのほうがよくね?って話かな
395デフォルトの名無しさん:2010/02/26(金) 00:17:45
わかりました。
396デフォルトの名無しさん:2010/02/27(土) 04:00:07
MessageBoxについて質問します。
タスクマネージャーを監視しているとMessageBoxを呼び出すごとにGDIオブジェクトが増えているのですが、
これはいったいなぜでしょうか?
MessageBoxを呼び出して、たとえばMB_OKでOKを押させて消させた場合もGDIオブジェクトの数が減ることがありません。
非常に気になるので、MessageBoxを呼び出しおわったあとにGDIオブジェクトをクローズする方法を教えてもらえませんか?
397デフォルトの名無しさん:2010/02/27(土) 04:18:44
ソース
398デフォルトの名無しさん:2010/02/27(土) 04:27:29
しょうゆ
399デフォルトの名無しさん:2010/02/27(土) 05:01:50
ソース
400デフォルトの名無しさん:2010/02/27(土) 05:22:33
しーそー
401デフォルトの名無しさん:2010/02/27(土) 11:42:29
ソース
402デフォルトの名無しさん:2010/02/27(土) 17:23:50
まぁMessageBox以外を疑うべきでは?Box出さないでウィンドウサイズ変更とかグリグリしながら監視推奨
403デフォルトの名無しさん:2010/02/28(日) 06:04:33
CreateDialogで作ったダイアログ内のコンボボックスに
項目を追加するにはWM_INITDIALOG内で
SendDlgItemMessage(hDlg, コンボボックスの識別子, CB_ADDSTRING , 0 , (LPARAM)"text");
これでいいんだよな?
何も起こらないんだけど
404デフォルトの名無しさん:2010/02/28(日) 10:54:05
同じコードでやって、それがリストボックス(LB_ADDSTRING)で動くなら
コンボボックスでもいけると思うが
まさかF4キーでドロップダウンしてないってオチじゃないよね
405デフォルトの名無しさん:2010/02/28(日) 11:36:06
リストボックスは出来た
コンボは追加されてないっぽい
406デフォルトの名無しさん:2010/02/28(日) 14:58:12
コンボボックスの高さが足りてないオチは?
407デフォルトの名無しさん:2010/02/28(日) 21:08:08
実際に追加されていないのか、単に表示がされないのか切り分けだな。

あとはSendMessageで試すとか
408デフォルトの名無しさん:2010/03/01(月) 05:39:41
リソースエディッタで作ったダイアログを
トップレベルウィンドウとして扱うことって出来ないんでしょうか?
409デフォルトの名無しさん:2010/03/01(月) 05:43:54
>>408
WinMain以下でいきなりダイアログを開けば勝手にトップレベルウィンドウになると思うが?
410デフォルトの名無しさん:2010/03/01(月) 05:51:37
教師をしているんだが、生徒が勝手に他人の文書をコピペできない
ようにクリップボードを定期的にクリアするサービスアプリケーション
を作ってるんだがどのようにすればいいか教えてくれないかい?
サイズが0のウィンドウを開いてタイマーを1秒に
設定して、1秒ごとにEmptyClipBoadを発行するものを
作ったんだが、タスクバーで右クリックすれば終了できて
しまうんだ。タスクバーにアプリケーション名を出さずに
実行するのはどのようにすればいい?
411デフォルトの名無しさん:2010/03/01(月) 06:09:32
>>410
そんなアプリを生徒に強制的に使わせるのはヤメレ。
412デフォルトの名無しさん:2010/03/01(月) 06:18:17
>>410
悪意無しで本当にコピペしたいって時はどうさせるのですか先生
413デフォルトの名無しさん:2010/03/01(月) 06:26:07
>>410
それなんてウィルス
414デフォルトの名無しさん:2010/03/01(月) 06:28:38
教師が考えそうな低俗で下劣なアプリだな
415410:2010/03/01(月) 06:45:04
>>412
自前のクリップボードビューワーのついたテキストエディターも
作ってみようとと思ってる。タブ方式とする予定。
他の文書でマウスで一部をハイライト状態にすると、
自動的にビューワーのほうに転送されるようにしてあげる。
それを見ながら、手打ちするわけだ。タブを切り替えたり
スクロールさせなくていいわけだ。優しいだろ?
このトランスクリプトモードに入ったら、それまで入力された
箇所の不用意な変更を防止してあげる。そして
ビューワーの文字列を端から順番通りちゃんとミスタッチ無く
入力できるようにしてあげる予定(ミスタッチしたらBSを
入力したのと同じ効果にしてあげるとか)
416デフォルトの名無しさん:2010/03/01(月) 06:47:11
そこらにあるクリップボード支援ツール使われて即死と見た
417デフォルトの名無しさん:2010/03/01(月) 06:49:53
>>415
そんな最上級のウザソフト作って何がしたいの?w
418410:2010/03/01(月) 06:54:04
で、タスクバーに表示させない方法は知ってるかい?
419デフォルトの名無しさん:2010/03/01(月) 07:00:17
何が目的か分からんが、PC使う以上はコピペは推奨すべき。
タイピングさせたいならタイピングオブザデッドでも買い与えてやれ。
420デフォルトの名無しさん:2010/03/01(月) 07:14:01
馬鹿のオナニーに付き合わされて、本当に貴重な10代での学習機会を棒に振られる生徒が可哀想・・・
421デフォルトの名無しさん:2010/03/01(月) 07:24:16
教師がこんな無知なわけないだろ
素直にウィルス作ってますと言えよ
422デフォルトの名無しさん:2010/03/01(月) 07:26:49
こんな無知が担当の生徒が可哀想。
423デフォルトの名無しさん:2010/03/01(月) 07:34:30
Adomin権限で実行すれば一般権限のユーザーからは見れないぞ。
まさか生徒にAdomin権限使わせてるってことはないだろう?さすがに。



使わせてるとしたらバカ教師クオリティ。
424デフォルトの名無しさん:2010/03/01(月) 07:37:50
adominって何すか?
中学生かお前
425デフォルトの名無しさん:2010/03/01(月) 07:50:42
もう許してください
426デフォルトの名無しさん:2010/03/01(月) 07:54:47
コピペした時にクリップボードの内容を生徒別にリストする方がいいんでないの
どこで(URLとかPathとか)コピーしてどこへペーストしたかって
427410:2010/03/01(月) 07:56:24
要するにここの人は貴重な10代での学習機会を
貧弱なソフト環境だったWin9xとかで棒に振られた
可哀想な世代だってことですね。 理解できました。
どうも傷ついてしまったようですみません。
訊いたのが間違いでした。
428デフォルトの名無しさん:2010/03/01(月) 07:59:19
2時間掛けてようやく気付いたのか馬鹿
429デフォルトの名無しさん:2010/03/01(月) 08:01:29
いいえ、パンチカード世代です
430デフォルトの名無しさん:2010/03/01(月) 08:20:47
こんな無能の自称教師にオナニー環境押し付けられるくらいなら
黒板にググレカスとだけ書いて自習させた方が遥かに有意義だわな
431デフォルトの名無しさん:2010/03/01(月) 08:24:47
>>427
この簡単に答えられる質問を、誰にも答えてもらえない

お前さん人に物を教える前に、人に物を教えてもらう方法を学ぶべきじゃないか?w
432デフォルトの名無しさん:2010/03/01(月) 08:40:02
おい、電車下りる時間。
433デフォルトの名無しさん:2010/03/01(月) 08:46:49
434デフォルトの名無しさん:2010/03/01(月) 10:45:00
ユトリが教師になると碌なことが無いという良い見本だな。
435デフォルトの名無しさん:2010/03/01(月) 10:47:44
いつの時代も馬鹿はいるもんだ
436デフォルトの名無しさん:2010/03/01(月) 10:53:04
だがしかし
もう世の中には
ゆとりの教師かゆとりを育てた教師しかいないという絶望感
437デフォルトの名無しさん:2010/03/01(月) 10:59:14
438デフォルトの名無しさん:2010/03/01(月) 12:20:12
非クライアント領域を自分好みに変形させることってどうやったらできます?
439デフォルトの名無しさん:2010/03/01(月) 12:30:29
無理です
440デフォルトの名無しさん:2010/03/01(月) 13:13:41
EmptyClipBoad じゃなくて EmptyClipboard だろ
441デフォルトの名無しさん:2010/03/01(月) 13:55:57
教師をしているんだが
EmptyClipBoad
442デフォルトの名無しさん:2010/03/01(月) 15:15:36

”ウィンドウが最大化されるとき”は、どうやって知ればよいのでしょうか?
443デフォルトの名無しさん:2010/03/01(月) 15:29:16
WM_SHOWWINDOW
444デフォルトの名無しさん:2010/03/01(月) 16:45:04
すいません、、、聞き方が悪かったのですが、

アプリ・ウィンドウを最大化状態で起動したとき、右上の”Resize”ボタン?を
押したときに、前回アプリ実行時のリサイズ状態に戻したいのですが、どうすれば
よいのでしょ〜か?
445デフォルトの名無しさん:2010/03/01(月) 16:57:07
SetWindowPlacement
GetWindowPlacement
446444:2010/03/01(月) 19:47:43
なるほど、、、同じような名前でわけ分かりませんでしたが、そういう意味だったのか、

と納得しました。
447デフォルトの名無しさん:2010/03/01(月) 19:59:09
WM_SYSCOMMANDの(wParam & 0xfff0) == SC_MAXIMIZE
このタイミングで最大化する前のウィンドウサイズを保持して
次回起動後、SC_RESTOREが来たら保存したサイズにリサイズすればいいかと
448デフォルトの名無しさん:2010/03/03(水) 05:07:10
非アクティブ状態でもキー入力を受け付けるには?
449デフォルトの名無しさん:2010/03/03(水) 07:06:25
フック、ホットキー
450デフォルトの名無しさん:2010/03/03(水) 08:41:04
WINDOWS終了時に、ファイルに設定を保存する時って
直接そのファイルに書きこむのと、一度適当なファイル作って書き込み
それを本来のファイルにリネームするのでは、どちらが良い?
451デフォルトの名無しさん:2010/03/03(水) 08:49:03
正しいのは書き換え
大昔の容量比の名残りでMS謹製ソフトでもオリジナルをリネーム後に新規作成してるのがあるけど
452デフォルトの名無しさん:2010/03/03(水) 09:19:44
>>451
サンクス!直接書き換えます
453デフォルトの名無しさん:2010/03/03(水) 10:12:15
>>449
ホットキーというのを試して成功したけど
入力が無効化されてしまうのはどうにかできないの?
454デフォルトの名無しさん:2010/03/03(水) 11:43:13
>>453
非アクティブなプロセスにどんな処理させてるのかによる
単一キーじゃなくてもいいなら普段使わないキーの組み合わせで回避したらどうかな
MODあたり使って
455デフォルトの名無しさん:2010/03/03(水) 13:45:04
Raw Input
RIDEV_INPUTSINK
456デフォルトの名無しさん:2010/03/03(水) 23:33:01
PeekMessage()やGetMessage()の第二引数って、ウィンドウハンドルを渡すんだよね。
MSG::messageの中にWM_QUITが来てた時に、メッセージループから抜けようとしたんだけど、
メインウィンドウのハンドルを引数にしてたら、なぜか×ボタンとか押したとき(WM_CLOSEやWM_DESTROYでPostQuitMessage()を呼ぶようにしてる)
プログラムが終了しないんだけど、第二引数にNULLを与えたらうまくいくんだけど…。
NULLを与えても大丈夫なの?
全てのメッセージを取得するようになると勝手に思ってるんだけど…。
457デフォルトの名無しさん:2010/03/03(水) 23:38:56
日本語のでいいからMSDN嫁カス
458デフォルトの名無しさん:2010/03/03(水) 23:44:55
>PeekMessage()やGetMessage()の第二引数って、ウィンドウハンドルを渡すんだよね。

ダウト。普通はNULLにする。
ウィンドウハンドルを指定したらそのウィンドウへのメッセージしか取れないだろ。
子ウィンドウ作る場合とかどうすんだ。

そもそもお前の場合GetMessageでWM_QUITを取得しようとした時点で
WM_DESTROY実行済みでウィンドウが無効になってるから失敗して当然。
勝手に思い込む前に頭のバグ直しとけ。
459デフォルトの名無しさん:2010/03/03(水) 23:47:41
なにこのひとこわい
460デフォルトの名無しさん:2010/03/04(木) 00:30:47
>>458
了解。
Win32APIを学ぶために読んだページにウィンドウハンドルを渡すって書いてあったから、鵜呑みにしてた。申し訳ない。
461デフォルトの名無しさん:2010/03/04(木) 04:12:41
>>458
「ダウト」の意味を調べとこうな。
462デフォルトの名無しさん:2010/03/04(木) 08:11:22
↑どうしても書き込みたくて仕方がなかった
463デフォルトの名無しさん:2010/03/04(木) 10:06:50
↑うん
464デフォルトの名無しさん:2010/03/04(木) 13:26:49
XPでExplorerをアイコン表示にした時、ファイルの位置を自由に変えられますが
あの位置情報をファイルの絶対パスなどから取得するのはどうすればいいんでしょうか。
465デフォルトの名無しさん:2010/03/04(木) 19:25:01
IShellFolderインターフェイスを使うんだろうなぁ
466デフォルトの名無しさん:2010/03/04(木) 20:25:56
IFolderView:GetItemPosition
467デフォルトの名無しさん:2010/03/04(木) 23:03:50
質問です。
アプリの二重起動を防止したいと考えています。
それだけならMutexを使うだけなのですが、コマンドライン引数を
最初に起動したアプリに渡した後で、終了させたいと思ってます。
(最初に起動したアプリは常駐し、以後は常駐アプリにのみ処理させたい)

このような場合に、データ(コマンドライン引数)の受け渡しを
行うには、どのような機能/APIを使うべきでしょうか?
468デフォルトの名無しさん:2010/03/04(木) 23:16:30
そのプログラムがスレッド持ってるならPostしとけばいいのではないですか
469デフォルトの名無しさん:2010/03/04(木) 23:22:09
それとグローバルアトム。
470デフォルトの名無しさん:2010/03/04(木) 23:23:13
VirtualAllocExとか
471デフォルトの名無しさん:2010/03/04(木) 23:23:47
ファイルマッピングオブジェクト使うのはどうかな
472デフォルトの名無しさん:2010/03/04(木) 23:26:24
CreateProcessでexeを起動する処理を含むプログラムを作ったのですが、
自分のPCではちゃんと動くのに、知り合いのPCでは動かないみたいです。

呼び出されるexeの内部でファイルを書き出す処理をしているのですが、
ファイルが書き出されないようなので、CreateProcessの部分が原因ではないかと思っています。
またexeを直接起動したときの動作は問題ないようです。

自分のPCでは再現しないので、環境による影響があるのではないかと疑っているのですが、
環境によってCreateProcessがうまく動かないということは考えられるでしょうか?
自分のPCはWin7、知り合いのPCはWinXPです。
473デフォルトの名無しさん:2010/03/04(木) 23:32:54
Roming関係とか考えられること多すぎて困る
474デフォルトの名無しさん:2010/03/04(木) 23:35:58
そんな漠然とした情報じゃ何もわからん。
OutputDebugStringやログ吐きまくってどのAPIがどんなエラーコードで失敗しているかを根性で調査するしか。
475デフォルトの名無しさん:2010/03/04(木) 23:53:28
CPUの温度とか湿度とかメモリ周りBIOS設定を確かめてみて
あとCPUクーラーは良く利いているかな?クーラーは
消耗品や劣化する製品なので、メンテは必須だよん

他人が作ったアプリやOSが動作しない時は意外にありがち
なのがそういった問題
476デフォルトの名無しさん:2010/03/05(金) 00:03:05
ドライブ文字ベタ書きとかそんなオチだろうさ
477デフォルトの名無しさん:2010/03/05(金) 00:15:12
Win7で有効な構造体のメンバがXPではリザーブとか。
478デフォルトの名無しさん:2010/03/05(金) 00:24:26
>>473-475
いろいろ原因は考えられるんですね。
自分のPCでは再現しないので、デバッグもしづらいのがつらいところです。

>>476
exeのファイル名指定は相対パスで書いてあります。

>>477
CreateProcessの部分はネットで調べて書いたのですが、Win7発売より古い情報なので、それもなさそうです。

知り合いに協力してもらいながら調査してみます。
どうもでした。
479デフォルトの名無しさん:2010/03/05(金) 00:42:06
あるアプリを複数起動させ、それぞれの保存ダイアログを同時に表示させた
時にどのダイアログがどのアプリのものか外部アプリから識別する方法って
有りますか?
480デフォルトの名無しさん:2010/03/05(金) 00:47:38
コモンダイアログだって呼び出し元スレッドとプロセスに所属してるんだからその辺紐付ければ取れるでしょうよ
481デフォルトの名無しさん:2010/03/05(金) 00:59:25
こんな時間に有り難うございます。
複数起動したアプリのハンドルは区別できてるんですけど、
例えば1番目に起動したハンドルで保存ダイアログを探して、
外部アプリから操作しようとすると、2番目に起動したアプリの
保存ダイアログにメッセージが飛ぶ現象が起きてしまってどうしたもんかと。
482デフォルトの名無しさん:2010/03/05(金) 01:15:58
Windowをスクリーンの中央に表示するコードをください、この私に。
483デフォルトの名無しさん:2010/03/05(金) 01:17:05
>>481
オーナーウインドウを調べれば分からない?
484デフォルトの名無しさん:2010/03/05(金) 01:21:31
確かHWNDからプロセスIDは調べられたと思うんだけど。
485デフォルトの名無しさん:2010/03/05(金) 01:28:11
>>482
中華は引っ込んでろ
486479:2010/03/05(金) 11:21:04
皆さん、有り難うございました。
FindWindowExで調べていたからまずかったみたいです。
Owner,Ownerdを調べていったら出来ました。
ダイアログと親ウィンドウの関係が今回のことで分かりました。
また、よろしくお願いします。
487デフォルトの名無しさん:2010/03/05(金) 17:40:26
bitmapをjpgに変換するAPI教えて
488デフォルトの名無しさん:2010/03/05(金) 17:42:02
489467:2010/03/05(金) 22:27:15
お返事ありがとうございます。

>>468
すみません、理解できませんでした。
スレッドを利用したプロセス間でのデータ受け渡しがあるのでしょうか??

>>469 >>470 >>471
最初のアプリが常駐した後、同時に複数の同アプリが起動した場合でも
うまくいくような仕掛け(排他制御)を考える必要がありそうですね。
490デフォルトの名無しさん:2010/03/05(金) 23:01:50
単に既に起動しているプロセスに対して
コマンドライン引数をSendすればいいだけじゃだめなの?
491デフォルトの名無しさん:2010/03/06(土) 00:20:13
WM_COPYDATAで十分そうだな。
後はカレントディレクトリも送っといたほうがいいんじゃないかな。
相対パスくらいはちゃんと扱ってもらわないと。
492デフォルトの名無しさん:2010/03/06(土) 01:24:20
日本語でOkay.
493デフォルトの名無しさん:2010/03/06(土) 01:34:47
問題は質問者の書き込みではウィンドウがあるのかどうか分からないことだ
494デフォルトの名無しさん:2010/03/06(土) 02:37:11
ウィンドウをクラス化するところまでできました。
次にリストビューあたりをクラス化したいと思うのですが、
検索してもなかなかそういうのが見つかりません。
こう作るのがセオリーというのがあれば知りたいのですが、
参考になるサイトやソースコードがあれば教えて欲しいです。
特に、ウィンドウプロシージャとのやりとりが煩雑なので
それをクラスにまとめる方法が知りたいです。
よろしくお願いします。
495デフォルトの名無しさん:2010/03/06(土) 02:50:48
クラスにまとめるほうが煩雑になるの法則
496デフォルトの名無しさん:2010/03/06(土) 02:53:19
WTLとかのコード見て見れば
俺は見たときないけど
497494:2010/03/06(土) 03:13:33
やはりWTLになりますか。評判はいいのですが、解析となると気が引けて
しまって。手っ取り早く説明しているところがあればなと思って質問しました。
やっぱりこういうのは自作するよりも利用するものなんですかね。
498デフォルトの名無しさん:2010/03/06(土) 03:21:58
サブクラス化で検索したら
499494:2010/03/06(土) 03:36:51
サブクラス化はコントロール自体の機能を拡張するために使う手法という理解でいました。
そうではなくて、メインからコントロールを利用しやすくするためにクラス化
したかったのです。サブクラス化することでそういうメリットが得られるのでしょうか?
500デフォルトの名無しさん:2010/03/06(土) 03:56:43
clistviewctrl
501デフォルトの名無しさん:2010/03/06(土) 03:59:59
一番わかってないのは、自分が何をしたいのかだろう
502デフォルトの名無しさん:2010/03/06(土) 04:14:20
誰もが一度は通る道
503デフォルトの名無しさん:2010/03/06(土) 04:25:55
私のクラスは53万です。
504デフォルトの名無しさん:2010/03/06(土) 12:43:49
MFCとかWinFormsとかWPFをパクる
505デフォルトの名無しさん:2010/03/06(土) 17:28:13
>>488
ありがとうございます。
当方C++Builder2007を使っていて、それ用のヘッダ当ありますが
エラーが出まくってまともにコンパイルができませんでした・・・
506デフォルトの名無しさん:2010/03/06(土) 23:17:57
とあるアプリを外部から操作するアプリを作成して一応望み通りに作れたのですが、
コンボボックスのことで教えて欲しいことがあって来ました。
CB_SETCURSELでアイテムを選択すると思うのですが、このAPIでアイテムを選択しても
一旦は切り替わるのですが、その後必ず先頭のアイテムが選択されてしまい、アイテム変更後
クリックメッセージを送ってやると選択したアイテムで処理が進んでくれるということになって
しまいました。
これって、使っているAPIが悪いのでしょうか?
それとも、操作しようとしているアプリの作り方(仕様?)の問題でどうしようもないことなのでしょうか?

よろしくお願いします
507494:2010/03/06(土) 23:35:15
皆さんありがとうございます。こういうのは定番の手法が確立されているか
と思ったのですが、意外とそうでもないようで。
とりあえずWTLやMFCとかの定番ライブラリのソースを調べてみることにします。
508デフォルトの名無しさん:2010/03/07(日) 11:58:58
EnumProcesModules→GetModuleFileNameExでファイル名を取得したいのですが
64bitアプリケーションに対してEnumProcessModulesしてもうまく取得できずGetModuleFileNameExが失敗してしまいます
何が原因なんでしょうか?
509デフォルトの名無しさん:2010/03/07(日) 14:51:07
このスレの人はそんな難しい質問には答えられないの
510デフォルトの名無しさん:2010/03/07(日) 15:01:07
32/64 で別管理なんじゃね?
511デフォルトの名無しさん:2010/03/07(日) 16:17:06
64bitビルドだと失敗しない
512デフォルトの名無しさん:2010/03/07(日) 17:13:27
HANDLEの大きさが違うからでしょ
513508:2010/03/07(日) 17:14:22
ありがとうございます
32bitでは64bitアプリケーションに対して一部の操作が無効なんですね・・
514デフォルトの名無しさん:2010/03/07(日) 22:37:02
HANDLEが別物なんだから当たり前やが
515デフォルトの名無しさん:2010/03/08(月) 09:18:56
UNICODE でプログラミングしてるのですが、ある関数の終了と同時に異常終了してしまいます。
以下の部分が怪しいのですが、勘違いしてないでしょうか、、、(Borland C++)

LOGFONT logfont;
const TCHAR *facename = _T("MS ゴシック");

_tmemset(&logfont,0,sizeof(LOGFONT));
_tmemcpy(&logfont.lfFaceName,facename,_tcslen(facename)*sizeof(TCHAR));
_tmemcpy(&save.logfont,&logfont,sizeof(LOGFONT));
516デフォルトの名無しさん:2010/03/08(月) 09:27:44
デバッガで追跡した?
_tmemset(&logfont,0,sizeof(LOGFONT));
memset( &logfont,0,sizeof(LOGFONT));
これってどう違うの?UNICODEに合わせて用意された関数?

それと
_tmemcpy(&logfont.lfFaceName,facename,_tcslen(facename)*sizeof(TCHAR));
ここで、logfont.ltFaceNameのアドレスを渡してる
logfont.ltFaceNameは配列なので
正しくは
_tmemcpy(logfont.lfFaceName,facename,_tcslen(facename)*sizeof(TCHAR));
517デフォルトの名無しさん:2010/03/08(月) 09:28:40
こっちでもおk
_tmemcpy(&logfont.lfFaceName[0],facename,_tcslen(facename)*sizeof(TCHAR));
只の勘違いだろうけど、ポインタ周りを理解してないうちはUNICODEは控えた方が
518デフォルトの名無しさん:2010/03/08(月) 11:33:51
CRTとか…

LOGFONT logfont;
::SecureZeroMemory( &logfont, sizeof( logfont ) );
::lstrcpy( logfont.lfFaceName, _T("MS ゴシック") );
519デフォルトの名無しさん:2010/03/08(月) 12:33:56
SecureZeroMemoryはコンパイラの最適化を受けずに、確実にゼロクリアされるけど
memsetでゼロクリアって確実にされないの?
520デフォルトの名無しさん:2010/03/08(月) 12:46:59
今日の1行
LOGFONT logfont = {0};
521デフォルトの名無しさん:2010/03/08(月) 15:32:14

WaitForSingleObject()ついて質問があります。

パイプを使用してアプリ間で双方向通信を行うプログラムを作成しています。
http://www.kumei.ne.jp/c_lang/sdk3/sdk_248.htm これを参考にしています。

アプリ間で共有しているイベントオブジェクトを使用してパイプへの書き込み読込みの排他処理を行っています。

正常に動作している場合は問題はないのですが、
仮に片方がアボートした場合、もう片方のアプリのWaitForSingleObject()から帰ってきません
これを回避する方法はあるでしょうか?
522デフォルトの名無しさん:2010/03/08(月) 15:51:44
>>512
・片方がアボートした段階で管理者に連絡する
・タイムアウト処理を実装する
523デフォルトの名無しさん:2010/03/08(月) 15:52:39
>>512
>>521 の間違い
524デフォルトの名無しさん:2010/03/08(月) 16:10:40
未処理例外キャチとかでアボートする前にイベント発行とかで通知
1つでもシグナル状態になったら制御を返すWaitForMultipleObject()を使用する
525デフォルトの名無しさん:2010/03/08(月) 17:16:54
GUI操作された処理で、それらの実行/終了した事を知るにはどうしたらいいですか?
526デフォルトの名無しさん:2010/03/08(月) 17:54:28
GUI操作の質問は、521-524と同じ質問なのかな?
>>524のレスの通り、CreateEventでイベントオブジェクトを作成する。
なお、CreateEventの第一引数の名前をユニークなものとし、
両方のアプリで認識できる事とする。
あとは、プロセスが終了する段階でSetEventを指定すれば、
待ち合わせ側でもWaitForMultipleObjectで知る事ができる。

521-524以外なら、WM_KILLFOCUSが操作を終了したヒントの一つなのでは?
※但し、コントロールによってはCBN_SELCHANGEなどもあり、
 一概とはいえない。
527521:2010/03/08(月) 18:01:35
>>523, 524
返信ありがとうございます。
アボートする前にイベント発行の方法で考えてみます。

パイプの双方向通信て微妙に難しくありませんか?
今まで、送信と受信の2本のパイプで双方向通信してましたが、どうもスマートに見えないので
改良しましたが、今度はイベントの開放時に下手するとWaitForMultipleObject()でとまりますね・・・
なにか、いいオープンソースあったら教えてほしい・・・
528デフォルトの名無しさん:2010/03/08(月) 18:31:11
>>526
521-524とは異なる質問です
バッチ処理を行うアプリを作りたいのですが
例えばGUIアプリの、AアプリとBアプリがあるとし
Aアプリで処理を実行し、終了ー>その後にBアプリを実行させたいと思っています
アプリ自体は、作者が異なる者を想定していますので、イベント名などは合わせることは出来ません
この状態で対応出来ますか?
529デフォルトの名無しさん:2010/03/08(月) 18:52:34
エスパー
530デフォルトの名無しさん:2010/03/08(月) 18:52:54
>>521
>仮に片方がアボートした場合、もう片方のアプリのWaitForSingleObject()から帰ってきません
嘘書くな。
531デフォルトの名無しさん:2010/03/08(月) 18:57:03
そもそもpipeの読み書きに排他処理は不要。
532デフォルトの名無しさん:2010/03/08(月) 19:14:24
>>528
まずは、Spy++でトレースして考えたほうがよいかと
533デフォルトの名無しさん:2010/03/08(月) 19:17:18
あるウィンドウが別のウィンドウの子孫かどうかを一発で判定するAPIは無いのでしょうか?

深い親子階層を持つウィンドウの中で、
フォーカスを持つウィンドウが自分の子孫に含まれているかを判定したいのですが。
534533:2010/03/08(月) 19:27:53
IsChild()で子だけでなく子孫も判定できるようでした。失礼しました。
535デフォルトの名無しさん:2010/03/08(月) 19:36:01
CreateWindowでコンボボックスを作ったんだけど、枠線消す方法誰か知ってる?
536デフォルトの名無しさん:2010/03/08(月) 19:50:20
WS_EX_STATICEDGE,
WS_EX_CLIENTEDGE,
WS_EX_WINDOWEDGE
該当するフラグをマスクでアンド演算してね
537521 :2010/03/08(月) 20:08:09
いろいろと返信ありがとうございます。
525とは別人です。

>>531
パイプによるプロセス間通信で双方向通信の場合、
排他処理なしに1本のパイプで行うことは不可能じゃないですか?

以前やってみましたが、自分で書き込んだデータを自分のプロセスが読み込み(ReadFile())ます。

538デフォルトの名無しさん:2010/03/08(月) 21:35:49
意味が分からん
OpenModeをPIPE_ACCESS_DUPLEXにして
PeekNamedPipeでスピンロックぐるぐる回してればいいじゃん
539デフォルトの名無しさん:2010/03/08(月) 23:27:07
ttp://school.topposystem.co.jp/PR/Tool/Win32API/System/Pipe.htm

ここの説明も良い説明ではないが、まだまとまった感じ
540uy ◆e6.oHu1j.o :2010/03/09(火) 02:20:02
post_messageで
プロセスAから
プロセスBへメッセージを送れるわけですが、
これを受け取りたくない場合ってプロセスBはどうやって作ればいいんですか?
させたくないのは、
とにかくプロセスBは、他プロセスからのメッセージを一切受け取りたくない = 自動操作などをさせたくない
ってことです。
541デフォルトの名無しさん:2010/03/09(火) 07:32:54
特定のメッセージだけなら受け取って握りつぶすだけだけど
送信元が判定できないから難しいと思う
542デフォルトの名無しさん:2010/03/09(火) 08:02:41
つか数日前からプロセス間関連の質問しまくってる人は何をやってるんですか?
宿題?
543デフォルトの名無しさん:2010/03/09(火) 08:36:12
まぁまぁ、プロセス間通信もできればできたで楽しいし。
リダイレクタにも応用できるし!?
544デフォルトの名無しさん:2010/03/09(火) 08:57:22
夢はあるね
545デフォルトの名無しさん:2010/03/09(火) 09:25:42
リソースダイアログを親ウィンドウとして扱うのってあり?
546デフォルトの名無しさん:2010/03/09(火) 09:32:56
ありかなしか何を基準とすればいいのか分からんよ
確実になしって言えるのは実現できないことだけだ
547デフォルトの名無しさん:2010/03/09(火) 09:34:00
なしではないけど、どうかと
548デフォルトの名無しさん:2010/03/09(火) 09:37:21
俺は簡単なアプリ作る時はリソースダイアログにしてる
549デフォルトの名無しさん:2010/03/09(火) 09:39:26
ウィンドウかダイアログって時は
UXガイドの450ページから読んだほうが整理付くんじゃね?
(あくまでも指標なんだけどね)

ttp://msdn.microsoft.com/ja-jp/library/aa511258.aspx
ここの「PDF 形式」をクリックすればダウンロードできるぞ
550デフォルトの名無しさん:2010/03/09(火) 09:43:24
約800ページもあんのか
551デフォルトの名無しさん:2010/03/09(火) 09:44:25
プログラム覚えだした頃って外部プログラム操作したくならない?
いかにも俺はプログマーだぜって気分が味わえる。
552デフォルトの名無しさん:2010/03/09(火) 09:48:08
プロだクマー
553デフォルトの名無しさん:2010/03/09(火) 12:03:29
>>551
別に覚えたてに限らんでしょ。
自分でアプリ作るのは面倒だけど既製品では気に入らない時に
ボタンやダイアログのハンドル調べて自動制御する簡単なソフトを作るのは
みんなやってると思うんだけど。
554デフォルトの名無しさん:2010/03/09(火) 12:08:28
自分で作るか別のアプリ探すw
555デフォルトの名無しさん:2010/03/09(火) 12:09:47
メッセージ送ってどうのこうのまではしようと思わないな…
パイプ使ってコマンドライン編集するくらいならやるけど
556デフォルトの名無しさん:2010/03/10(水) 00:18:16
勝手に操作されたくないという気持ちは分からなくもないが、
たとえ、他のプロセスからのメッセージを弾く方法があったとしても、
アクセシビリティAPI経由で操作できてしまうということになるだろうと思う。
557デフォルトの名無しさん:2010/03/10(水) 02:10:25
SendMessageをフックして弾けばいい
558デフォルトの名無しさん:2010/03/10(水) 04:45:50
フックをフックして弾けよ
559デフォルトの名無しさん:2010/03/10(水) 07:27:38
ひどい攻防ですね
560デフォルトの名無しさん:2010/03/10(水) 09:33:04
キーボードやマウスのふりをするドライバとか…
561デフォルトの名無しさん:2010/03/10(水) 09:34:02
メッセージ処理前にチューリングテストしよう。
562デフォルトの名無しさん:2010/03/10(水) 11:22:16
質問お願いします。
デスクトップに直接(文字とか画像とか)描画したいのですが、方法が分かりません。

このキーワードのままググってみて
hdc=GetDC(NULL)
のhdcを対象に描画する方法は見つけたのですが、これではなくて、
ウィンドウを開いた場合にも最も手前に表示されますが、私がしたいのは
一番奥、つまりデスクトップ背景画像のスグ上に表示させたいんです。
何を使えばいいんでしょうか?
563デフォルトの名無しさん:2010/03/10(水) 11:25:12
俺も知りたい
564デフォルトの名無しさん:2010/03/10(水) 11:36:14
ウインドウ列挙して全部クリップしたら
565デフォルトの名無しさん:2010/03/10(水) 11:55:25
ありがとうございます。それでやってみます。
566デフォルトの名無しさん:2010/03/10(水) 13:07:14
GetDesktopWindow関数からハンドルを取ってきちゃダメ?
そこからDC探って、ビットマップ作成すればいいんじゃね?
567デフォルトの名無しさん:2010/03/10(水) 19:53:05
GetDC(NULL)はプライマリモニタのDCが
返ってくるから、普通にやると上書きされる
568デフォルトの名無しさん:2010/03/10(水) 20:12:54
その壁紙のビットマップファイルの複製を作って
そこに好きな文字を書く。
レジストリを書き換えて壁紙に設定
これ以上に強力な方法はないだろ
569デフォルトの名無しさん:2010/03/10(水) 20:36:53
猫にあったな<デスクトップに図形描画
570デフォルトの名無しさん:2010/03/10(水) 21:06:09
ここはActiveDesktopの出番だな!

Windows7で試したら、インスタンスは作れたけどE_NOTIMPLだった。残念。
571デフォルトの名無しさん:2010/03/10(水) 21:43:52
いやここは俺の出番!!
572デフォルトの名無しさん:2010/03/10(水) 22:02:35
PCの電源ボタンを押した際のWindowsの終了・スタンバイ・休止のメッセージをフックしてキャンセル(捨てる)することのできる出来るAPIありませんか?
SetWindowsHookExでできるんじゃないかと思ったけどなんだか違うみたいで
573デフォルトの名無しさん:2010/03/10(水) 22:11:15
刮目せよ!!
WM_QUERYSESSION
WM_ENDSESSION

あそうそう、戸田恵梨香ちゃんかわいいよね
574デフォルトの名無しさん:2010/03/10(水) 22:22:33
>>573
ありがとうございます!
適当にウィンドウ作ってやってみる
Win7なのがちょっと心配
575572:2010/03/10(水) 23:24:49
ShutdownBlockReasonCreate()
WM_QUERYSESSION
でシャットダウン・ログオフをキャンセルさせることはできたのですが
スリープの方がうまくいきません

調べてみたところXPまではスリープ時に送られてくるWM_POWERBROADCAST / PBT_APMQUERYSUSPENDに対して
BROADCAST_QUERY_DENYを返すことでスリープ以降をキャンセルできたようなのですが、Vista以降はうまく動作しないようです
SetThreadExecutionState(ES_SYSTEM_REQUIRED | ES_CONTINUOUS)も試してみたのですが効果がありませんでした
Windows7で同じような処理をする方法はないでしょうか?
576デフォルトの名無しさん:2010/03/10(水) 23:28:44
VBでUSB-シリアル変換ケーブルを使う通信アプリ作ってるんですが、
ポーリングのためにWriteFileするタイミングで
ケーブル(USB側)を引っこ抜くとWriteFileが返らぬ人になって困っています。
ポートも握り締めたまま逝ってしまわれるので、どうにも・・。

エラーで良いので戻って欲しいのですが、
どういう方法が一般的なのでしょうか?
577デフォルトの名無しさん:2010/03/10(水) 23:33:32
スレッドでやれば
578デフォルトの名無しさん:2010/03/11(木) 00:06:30
>>576
overwrapped
579576:2010/03/11(木) 00:49:23
ありがとうございます。

>>577
戻ってこなければスレッドごと破棄でポートを
手放してくれますかね〜。やってみまつ。

>>578
hmm...OVERWRAPPEDだと処理がすぐに返るんですね!
タイムアウトの処理が難しそうですが挑戦してみます。
こっちの方がシンプルなのかなぁ。
580デフォルトの名無しさん:2010/03/11(木) 16:05:17
ディレクトリ巡回するコードでリパースポイントやらシンボリックリンクやらで
無限ループに陥るのを防止するコードで何かいいのないですか。
深さかパスの長さに制限つけちゃうのが手っ取り早いとは思いますが厳密とは言い難いです。
581デフォルトの名無しさん:2010/03/11(木) 16:32:18
そこまで分かってるのにFILE_ATTRIBUTE_REPARSE_POINTに何で目が行かないんだYO
582デフォルトの名無しさん:2010/03/11(木) 17:21:57
リパースを阻止したいんじゃなくて循環を阻止したいんじゃないか?
それならルートからGetFileInformationByHandleを呼び出してVolumeSerialNumberとFileIndexが全て一致しないか調べるくらいしか思いつかない
583デフォルトの名無しさん:2010/03/11(木) 20:50:02
>>580
一回見た場所を覚えておいて同じところに戻ってきたらそこで枝を打ち切って幹に戻ればよい
584デフォルトの名無しさん:2010/03/11(木) 21:06:06
オレならディレクトリ情報でハッシュ作って照合する
585デフォルトの名無しさん:2010/03/11(木) 23:15:20
HDDのバックアップ取るフリーウェアが循環対策してなくてえらい目にあったことならある
586デフォルトの名無しさん:2010/03/12(金) 02:19:21
/etc に symlink してるアホがいて
chmod -Rf 777 /usr/hoge/fuga
みたいなことしたら
/etc 以下全部 777 になって焦ったことはある
あれはなんだったんだろう
587デフォルトの名無しさん:2010/03/12(金) 04:05:08
そもそもディレクトリを巡回する事自体が間違ってる
588デフォルトの名無しさん:2010/03/12(金) 04:31:44
rootユーザーでそんなことしなければエラーで止まるだろうに
589デフォルトの名無しさん:2010/03/12(金) 04:49:07
とりあえず糞OS使ってる奴はスレ違いだから即座に死ぬように
590デフォルトの名無しさん:2010/03/12(金) 05:25:29
ここはWIN32APIスレだぞ
591デフォルトの名無しさん:2010/03/12(金) 05:46:31
クソが付くOSはリナクソとOSエックソの二つだけだ
592デフォルトの名無しさん:2010/03/12(金) 07:41:51
>>575
それ、本当にスリープに移行しているのか?
画面の出力が止まっているだけじゃないか?
593デフォルトの名無しさん:2010/03/12(金) 09:13:38
>>592
Vista以降はPBT_APMQUERYSUSPENDが省かれている
594デフォルトの名無しさん:2010/03/12(金) 13:44:59
>>410
ヒント:キーロガーの逆
595デフォルトの名無しさん:2010/03/12(金) 15:13:47
ガ・・ロキー?
596デフォルトの名無しさん:2010/03/12(金) 17:19:05
>>410
俺ならサービス作ってそっから一定間隔でクリップボードからにするプログラム呼び出すか
クリップボード関連のAPIをフックするかな
これならプログラムがLocal System Accountで動くからすべてのプログラムを制御できる
597デフォルトの名無しさん:2010/03/12(金) 17:39:41
そしてそれらの努力はOfficeのクリップボード履歴により無に帰すのであった
598デフォルトの名無しさん:2010/03/12(金) 17:48:16
普通にテストと称して即興で学習内容を絡めた例題を出して作らせればいいじゃない。
宿題なんて所詮はテストの為の予習復習だろ。
599デフォルトの名無しさん:2010/03/12(金) 22:40:46
他人の文書をコピーする以外にもクリップボードにはいろいろな使い方があるんだが、
それらもすべて封じてしまうのか。
不便じゃのう。
600デフォルトの名無しさん:2010/03/12(金) 22:59:41
ファイルにキーボード入力履歴を保存したり
それを読み取って指定したウィンドウ
に送るコントロールを誰か作るだろうから
そういうサービスがあってもコピーは横行だろから
効果は薄いだろね。(IMEの自動学習をOffにしないと
ならんだろうが)
601デフォルトの名無しさん:2010/03/13(土) 01:20:36
コピペ禁止って手段が目的になってる気がするな。
本来の目的は、生徒にちゃんと理解させることだと思うんだけど。
それなら結局テストとかで判断できそうなんだけどな。
602デフォルトの名無しさん:2010/03/13(土) 02:04:31
つーかネットワーク構成で教師のPCと各生徒のPC以外の
リンクを禁止させ(IP生徒間では非公開。リブート=ログオン単位に
変化させる)、FDもDVDROMとかも付けない、USBメモリが使えないようにUSB端子をボード上で断線させる(ハンダコテだけで十分できる)キーボードマウスはUSBタイプだがPS/2変換を行う。
教師との通信はクリップボードが使えない専用ソフトで行う。
Windows標準装備も含め不要なアプリケーションは全部外す。
当然インターネットにも繋げない。
教材はすべて画像ファイルにして、専用ビューワーで閲覧させる。
これくらい徹底的にやらないと教育現場じゃ使えないだろ
但し教師のほうも3年は休職して特別訓練を受ける必要は
あるだろうが
603デフォルトの名無しさん:2010/03/13(土) 02:17:19
>>602
教師の方は精神病院で療養を受ける必要があるな
604デフォルトの名無しさん:2010/03/13(土) 02:19:39
>>602の言ってる事の半分が無意味と意味不明で構成されてる
605デフォルトの名無しさん:2010/03/13(土) 02:22:09
PCを媒体とした教育では、教師は、学習作業の進行と
学習データ回収作業に徹し
606デフォルトの名無しさん:2010/03/13(土) 02:40:58
教師=精神病医師であると同時に精神病患者である
これでよくね?
607デフォルトの名無しさん:2010/03/13(土) 02:48:26
>>602はドシロウトの妄想だから読んでも無駄
今の学校はもっとスマートに運用してる
608デフォルトの名無しさん:2010/03/13(土) 02:52:11
>>607
どんな風に?
609デフォルトの名無しさん:2010/03/13(土) 02:55:44
生徒の耳に1000Base-T端子が付いてるからそこに
ケーブル繋いで...だろw
610デフォルトの名無しさん:2010/03/13(土) 04:02:46
最近の子供は恵まれてるよ。公立小学校でもサーバルームがある。
学校ごとにドメイン組んで、生徒には個別にアカウントが与えられてる。
権限設定して生徒同士ではファイルがコピーできないようになってる。
USBメモリ対策は企業なんかでやってるのと同じ。
インターネットも普通に使えるし、かなり金と手間をかけてシステム組んでる。
こないだ父兄の見学会に行ってびっくりしてきたとこ。
611デフォルトの名無しさん:2010/03/13(土) 04:24:19
そりゃ教師だってPCやりたいだろうからなw
だがいずれほぼ一生PCに付きまとわれる運命の
星に生まれた現代人にとっては、学校だけはそう
でない場所だと願いたいものだぜw
612デフォルトの名無しさん:2010/03/13(土) 05:13:49
とはいえそういう子供たちは
パソコンがプログラミングして使うものだなんて知らずに育つんだろうか
613デフォルトの名無しさん:2010/03/13(土) 05:17:28
>>611みたいな時代錯誤のPCアレルギー患者が何故このスレに?
614デフォルトの名無しさん:2010/03/13(土) 05:37:20
断線に半田ごて・・・だと?
615デフォルトの名無しさん:2010/03/13(土) 05:57:02
PCアレルギーだからPCの世界に入りPCを批判するも
PCでPC教育せざるを得ない現実を憂う なあんてね

>>614
ハンダを溶かしてポンプで吸い取って一時的にコネクタとか
を機能停止させた経験とかある世代なんてもう40代
後半以降が主流だろな(目的を完全に達することができる
かどうかは回路次第だが)
616デフォルトの名無しさん:2010/03/13(土) 06:26:19
昔はカッターナイフで基板のパターン削ったり
ICの足を上げたりとかやったっけ

今はたいていのことがソフト的にできるし、学校だと
クライアントが何百台もあるのにハンダゴテとか不可能だし
そんなことしなくてもUSBは殺せるんだし

というわけで、>>410はもうちょっとWindowsの
内部の勉強をして別の方法を考えた方がいいと思うよ
クリップボード消されると普通に文章を書くだけでも
推敲もできなくて能率がガタ落ちしそうだわ
617デフォルトの名無しさん:2010/03/13(土) 06:28:47
>>615
いや、別に20代でもやった事はあるが
PCパーツにポンプで吸えるほどの巨大半田は無い
やるならカッターで削る

そもそも学校はリースだし、業者に注文すれば普通にUSB無しが来る
618デフォルトの名無しさん:2010/03/13(土) 06:31:37
コピペされたら意味が無いって事はだ
その課題そのものに根本的に意味が無いって事だ
619デフォルトの名無しさん:2010/03/13(土) 07:20:59
複数のユーザーIDを与えて、そのユーザー単位に使えるアプリを
厳格に分離する。アクセス可能なフォルダーも厳しく制限する。
こうすれば安直なクリップボード経由の複製を防げるし
系統の異なるアプリケーション操作を異なるデスクトップで
行うので混乱が少なくて良くね?(XP以降じゃないと別ユーザー
の同時ログオンは無理だが)
願わくは、今は廃れたMDIにデストップ全体を表示し
同一画面に複数ユーザーセッションを同時表示することが出来るような
機能がWindowsにあれば良いんだが...
620デフォルトの名無しさん:2010/03/13(土) 07:35:37
>>619
言ってる事とやりたい事が意味不明です
621デフォルトの名無しさん:2010/03/13(土) 07:45:24
理解不能なことは理解できたみたいだ
622デフォルトの名無しさん:2010/03/13(土) 07:55:26
無知な素人ほど「ナニカ」を制限したがるんだよなぁ
そして穴だらけで意味の無いことばかり言う
623デフォルトの名無しさん:2010/03/13(土) 07:57:19
一方ソ連はD&Dでファイルをコピーしてメニューの編集→挿入で中身を取り込んだ
624デフォルトの名無しさん:2010/03/13(土) 08:01:33
>>622
そだね。一つのウィンドウに、スタートメニューとかタスクバーを
表示できるのはただ一つとかね。制限が多いよ
625デフォルトの名無しさん:2010/03/13(土) 08:14:39
>>619
だから、そういう風にデスクトップが色んな
種類の「個性的な」アプリがおんなじ額縁に
入った状態でごちゃごちゃになってるの見るの
見せるのがヤだという理由でWebアプリが増え
てきてるんだろ?今時のまともな学校だったら
何百台のPCの同時アクセスに堪える凄いスペッ
クのサーバーがフル稼働してるのが普通。
626デフォルトの名無しさん:2010/03/13(土) 08:21:49
あんまり制限しすぎるとコンピュータの勉強にならない
あれもだめこれもだめかなんだPCてつまんないじゃんと思うか
それともクラッキング技術に長けてくるかもしれないなw
627デフォルトの名無しさん:2010/03/13(土) 08:38:44
学校はとにかく「アレもダメ、コレもダメ、ソレもダメ」から入るからな
そんだけ制限するからには、一体何をさせてくれるんだ?と思ったら

今配ったプリントを打ち込んでワードファイルにしなさい

とか言うボケ老人じみた課題を出してくれる
カス教師共は初心者にPCに対する嫌悪感を植え付ける天才だわ
628デフォルトの名無しさん:2010/03/13(土) 08:47:25
電子データの基本であり最大の特徴である「複製の容易さ」を封じる事から始めるなんて教師失格と言うか、死ねばいいのに
629デフォルトの名無しさん:2010/03/13(土) 08:56:20
軍隊なんかで一番最悪な上官パターンだよな
630デフォルトの名無しさん:2010/03/13(土) 09:00:41
EmptyClipBoad.....
631デフォルトの名無しさん:2010/03/13(土) 09:05:09
端末をthin client クリップボード学校全体共有にして
サーバー側で1秒毎に
LPCTSTR "否"を
クリップボードに注入し続ければイイんじゃないかな
632デフォルトの名無しさん:2010/03/13(土) 09:08:42
>>631
全く無意味
633デフォルトの名無しさん:2010/03/13(土) 09:10:04
>>631
腹立たしいほどに無意味
634デフォルトの名無しさん:2010/03/13(土) 09:12:10
杏マナー杏マナー杏マナー杏マナー杏マナー杏マナー
  杏マナー杏マナー杏マナー杏マナー杏マナー杏マナー
 杏マナー杏マナー杏マナー杏マナー杏マナー杏マナー
  ーナマ杏ーナマ杏ーナマ杏ーナマ杏ーナマ杏ーナマ杏
   ーナマ杏ーナマ杏ーナマ杏ーナマ杏ーナマ杏ーナマ杏
   ーナマ杏ーナマ杏ーナマ杏ーナマ杏ーナマ杏ーナマ杏
  杏マナー杏マナー杏マナー杏マナー杏マナー杏マナー
  杏マナー杏マナー杏マナー杏マナー杏マナー杏マナー
 杏マナー杏マナー杏マナー杏マナー杏マナー杏マナー
635デフォルトの名無しさん:2010/03/13(土) 09:50:52
>>625
それだけの設備を持っている「今時のまともな学校」って
具体的にはどことどこ?
636デフォルトの名無しさん:2010/03/13(土) 09:59:20
くだらないからここまでな
お前らのLifeTimeをTerminateすっぞ

あと>>410は辞職しろ
637デフォルトの名無しさん:2010/03/13(土) 10:02:37
だがD&DのOLE経由でコピーできてしまうのであった・・・
638デフォルトの名無しさん:2010/03/13(土) 11:25:38
>>627
アレもダメ,コレもダメ、ソレもダメというのは
結局不用意な操作や誤操作は、個別に作ってあるアプリ
同士が干渉して収拾がつかない結果につながるから
ということが多いんでね?
単独アプリならUndo対応しているものが多いが
複数アプリ連係操作の場合はそうとも限らんから。
連係操作して始めて意味を為すアプリグループも
あるから単独のアプリの全画面表示を切り替えて
というインターフェースは今時あり得ないことは
言う迄もないし...
639デフォルトの名無しさん:2010/03/13(土) 11:28:11
スレタイも読めなくなったジジイ消えろ
640デフォルトの名無しさん:2010/03/13(土) 11:54:06
大学で学生が教師のフォルダに提出した提出ファイルを編集するのは普通は不可なんだが
caclsコマンド使って権限変更したら編集・削除できるようになった

今現在はどうなってるかわからんが・・・

こういう場合どうやって回避する?caclsは外部コマンドだし
641デフォルトの名無しさん:2010/03/13(土) 11:56:11
若者(笑)ktkr
642デフォルトの名無しさん:2010/03/13(土) 11:58:16
>>640
caclsコマンドを実行できない権限のアカウントでアクセスさせる
643デフォルトの名無しさん:2010/03/13(土) 12:01:46
んだからプロセス同士の相互干渉連係を前提としていた
古き良きWin16APIに対し、原則相互不干渉を前提としつつも、
多種多様なIPCを用いて極力Wn16APIとの連続性を保持し
ようとするWin32APIの話題の原点そのものなんだが..
ついていけないワカい人が多いみたいなんで取り敢え
ずクローズね。
644デフォルトの名無しさん:2010/03/13(土) 12:26:30
>>642
後付けになってごめんね
それが俺その時学生で試しにやってみたらできたから学生全員がアクセスできてたと思う
一応ゼミの先生と事務所?システム管理?の所には報告したから大丈夫と思うけど

アクセス制限かありがとう
645デフォルトの名無しさん:2010/03/13(土) 14:16:53
"MSゴシック"で表示しても、『等幅』ではないのですが、なぜでしょう?
エディッタ上では罫線も縦横きれいに表示されるのですが、、、
646デフォルトの名無しさん:2010/03/13(土) 14:48:07
"MS ゴシック"
647デフォルトの名無しさん:2010/03/13(土) 16:31:55
>>410
つうか、なんで1秒後ごとにクリップボード消去してるのかわからん
クリップボードコピーした瞬間にクリップボード消去すればいいじゃん
負荷かからないし
648デフォルトの名無しさん:2010/03/13(土) 16:42:29
>>638>>643
ずっと変な改行してるバカ
お前話題を理解できてなさ過ぎて邪魔
649デフォルトの名無しさん:2010/03/13(土) 17:31:33
将来著作権や特許などが全部廃止されるときが必ず来るね
650デフォルトの名無しさん:2010/03/13(土) 18:00:40
>>643
お前懐古したいだけだろ?
少しは空気嫁
651デフォルトの名無しさん:2010/03/13(土) 22:07:23
んだからアプリのウィンドウを同時に沢山作って
連係して使うことが出来るようにはなったけど
逆にそれを一部制限して使うことは出来なくなって
しまった。パワーユーザーが自分で使う分には
困らないがそうでない人にそうなれるように教え
なければならない(つまり引き継ぎたい)時には
エラク苦労するねってことだろ。
クリップボードを使わせたく無いとかD&Dを禁止
したいとかはそのあたりから出てきてるんじゃね?
APIスレの住人はそういう苦労は少ないだろけど
652デフォルトの名無しさん:2010/03/13(土) 23:06:35
クリップボードを使うな、でOK。
引継ぎとかそういう話に持っていくならね。
653デフォルトの名無しさん:2010/03/13(土) 23:10:41
クリップボード監視して、テキストだったら全て「うんこ」にしちゃえ
654デフォルトの名無しさん:2010/03/13(土) 23:11:07
>>651
お前懐古したいだけだろ?
少しは空気嫁
655デフォルトの名無しさん:2010/03/13(土) 23:11:53
>>651
              ∩___∩
            /  ノ   \  ヽ
            | ●    ● |   なにマジになってんの?
          彡   (_●_)    ミ
           /、   |∪|    ,\   このAPIやるから帰れよ
          /.|     ヽノ    | ヽ
       ,,/-―ー-、, --、   .|_,|
    r-、,'''";;:;;:;::;;;;:;;::;:;:;;::;:;`'- /_,l,,__ )
   |,,ノ;;:;r'" ̄ ゙̄^"`Y'-、;;;::;:;::;:;:;:;::;:|
    .ヽ,′ ExitWindowsEx"";;;;;⌒゙')
     ´`゙'''''''''''‐-‐'"`‐-‐'"゛  `゙´
              |  .‖ /
            ("___|_`つ
656デフォルトの名無しさん:2010/03/13(土) 23:14:01
話はそう単純なもんじゃないってのは
Cのライブラリ関数使うのと同じ感覚じゃ、APIなんて
使えたもんじゃない、一筋縄じゃいかない
ってのと同じ
657デフォルトの名無しさん:2010/03/13(土) 23:21:53
>>651が何を言ってるのかさっぱり分からない
658デフォルトの名無しさん:2010/03/13(土) 23:25:20
何も言ってないに等しいから気にすんな
659デフォルトの名無しさん:2010/03/14(日) 04:02:37
鬼才すぐるw
660デフォルトの名無しさん:2010/03/14(日) 04:29:20
>>410
顔真っ赤すぎ

というか何の教師やってるのかしらんがどうせITの負け組みだろw
タスクバーのプロセス隠蔽なんて少し調べればわかるだろうに
661デフォルトの名無しさん:2010/03/14(日) 04:31:55
教師の癖に文章がやたら・・・・
662デフォルトの名無しさん:2010/03/14(日) 04:35:39
なんでまた今更半月前のレスに顔を真っ赤にしてる奴らが
湧いてきたよくわからんね。
663デフォルトの名無しさん:2010/03/14(日) 05:36:25
>>660
それプロセス隠蔽って言わない
664デフォルトの名無しさん:2010/03/14(日) 12:06:40
馬鹿な教師が居るらしいという肴があれば、それで十分宴会は開ける
665デフォルトの名無しさん:2010/03/14(日) 12:42:55
宴会まではいかないなあ。
666デフォルトの名無しさん:2010/03/14(日) 12:56:21
Windows APIってどの位覚えればプログラミングが
ラクになるんでしょうか?先輩に聞いたら
「10個程度覚えれば後は都度調べればいいけど0個じゃ辛い」
といってるんですが信じていいでしょうか?
667デフォルトの名無しさん:2010/03/14(日) 13:07:55
別に都度ググってもいいです
ただ、どのDLLがどの機能を管轄しているかくらいは知っておくといいかもしれません

/*
6個でウィンドウ表示

RegisterClassEx
CreateWindowEx
GetMessage
TranslateMessage
DispatchMessage
PostQuitMessage
*/
668デフォルトの名無しさん:2010/03/14(日) 13:14:10
10個じゃきついだろ・・・。
669デフォルトの名無しさん:2010/03/14(日) 13:18:00
ググるためにもある程度体系がわかってれば良い
670デフォルトの名無しさん:2010/03/14(日) 13:36:32
Windows API を覚えても
Windowsアプリを作ったり、Windowsの仕組みを覚えられるだけで
あまりプログラミングは楽にならない

でも画像処理とかは楽になるかもしれない
671デフォルトの名無しさん:2010/03/14(日) 14:12:45
構造体とメッセージもセットで
672デフォルトの名無しさん:2010/03/14(日) 14:34:06
おばけのQちゃんの絵描き歌をシミュレートして
繰り返しアニメーション表示するアプリをAPIだけで組みたい
んだけどどう組めばいいですか?
673デフォルトの名無しさん:2010/03/14(日) 14:36:15
まずウィンドウクラスを登録します
674672:2010/03/14(日) 14:38:25
マウスで画面のサイズを変えた際に、縦横の比率を
変えないようにし、書かれているアニメもそれに
応じて(途中迄でも)大きさを変えたいです。
675デフォルトの名無しさん:2010/03/14(日) 14:40:13
ウィンドウを表示して、その上に描画していけばいい。
で、ウィンドウサイズが変更されようとしているときに、縦横比率を変えないように変更して、
ウィンドウサイズに合わせて描画サイズを変えればいい。
676デフォルトの名無しさん:2010/03/14(日) 14:43:20
演奏してる曲と同期してアニメーションさせるって話なら少し面倒。
677デフォルトの名無しさん:2010/03/14(日) 14:46:58
タイミング固定とかならそれほどでもないだろうけどね。
678デフォルトの名無しさん:2010/03/14(日) 14:47:55
歌詞ファイルみたいなフォーマットを決めてやるとか
679デフォルトの名無しさん:2010/03/14(日) 20:10:24
マルチコア環境でプロセス毎のCPU使用率を正しく取得するにはどうすればよいのでしょう?

PdhGetFormattedCounterValueで取得してみたところ、取得できるCPU使用率は
タスクマネージャで確認できるCPU使用率の2倍になっています(2コアだから?)。
ということは取得できるCPU使用率の最大値は200となるはずと思っていたのですが
何故か100までしか取得できませんでした。(100以上は100として取得できる模様)

ちなみにWindows付属のパフォーマンスモニターで確認してみると、こちらも
タスクマネージャの2倍の値が表示されていますが、100以上の値もきっちり正しく表示されます。

取得できる上限を200にする方法か、タスクマネージャで表示されている値を
簡単に取得できる方法はありませんか?
680デフォルトの名無しさん:2010/03/14(日) 20:16:50
ちょっと取得してる部分のコード晒してみろよ
681デフォルトの名無しさん:2010/03/14(日) 20:30:47
このような感じです。

// オープン
HQUERY hQuery;
PdhOpenQuery(NULL,0,&hQuery);

// カウンタ追加
HCOUNTER hCounter;
std::string str = "\\Process(GOM)\\% Processor Time";
PdhAddCounter(hQuery, str.c_str(), 0, &hCounter );

// 3秒間の負荷計測
PdhCollectQueryData(hQuery);
Sleep(3000);
PdhCollectQueryData(hQuery);

// 計測結果取得
PDH_FMT_COUNTERVALUE fntValue;
PdhGetFormattedCounterValue(hCounter, PDH_FMT_LONG, NULL, &fntValue);

// クローズ
PdhCloseQuery( m_hQuery );

std::cout << fntValue.longValue << std::endl;
682デフォルトの名無しさん:2010/03/14(日) 20:42:15
>>666
俺なんて引数も戻り値もちゃんと覚えているのは10個もない。
ただ、どんなAPIが「存在するか」はだいたい把握している。
683デフォルトの名無しさん:2010/03/14(日) 21:16:25
>>681
PdhGetFormattedCounterValueのヘルプを見てみたが、
dwFormatにPDH_FMT_NOCAP100フラグが無いと、
100を超える値は全て100で返る仕様っぽいぞ。
家はシングルコアだから試しようが無いけどなorz
684デフォルトの名無しさん:2010/03/14(日) 21:29:01
>>683
おっしゃるとおりでした!
PDH_FMT_NOCAP100フラグを立てると100以上の値も取得できるようになりました。
ありがとうございます!
685デフォルトの名無しさん:2010/03/14(日) 22:00:40
>>666
Win32APIの目次みたいな一覧が色んな所にあるから
一通り流し読む
引数とかは一切無視
関数名と1行説明だけ読む
そんでおわり

その先輩はちょっと若いな
あんま意味の無い助言
686デフォルトの名無しさん:2010/03/15(月) 13:52:55
昔Win32本といえばpetzoldだったけどあの本も今や.net本になってしもうたな
687デフォルトの名無しさん:2010/03/15(月) 14:53:54
グローバルフック使ってプログラム側からキーボード操作したいんだけど、どうすればいいのか全然分からん
検索ワードだけでいいから誰か教えておくれ
688デフォルトの名無しさん:2010/03/15(月) 14:57:59
http://msdn.microsoft.com/ja-jp/library/cc429971.aspx
大して難しくないような


まあどうすればいいか全然分からんって言う奴は
はじめからやる気がないんですけどね
689デフォルトの名無しさん:2010/03/15(月) 15:14:17
ウィンドウメッセージを使ってるのかGetAsyncKeyState()系を使うのかで
挙動が違ってくるし、
突き詰めたらそんなに簡単な話でもないと思うけど。
690デフォルトの名無しさん:2010/03/15(月) 15:24:05
ありがと
でもググっても監視する方しか分かんないや
691デフォルトの名無しさん:2010/03/15(月) 16:22:08
送るだけならフックの必要は無いから見つからないのも当然
692デフォルトの名無しさん:2010/03/15(月) 20:19:51
シリアル通信について教えてください。
「WaitCommEvent」はタイムアウトで戻す事は出来ないんでしょうか?
タイムアウトはRead,Writeのみなんでしょうか?
693デフォルトの名無しさん:2010/03/15(月) 21:59:48
非同期通信に対応してるのだから、勝手にタイムアウトでも何でもすればいい。
694692:2010/03/15(月) 22:19:59
そのタイムアウトさせるのを、監視するスレッドを自前で作る必要があるのか
SetCommTimeoutsみたいな設定で、WaitCommEventからイベント無しで
戻せるのか知りたいんです。
695デフォルトの名無しさん:2010/03/15(月) 22:52:42
>>692
昔やった方法
・CreateFile()でPENDINGで開く
・WaitCommEvent()でイベントオブジェクトとともに渡す→すぐ返る→戻り値0、GetLastError()がPENDINGなら正常
・WaitForMultipleObjects()に指定し、でタイムアウトつきで待つ

スレッド化してるからWait〜で他のイベントオブジェクトもついでに待ってたな。

ググればどこかにサンプルがあるはず。自力で書けなかった記憶があるから。
特にPENDINGを使用する箇所
696692:2010/03/15(月) 23:23:06
>>695
PENDINGとはオーバーラップド構造体云々ってやつですか?
良く分からないので明日ヘルプ見ながら実機でちまちま試してみます、
有難うございました
697デフォルトの名無しさん:2010/03/16(火) 14:41:47
USBメモリをつけたときにタスクトレイにアイコンでるけど
このアイコンをクリックでUSB切断ってするけど
この切断を行うAPIを教えてください
698デフォルトの名無しさん:2010/03/16(火) 14:53:54
CM_Request_Device_Eject
699デフォルトの名無しさん:2010/03/16(火) 14:55:55
>>698
うわっ!!
すごいwwwwwww
ありがとうありがとう。
700デフォルトの名無しさん:2010/03/16(火) 19:16:22
Win32をやるなら、WDKのドキュメントにも目を通しておくと良いよ。
>>698 の系統なら、PnP Configuration Manager に含まれている。
701デフォルトの名無しさん:2010/03/17(水) 18:10:02
UDPでソケット通信してるんですが
recvfromで受ける時に12バイトきてるのに6バイトしか受けないと
残りは取れなくなりrecvfromの戻り値も-1になってしまいます。

えっと理想は、例えば12バイトデータが来てたとして
selectでデータありかチェックしデータありなら6バイトrecvfromする
ってのをループさせたいのですが・・・
702デフォルトの名無しさん:2010/03/17(水) 18:39:23
なんで6バイトしかバッファ確保しないの?
703デフォルトの名無しさん:2010/03/17(水) 18:45:05
recvfrom関数を呼び出してる行を見せて
704デフォルトの名無しさん:2010/03/17(水) 19:15:05
ASCII文字をユニコードで読んじゃってる?
705デフォルトの名無しさん:2010/03/17(水) 19:23:15
WinSockは-1が帰ってきてもWSAGetLastErrorだっけ?でエラー詳細をちゃんと取らないと正常終了かわからんよ
といっても12バイトじゃバッファッファにはならんか
706デフォルトの名無しさん:2010/03/17(水) 20:03:44
UDPは分割できない
707デフォルトの名無しさん:2010/03/17(水) 20:30:33
>>701
706が正解。
メッセージの大きさを事前に(ネゴして)決めておいて全部読むしかない。
708デフォルトの名無しさん:2010/03/17(水) 20:35:56
WSAEMSGSIZEが返されていたら間違いないな。
とりあえず64KB確保しとけば仕様的には絶対足りる。
709デフォルトの名無しさん:2010/03/17(水) 22:43:21
まったくどうしようもない仕様だな
710デフォルトの名無しさん:2010/03/18(木) 07:10:51
なぜわざわざそういう仕様に作ってあるのか考えず、文句をいう>>709みたいな奴は例外なく無能。
711デフォルトの名無しさん:2010/03/18(木) 07:15:09
なんでこんなに粘着アンチは毎日ネガキャンに必死なんだろうな
周囲の環境を否定することでしか自我を保てない哀れな野郎だ
712デフォルトの名無しさん:2010/03/18(木) 09:56:59
リストビューのヘッダの各カラムにも
ItemDataに相当する値を入れられるような仕組みは無いのでしょうか。
このカラムにはどんな項目を表示しているのかの情報を
カラム番号を使って取得できると便利なのですが。
713デフォルトの名無しさん:2010/03/18(木) 11:57:16
新しいヘッダ(_WIN32_WINNT >= 0x0600)見ても無いね
いつもの如くSetPropするしかないんでしょう
714デフォルトの名無しさん:2010/03/18(木) 12:29:08
LVM_GETHEADER HDM_GETITEM HDITEM lParam
715デフォルトの名無しさん:2010/03/18(木) 14:22:26
いろいろと役に立たないレスをいろいろどうも。
とりあえず>>702みたいな馬鹿なレスは勘弁してくれ
お前等ごみにわかりやすいようにサイズを言っただけなんだからw

ようするにだな、例えばな、例えばだからな?例えばつってんだろ!
通常は6バイトのデータがくるとする
だが、その6バイトのデータが立て続けてきちゃって12バイトになった場合にだ
今の使用だと、全部取ってから自分で分割ってことせんといかんが
それをまずは6バイトゲットして処理、そしてselectでデータありと判断
んで残りの6バイトをゲットみたいな感じでやりたいんよ。
要するにシリアルやファイル感覚で。楽したいんだよ!
まあお前等って頭悪いから聞いても無駄だったんだけど
とりあえず聞いてみただけだ、ゴミ同士で喧嘩するなよ
716デフォルトの名無しさん:2010/03/18(木) 14:28:33
長文でUDP否定すんなド低脳
717デフォルトの名無しさん:2010/03/18(木) 14:31:11
ほんとお前等って糞の役にも立たんくせに煽るのだけは必死だよな
718デフォルトの名無しさん:2010/03/18(木) 14:33:44
小学生はTCP使ってなさい。
719デフォルトの名無しさん:2010/03/18(木) 14:38:02
TCPでもできないだろゴミ
つーかUDPを知らないからってすぐTCPってほざくのやめれ
720デフォルトの名無しさん:2010/03/18(木) 14:41:20
UDPのバッファリングは境界を見失うので提供されない
バッファリングしたければ自分でやれ
721デフォルトの名無しさん:2010/03/18(木) 14:45:36
自分でやんなきゃダメなんだよなあ
まあ、そうしますよ。
722デフォルトの名無しさん:2010/03/18(木) 15:30:13
>>715
UDPは分割されないし、結合もされない。
出来ない事をやりたがるのが低脳の証。
723デフォルトの名無しさん:2010/03/18(木) 16:50:13
>>719
TCPなら出来るが、いったい何を言ってるんだ?

そもそもUDPで単位が区切られているのは、データが損失した場合の保証がないので、
突然途中が抜けてしまった場合などにデータの区切りが不明になってしまうから。
しかもTCPと違って同一アドレスから送られてきている保証もないし、順番が前後する可能性だってある。
そういった問題に対処するのが嫌な人間のために、面倒な処理をTCPが引き受けてくれるようになっているんだろ。
724デフォルトの名無しさん:2010/03/18(木) 16:53:34
>>722-723
小学生の相手するのやめてくれるか?
725デフォルトの名無しさん:2010/03/18(木) 17:37:22
遅レスで必死に煽ってる奴いてワロタ
726デフォルトの名無しさん:2010/03/18(木) 23:19:36
MFCのGetSafeHwnd()と同じ役割をする関数ってありますか?
727デフォルトの名無しさん:2010/03/18(木) 23:22:48
どう答えたらいいか悩むなぁ
728デフォルトの名無しさん:2010/03/18(木) 23:25:05
>>726
MFCの実物のソースコードを眺めて考えればいいんじゃね?
729デフォルトの名無しさん:2010/03/18(木) 23:35:54
MFCのソースがないので見比べられないんです・・・・
730デフォルトの名無しさん:2010/03/18(木) 23:45:04
>>726,729
こんだけのことしかやってないぞ
afxwin2.inl
_AFXWIN_INLINE HWND CWnd::GetSafeHwnd() const
{ return this == NULL ? NULL : m_hWnd; }
731デフォルトの名無しさん:2010/03/19(金) 04:13:14
これだけのことのために長い関数名つけて
あまつさえ覚えなきゃならないのは苦痛だな
732デフォルトの名無しさん:2010/03/19(金) 07:29:02
thisがNULLでメンバを参照するって
どういう状況を想定してるんだろ
733デフォルトの名無しさん:2010/03/19(金) 07:56:56
初心者は時々とんでもないことをやらかすからさ
734デフォルトの名無しさん:2010/03/19(金) 07:57:20
CreateしていないCWndとインスタンス自体が存在しない状態を一つに纏める時?
アサートを書く時は便利かも。
735デフォルトの名無しさん:2010/03/19(金) 11:08:05
たまにインスタンスの実体に対して
if (m_wnd.GetSafeHwnd() == NULL)
みたいなコードを見るが、これは関数の意味をわかっていないんだろうな。
736デフォルトの名無しさん:2010/03/19(金) 11:22:41
>>735
MSDN読んで来い
737デフォルトの名無しさん:2010/03/19(金) 15:40:38
CPU名を取得するにはどうしたらよいのでしょうか?
738デフォルトの名無しさん:2010/03/19(金) 15:41:47
>>737
WMI使うのが簡単。
739デフォルトの名無しさん:2010/03/19(金) 16:18:58
めんどくせーから、ソース晒してくれ
740デフォルトの名無しさん:2010/03/19(金) 16:29:46
>>738
簡単なサンプルを教えていただけないでしょうか?
741デフォルトの名無しさん:2010/03/19(金) 16:31:24
とりあえずおぱいうp
742デフォルトの名無しさん:2010/03/20(土) 01:20:50
Win32APIに限ったことはないのですが、VC++においてincludeした場合、
コンパイラは一体どこを参照しているのでしょうか?
例えばコンピュータ上でwindows.hを検索すると、たくさん合致するため、
どのwindows.hをincludeしているのかわかりません。
743デフォルトの名無しさん:2010/03/20(土) 01:27:06
順番にwindows.hを削除していけばその内わかる
744デフォルトの名無しさん:2010/03/20(土) 01:30:16
>>743
嘘教えるなや。
>>742
Visual Studioのオプションで設定欄があるよ。
745デフォルトの名無しさん:2010/03/20(土) 01:58:16
>>744
どこが嘘なんだ?
消していけば分かるだろ?
746デフォルトの名無しさん:2010/03/20(土) 02:00:53
まぁ嘘ではない
747742:2010/03/20(土) 02:00:58
>>744
ありがとうございます。
$(VCInstallDir)includeなどとあったんですが
VCInstallDirに設定されているパスはどこで見ることができるのでしょうか?
コマンドプロンプトでsetと打ったのですが、VCInstallDirはありませんでした。
748デフォルトの名無しさん:2010/03/20(土) 02:12:18
>>747
VCInstallDirは環境変数であるときもあれば、そうでない時もある。
Visual StudioをGUIとして使ってるときは環境変数ではない。
また、VCInstallDirはvcpp自体のインストールPATHを指す固定値なので見る方法は存在しない。

一方、コマンドラインから使用する場合は環境変数として使用する。
その際は事前にvcvars32.batを呼び出しておく。
749デフォルトの名無しさん:2010/03/20(土) 02:47:15
だから削除しないまでもコンパイル時にエラーになるように順番にちょっとだけ書換えていけば良いだろ
なんで応用と言うのも憚れるような単純な工夫すら出来ないんだ
750デフォルトの名無しさん:2010/03/20(土) 03:04:06
適当なシンボルをgoto definitionすれば、windows.hを含むディレクトリに行きあたるだろ。
751デフォルトの名無しさん:2010/03/20(土) 03:15:17
ま、いまどき、基本的にファイルは消さないほうがいい
やるならrenameで(作業後復元をお忘れなく)
752デフォルトの名無しさん:2010/03/20(土) 03:20:32
全部マクロ展開してFC掛けてみるとかね
753デフォルトの名無しさん:2010/03/20(土) 07:23:28
特定の条件の時、MessageBox()で常に最前面にメッセージを表示させることができません。

特定の条件とは、MessageBoxを呼び出しているプログラムのウィンドウが非表示状態のときです。
ダイアログを作成し、ダイアログが表示されている状態でMessageBoxを呼び出した場合は
常に最前面に表示されることを確認しています。

また、どちらもhWndにNULL、uTypeにMB_TOPMOSTが指定されていることを確認しています。

原因がわからないのですが、何か仕様で制限されていたりするんでしょうか?
754デフォルトの名無しさん:2010/03/20(土) 08:18:51
hWndにNULL
755デフォルトの名無しさん:2010/03/20(土) 11:45:25
ダイアログ以外の通常のウィンドウ上で Tab ボタンを押した時に
フォーカスを次のコントロールに移す機能って
Win32API レベルでは提供されていないのでしょうか?
あと同様にニーモニック機能(&F)とかでそのコントロールに移る機能についても

ダイアログをリソースで作っておいた時にはできるみたいなのですが
756デフォルトの名無しさん:2010/03/20(土) 11:49:03
ある
757デフォルトの名無しさん:2010/03/20(土) 14:00:58
ダイアログとして作らないと出来ない

メッセージループの方で処理すればよいかと
SetFocus(GetNextDlgTabItem(メインウィンドウ,GetFocus(),Shiftキーフラグ))
758デフォルトの名無しさん:2010/03/20(土) 14:11:34
>>757
Tabによる自動遷移に関してはダイアログじゃなくても可能

IsDialogMessageとTranslateAccelerator
759デフォルトの名無しさん:2010/03/20(土) 14:27:33
お、IsDialogMessageで出来た
IsDialogMessageがFALSEならDispatchすればいいのね
760デフォルトの名無しさん:2010/03/20(土) 17:05:23
VC++ 2008でDLLを作りたいと思っています。このDLLはVC#2008から使うつもりです。
このDLLにウィンドウプロシージャでWM_COMMANDを受け取った時の動作も記述しておくことはできますか?
761デフォルトの名無しさん:2010/03/20(土) 17:21:24
>>760
それならC#でWM_COMMANDを処理するプロシージャを書いた方が早いよ。
762デフォルトの名無しさん:2010/03/20(土) 17:57:09
>>756-759
どうもです。出てきた関数名あたりで調べてみますです。
763デフォルトの名無しさん:2010/03/21(日) 12:36:01
DialogBoxで、Ctrl+Cが押されたら何か反応する方法を教えてください。
RegisterHotKey/WM_HOTKEY以外でお願いします。
764デフォルトの名無しさん:2010/03/21(日) 13:16:54
DNSAPI.DLLは再配布可能ですか?
765デフォルトの名無しさん:2010/03/21(日) 19:50:32
>>763
SetWindowsHookExを使うのが手っ取り早い。

>>764
DNS関連のAPIはOS付属のDLLを使うんじゃなかったっけ?
766デフォルトの名無しさん:2010/03/21(日) 22:37:09
質問があります。

Bitblt()でデスクトップの画像を取得して動画を作りたいのですが
Aeroが有効だと時間がかかってフレームレートがガタ落ちしてしまいます。
Aero無効にせずに高速で処理できる方法はないでしょうか?
767デフォルトの名無しさん:2010/03/21(日) 22:44:05
>>766
Vista以降ではGDIはレガシー扱いなので、使用しないことが望ましい。
768デフォルトの名無しさん:2010/03/21(日) 22:52:27
Vista以降でもGDIのbitbltは十分に速くね?
DIBにbitbltでコピーしてDirectXのテクチャを作って貼り付け
拡大縮小表示ができるアプリを書いたけどヌルヌルに動いてるよ
769デフォルトの名無しさん:2010/03/21(日) 23:03:25
1920*1080の解像度でbitblt()が10FPSぐらいしかでず・・・
Aero切れば30以上でるのでAero切ることにします。
ぐぐったりしましたが解決方法なさそうなので
770デフォルトの名無しさん:2010/03/21(日) 23:33:29
すごいスペックのPC使ってるな
771デフォルトの名無しさん:2010/03/21(日) 23:42:08
ディスプレイは普通じゃね?
772デフォルトの名無しさん:2010/03/21(日) 23:46:22
HDサイズの画像処理を不足なく行うのは、未だにハードウェアの支援が必要だ。
ATI RadeonだってIntel GMAだって最近は型番に「HD」を入れてるだろ?
マーケティング的な意味合いもあるが、
基本的にはHDサイズのリアルタイム処理ができるようになったことを意味している。

地デジ対応でキャプチャを防ぐためにAero切りを行うのはまあ仕方ないが、
そうでもない単なる手抜きでそんな対応をするのはちとなあ、と人事ながら思うな。
773デフォルトの名無しさん:2010/03/22(月) 04:32:20
ウィンドウを作成する時の事についてですが、
***.lpszMenuNameにメニューネームを登録するだけじゃ
メニューは表示されないのでしょうか?
リソースファイルにIDR_MENUがメニューとして作成されているのですが、

***.lpszMenuName = "IDR_MENU";
としても、メニューが現れません。なぜでしょうか?
774デフォルトの名無しさん:2010/03/22(月) 04:34:29
>>773
ヒント: 猫でもわかる
775デフォルトの名無しさん:2010/03/22(月) 04:35:43
>>773
ブラジルではよくあること
776デフォルトの名無しさん:2010/03/22(月) 04:36:51
>>774
そこにはそう書いてあったんですが、どうやってもメニューができないんです
777デフォルトの名無しさん:2010/03/22(月) 04:38:54
>>775
解説求む
778デフォルトの名無しさん:2010/03/22(月) 04:42:57
>>776
どこか別の所を間違えてないか?
猫に書いてあるそのままのコードは機能するか試したか?
779デフォルトの名無しさん:2010/03/22(月) 04:43:17
780デフォルトの名無しさん:2010/03/22(月) 04:45:47
******.lpszMenuName = MAKEINTRESOURCE(IDR_MENU);
とすれば登録できました…。

猫でもわかるは嘘書きすぎですね…。

ウィンドウ定義時に
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPreInst,
LPSTR lpszCmdLine, int nCmdShow)
のhPreInstの比較を行っているし…
32bitアプリでは絶対やっちゃいけないことなんじゃ…
http://homepage2.nifty.com/c_lang/sdk/sdk_00.htm
781デフォルトの名無しさん:2010/03/22(月) 04:51:33
>>780
わかってねーのはてめーだ。

06のサンプルでは"SAMPLE02"という名前でメニューリソースを
一緒にコンパイルしてるからWNDCLASSに"SAMPLE02"を与えるだけで勝手に探してくれる。

てめーがやってるのは整数値による指定だ。
だからMAKEINTRESOURCE(IDR_MENU)マクロの使用が必要だ。
782デフォルトの名無しさん:2010/03/22(月) 04:58:03
数値と文字列の違いくらいわかりなさいよねプンプン
783デフォルトの名無しさん:2010/03/22(月) 04:58:48
>>781
よく意味がわかりません。
詳しく
784デフォルトの名無しさん:2010/03/22(月) 05:00:38
>>782
あの…
普通に***.lpszMenuName = "IDR_MENU"; とやってもできなかったんですが汗
785デフォルトの名無しさん:2010/03/22(月) 05:03:13
>>784
アホかてめーは。

元にしてるサンプルと一言一句同じに書き写して動かないならともかく、
自分でかってに一部を書き換えてるんだから、その責任は自分でとれ。
786デフォルトの名無しさん:2010/03/22(月) 05:05:25
Win32 に手を出す前に、C からやり直した方がいいんじゃないか?
787デフォルトの名無しさん:2010/03/22(月) 05:09:55
>>773
メニューのリソースの識別子を"IDR_MENU"で作ってないから。
"IDR_MENU"とIDR_MENUは別モノ。
"IDR_MENU"で作ってあれば、そのソースでちゃんと動く。
788デフォルトの名無しさん:2010/03/22(月) 07:05:39
資源国とリオデジャネイロとリソースかけたのかな?
高度だな・・・
789デフォルトの名無しさん:2010/03/22(月) 07:26:11
「リソースが見つからない」は誰もが通る道

> 32bitアプリでは絶対やっちゃいけないことなんじゃ…
そんな事はないけど、常にNULLになるから比較とか意味のない無駄なコードだって事
その人はWin16の頃からやってるプログラマなので、つい書いてしまっただけだと思う
TEXTマクロ使ってなかったり、文字列にchar配列決め打ちとか
790デフォルトの名無しさん:2010/03/22(月) 07:29:10
馬鹿ほど人が間違ってる事にする物だ
馬鹿は今までの人生で全て人が間違ってた事にし続けたから、未だに改善もされず馬鹿なまま
791デフォルトの名無しさん:2010/03/22(月) 08:02:59
猫に限らず、昔のWindowsプログラムの本のサンプルを参考にする場合、
何箇所か読みかえる必要があるのは確かだな。

特に文字列部分は
char→TCHAR
”・・・”→_T("・・・")
とか。

あとはWin9x系でOKだけどNT系でNGなAPIとか。
#何かあったっけ?
792デフォルトの名無しさん:2010/03/22(月) 08:36:11
両対応にするわけでもないのに何も考えずにT系を使う馬鹿が多いよな。
結局ビルドオプションを変更して両方で確認していないから、変更したらエラーを出しまくる。
両対応でないのなら素直に文字列にはLを付けろという話だ。
793デフォルトの名無しさん:2010/03/22(月) 08:39:34
つまり _tWinMain でなく wWinMain
MessageBox でなく MessageBoxW
... を使えば良いんですね
794デフォルトの名無しさん:2010/03/22(月) 08:42:13
>>791みたいにTCHAR/_TCHARの区別がついてないやつも多い
795デフォルトの名無しさん:2010/03/22(月) 08:57:10
>>780
わかってねーな。やっちゃいけないのは、複数起動の確認の為に
preinstが「NULL」以外である事を期待する事。
796デフォルトの名無しさん:2010/03/22(月) 09:53:51
つまりms固有のマクロを使わず自分で用意して、
更にはwindows.h系のヘッダも自分で用意すればいい訳ですね。
797デフォルトの名無しさん:2010/03/22(月) 09:56:37
どうせ9x系に対応する気ないなら
どっちでもいいんじゃね
798デフォルトの名無しさん:2010/03/22(月) 10:02:18
>>796
C/C++以外の処理系使うときじゃ普通にやってることだしね
799デフォルトの名無しさん:2010/03/22(月) 13:53:33
>>754
hWndにNULLを入れている場合でも、呼び出し元のウィンドウが表示されていると
常に最前面に表示されていたので他に何か違いがあると思ったのですが、
原因はhWndにNULLを指定していることなのでしょうか?
800デフォルトの名無しさん:2010/03/22(月) 14:03:17
そりゃそうだ
801デフォルトの名無しさん:2010/03/22(月) 18:20:51
GetSaveFileName() を使って [名前を付けて保存] ダイアログボックスを
表示させると、メモリ使用量が一気に 4000K ほど増加し、OK またはキャンセルを
実行しても使用量が元に戻らないのですが、これはそういうものなのでしょうか?
802デフォルトの名無しさん:2010/03/22(月) 18:31:23
50回それを繰り返してメモリ消費量が200Mも増えたというのなら
ウィルスの感染を疑おう
803デフォルトの名無しさん:2010/03/22(月) 18:59:39
>>801
デバッガの出力を見てみ
呼び出したときに大量のDLL読み込んでそのまま解放してないからしかたがない
そういうもんだ
804デフォルトの名無しさん:2010/03/22(月) 19:53:31
納豆食う
805デフォルトの名無しさん:2010/03/22(月) 22:40:32
リソースエディッタで作ったダイアログだと
エディットやリストボックスの枠が立体的に表示されるのに
普通にcreatewindowで作るとただの黒い線の枠(ビジュアルスタイルにしても)になるのはなんで?
806デフォルトの名無しさん:2010/03/22(月) 22:57:26
自分でそういう風に作っているからに決まっているだろ
807デフォルトの名無しさん:2010/03/22(月) 23:00:32
要するに、デフォルトで作るウィンドウが古くさいってだけだろ。
ちゃんとスタイル指定すればダイアログとかと同じになるよ
808デフォルトの名無しさん:2010/03/23(火) 01:47:15
>>794
API使う場合は_TCHARが普通だっけ?
#やべ、意識してなかったw
809デフォルトの名無しさん:2010/03/23(火) 02:09:42
ちょっと教えてください。
Win32API というより、コモンコントロール話になるんですが、
ツールバーへ TB_ADDSTRING で SendMessage した文字列を
変更したいんです。

要は、ツールボタンの文字を変更したいんですが、
その際に文字列リソースへのインデックスもきれいにしたいんです。
(前回追加した文字列はツールバーの文字列リソース上に残しておきたくないんです)

変更またはまっさらにする方法を教えてエロい人!!
810デフォルトの名無しさん:2010/03/23(火) 02:25:26
>>809
新しくツールバーを作り直して必要なデータをコピーする
811デフォルトの名無しさん:2010/03/23(火) 07:16:56
>>808
_TCHARはtchar.h、TCHARはwinnt.hで宣言されている。
VC2008付属のヘッダだと、/Zaでコンパイルしなければtchar.hでもTCHARは使えるけど。
昔どうだったかは流石に覚えていないな。
812デフォルトの名無しさん:2010/03/23(火) 09:22:12
コントロールパネルの「キーボード」で設定する「表示までの待ち時間」を取得するAPIはありますか?
この値を使ってタイマをセットしたいのですが。
813デフォルトの名無しさん:2010/03/23(火) 09:43:19
APIに関する良書を探しています
APIで学ぶWindows徹底理解 安室浩和
アマゾンではこの本の評価が高いようですが
これを買っておけば間違いないでしょうか・・

ちなみにAPIに関する知識はまるでないです
814デフォルトの名無しさん:2010/03/23(火) 10:14:55
_で始まるのは実装系依存って話だからTCHAR使うのが普通じゃないのか
815デフォルトの名無しさん:2010/03/23(火) 10:18:22
<windows.h>とか#includeするならTCHARでいい
816デフォルトの名無しさん:2010/03/23(火) 10:24:20
>>815
いや、するだろ。常識的に考えて。
817デフォルトの名無しさん:2010/03/23(火) 10:45:31
_UNICODEとUNICODEも区別がつかないので両方指定してるな。
818デフォルトの名無しさん:2010/03/23(火) 10:53:27
>>813 おいらは旧版しか持ってないけどプログラミングWindows、所謂ペゾルド本
これ読んだらAdvanced Windowsな
819デフォルトの名無しさん:2010/03/23(火) 11:03:13
基本的には
_UNICODEはCRT/ATL/MFC
UNICODEはWin23API
msacm.hとか例外もあるし片側が定義されていると自動的に定義される場合もある
820デフォルトの名無しさん:2010/03/23(火) 11:55:46
TCHARの件を話し込みすぎてたw

>>812
SystemParametersInfo関数でSPI_GETKEYBOARDDELAY指定
http://msdn.microsoft.com/ja-jp/library/cc429946.aspx
821デフォルトの名無しさん:2010/03/23(火) 12:04:09
>>820
GetSystemMetricsとか探してました。
ありがとうございます。

ただこれ、戻り値は0〜3で、実際のミリ秒ではないのですね。
250*(戻り値-1)でよさそうな感じだけど、
「ハードウェアによって異なることがあります」とか微妙なこと書いてあるし。
822デフォルトの名無しさん:2010/03/23(火) 12:04:55
訂正。
250*(戻り値+1)です。
823デフォルトの名無しさん:2010/03/23(火) 13:11:27
うるさいぶたがあ
824デフォルトの名無しさん:2010/03/23(火) 13:17:51
コントロールパネルの「キーボード」で設定する「表示までの待ち時間」
はミリ秒で設定するわけじゃなくてトラックバーでの4段階じゃないか
825デフォルトの名無しさん:2010/03/23(火) 14:13:07
>>824
インターネットのプロパティのセキュリティレベルのように、
いくつかの段階をプリセット値として選択できるようになっていて、
OS内部ではミリ秒単位で持ってるのかなと思ってました。

OS自体は0〜3の値で管理していて、それに対応する実際のミリ秒単位の値は
ハードウェアが独自に関連付けているということになるのですね。
826デフォルトの名無しさん:2010/03/23(火) 14:14:31
Kbd Accとかいうソフトで結構自由にキーリピートの速度変えられてるけど何やってんだろうなあれ
827デフォルトの名無しさん:2010/03/23(火) 14:18:31
もともとBIOS設定で変えられるだろう。
設定する方法はあったよ
828デフォルトの名無しさん:2010/03/23(火) 16:39:33
じゃあ教えろよごみがあ
829デフォルトの名無しさん:2010/03/23(火) 16:50:36
おしえてください、だろ?
830デフォルトの名無しさん:2010/03/23(火) 16:52:24
おしえてくださいうじむしさんm(__)m
831デフォルトの名無しさん:2010/03/23(火) 16:57:24
バカの癖にプライドは一人前
プライドが大事なら自分でなんとかしろ
832デフォルトの名無しさん:2010/03/23(火) 17:04:13
BIOS設定教えろってのならスレチだから別のとこ行ってね
833デフォルトの名無しさん:2010/03/23(火) 17:47:57
この辺り?
SPI_GETKEYBOARDDELAY キーボード表示 (キーボード リピート) 開始までの待ち時間設定。
SPI_GETKEYBOARDSPEED キーボード表示の間隔 (キーボードリピートの速度) 設定。
SPI_GETFILTERKEYS 上記の拡張範囲。
834デフォルトの名無しさん:2010/03/23(火) 18:09:45
もうおまえらみたいな役立たずにはきいてやらない
835デフォルトの名無しさん:2010/03/23(火) 18:52:47
>>833
ありがとうございます。
さっそく以下のように試してみましたが、FILTERKEYSのiDelayMSecは1000になりました。
FILTERKEYS keys;
keys.cbSize = sizeof(keys);
SystemParametersInfo(SPI_GETFILTERKEYS, sizeof(keys), &keys, 0);

実際には右端に設定しているので250が入るはずなのですが、
ちょっと違う値になっているようです。
836デフォルトの名無しさん:2010/03/23(火) 23:42:14
ATLとかナシでIEコンポーネントを自分のアプリで利用する方法って何かあります?
837デフォルトの名無しさん:2010/03/23(火) 23:43:18
COM
838デフォルトの名無しさん:2010/03/24(水) 01:22:29
VisualStduioの使い方の問題かもしれませんが、
APIで解決する方法があればと思い質問させていただきます。

VisualStudioから実行したプロセスがCreateProcess()した際に、
生成された子プロセスも自動的に同じVisualStudioに
アタッチされるようにしておき、子プロセスのコードの
ブレークポイントでも止まるようにしたいのですが、
どうすればできるでしょうか。
生成する子プロセスの数が多いので、
ひとつひとつ手でアタッチというのは避けたいです。
環境はVisualStudio2008です。
839デフォルトの名無しさん:2010/03/24(水) 07:16:32
明示的にDEBUG_ONLY_THIS_PROCESSフラグを立てておかないと、
勝手にデバッグ対象にならないか?
840デフォルトの名無しさん:2010/03/24(水) 07:44:59
TCHARと_TCHAR関連の話が出てたけど

とりあえず UNICODEとANSIの場合、TCHAR型で、TEXT("")を使っとけってこと?
んで、もっと豊富な文字コードの互換性考えたかったら_UNICODEで_TCHARで_T("")使っとけってこと?
どういうこと?
841デフォルトの名無しさん:2010/03/24(水) 08:10:22
よくわかんなかったから
えーっとちょっといろいろプログラム動かして試してみたけど

UNICODEをdefineすると、VC++(WinSDK上?)では必然的に処理上_UNICODEとなる。
undefしてない限り必ず_UNICODE
_UNICODE定義になるならCRTで_TCHARや_T("")使っとかないといろいろおかしいよね?ってことかな
ちなみに直接_UNICODEを定義したときとUNICODEを定義(結局処理系では_UNICODEになる)をしたとき
TEXTマクロにおいてはそのサイズが2倍差となっていた。ようするに
_UNICODEとUNICODEにTEXT("")では互換性がないってことかな?
_T("")に関しては_UNICODEでもUNICODEもサイズ変化なしだった(もちろん_UNICODEをundefしちゃまずいが)
ま、ようするに_TCHARと_T("")なら_UNICODEでもUNICODEでもサイズは同じだが
TCHARとTEXT("")は_UNICODEとUNICODEでサイズが違うから将来的な互換性がないかもしれないってことだな

結論
_TCHARと_T("")使っとけ

これでおk?
842デフォルトの名無しさん:2010/03/24(水) 08:21:51
WindowsSDK TCHAR/TEXT/UNICODE
処理系定義 _TCHAR/_T/_TEXT/_UNICODE

このスレ的には前者を使うべき
843デフォルトの名無しさん:2010/03/24(水) 08:23:54
>>819
でも処理系で_UNICODEになるんだよね?どっちも
定義の時点でUNICODEなのは別にいいんだが、どのみち_UNICODEになる以上
_TCHAR/_T("")使わないと互換性ないんじゃないの?
TCHAR/TEXT("")は俺が動かしたプログラムの結果、UNICODEと_UNICODEでメモリのサイズが変わってしまったので
使わないほうがいいと感じた
844デフォルトの名無しさん:2010/03/24(水) 08:29:26
>>842
いや、上使っても別に文句はいわないが、
UNICODE定義と_UNICODE定義のときにTEXTマクロだけサイズが変わってたぞ
だからTEXTマクロは互換性考えてつかわないほうがいいんじゃない?
TEXTマクロつかわないなら、最初から全部処理系定義に統一させて
処理系定義 _TCHAR/_T/_TEXT/_UNICODE
つかう方がいいんじゃないの?
#define UNICODEしても、SDK上では
#undef _UNICODEしておかないとどのみち、_UNICODEになるから
最初から#define _UNICODEしてるのと同じだよ たぶん
845デフォルトの名無しさん:2010/03/24(水) 08:30:37
UNICODEを使うならL""
846デフォルトの名無しさん:2010/03/24(水) 08:40:22
マクロによるAPIの切り替えはUNICODEによって行われるから
MessageBox(NULL, _T("_Tマクロ"),....
であるとき_UNICODEだけを指定するとエラーになるのわかってて言ってる?
847デフォルトの名無しさん:2010/03/24(水) 08:45:42
>>844
- TCHAR, TEXT, UNICODE, AW切り替えマクロ
- _TCHAR, _TEXT, _UNICODE
これらはセットなのでどっちかに統一すればいいだけの話
848デフォルトの名無しさん:2010/03/24(水) 08:55:06
汎用テキストのデータ型名 / SBCS (_UNICODE も_MBCS も定義されていない場合) / _MBCSが定義されている場合 / _UNICODEが定義されている場合
_TCHAR / char / char / wchar_t
_tfinddata_t / _finddata_t / _finddata_t / _wfinddata_t
_tfinddata64_t / __finddata64_t / __finddata64_t / __wfinddata64_t
_tfinddatai64_t / _finddatai64_t / _finddatai64_t / _wfinddatai64_t
_TINT / int / int / wint_t
_TSCHAR / signed char / signed char / wchar_t
_TUCHAR / unsigned char / unsigned char / wchar_t
_TXCHAR / char / unsigned char / wchar_t
_T または _TEXT / 影響なし (プリプロセッサによって削除される) / 影響なし (プリプロセッサによって削除される) / L (後続の文字や文字列を対応する Unicode の文字や文字列に変換する)
849デフォルトの名無しさん:2010/03/24(水) 08:59:22
見にくいからリンクでいいのに
http://msdn.microsoft.com/library/c426s321
850デフォルトの名無しさん:2010/03/24(水) 09:11:04
名著と云われるAdvWin,PrgWinではTCHARとTEXTを使えとなってたから
あんま考えずにそれに従っていたけどいろいろあんだなぁ
ググった結果、ここのYuOって人のコメントがまとまってて分かりやすいと思った
ttp://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200711/07110005.txt
851デフォルトの名無しさん:2010/03/24(水) 09:15:38
・_UNICODE
LPTSTRがLPSTR(つまりchar*)
TEXTマクロはLPTSTR(つまりchar*)
TCHARはwchar_t,
_Tマクロはリテラル補助のLに置き換えられる。

・UNICODE
LPTSTRがLPWSTR(つまりwchar_t*)
TEXTマクロはLPTSTR(つまりwchar_t*)
TCHARはchar,
_Tマクロは無効化される

・_UNICODEとUNICODE
LPTSTRがLPWSTR(つまりwchar_t*)
TEXTマクロはLPTSTR(つまりwchar_t*)
TCHARはwchar_t,
_Tマクロはリテラル補助のLに置き換えられる。
852デフォルトの名無しさん:2010/03/24(水) 09:27:04
意味わかんねええええええええええええええ
普通にSDK使うときは何使えばいいんだよ!!!!!!!
つか、そこまで考える必要あんの?
853デフォルトの名無しさん:2010/03/24(水) 09:28:39
>・_UNICODE
>TCHARはwchar_t,
>・UNICODE
>TCHARはchar,

ここがダウト、ソース>>850
>TCHARはWindows SDKとCRTの両方で定義されているので,複雑な変化をします。
>CRT系の定義が先に読み込まれた場合は_UNICODEに依存
>Windows SDK系の定義が先に読み込まれた場合はUNICODEに依存
854デフォルトの名無しさん:2010/03/24(水) 09:31:35
どっちでもいいけどごちゃごちゃするのはごめんだ
どっちかにそろえるべき
いいかげんEXとか_とかで機能拡張するのやめて欲しいんだけどなあw
855デフォルトの名無しさん:2010/03/24(水) 09:41:46
いくらなんでも EnumCalendarInfoExEx/EnumDateFormatsExEx はひどい
856デフォルトの名無しさん:2010/03/24(水) 09:41:48
_tfreopen_sの引数には_TEXTを使って
CreateFileの引数にはTEXTをつかう。

それだけの話だろう
857デフォルトの名無しさん:2010/03/24(水) 09:42:38
Win32APIでは原則としてアンダーライン無し版を使う
アンダーライン系は標準Cに準拠しつつもユニコードビルドにも対応するコンソールアプリを作りたい場合のみ使う
安全のためUNICODEと_UNICODEはセットで先頭で定義するべき
一部のヘッダではUNICODEを定義した場合に勝手に_UNICODEを定義されたりその逆もあるので片側だけ定義するとインクルードの順番次第では整合性が取れなくなる
858デフォルトの名無しさん:2010/03/24(水) 09:48:32
>>853
>>850をちゃんとを実行してみた?
_UNICODEとUNICODEを入れ替えて?
そかもプリプロセス展開した?
859デフォルトの名無しさん:2010/03/24(水) 09:49:12
ウニコーデはもういいから
860デフォルトの名無しさん:2010/03/24(水) 11:26:58
マクロなんか使わないで
wchar_t と L"" 使うようにすればいいだけなんじゃないの?
861デフォルトの名無しさん:2010/03/24(水) 11:51:44
>>860
そもそも wchar_t と L"" 自体がマクロなわけですが何か?

個人的には
TCHAR、LPTSTR、_T() マクロの使用して常に両対応できるようにしておくことをおすすめする。
862デフォルトの名無しさん:2010/03/24(水) 11:54:01
ここだけ見ててもいかにウンコ仕様かよく分かるな
863デフォルトの名無しさん:2010/03/24(水) 11:56:06
> そもそも wchar_t と L"" 自体がマクロなわけですが何か?

そうだったのかー
864デフォルトの名無しさん:2010/03/24(水) 11:57:00
>>861
これは恥ずかしい
865デフォルトの名無しさん:2010/03/24(水) 11:59:59
> L"" 自体がマクロなわけですが何か?
> L"" 自体がマクロなわけですが何か?
> L"" 自体がマクロなわけですが何か?
> L"" 自体がマクロなわけですが何か?
> L"" 自体がマクロなわけですが何か?
> L"" 自体がマクロなわけですが何か?
> L"" 自体がマクロなわけですが何か?
> L"" 自体がマクロなわけですが何か?
> L"" 自体がマクロなわけですが何か?
> L"" 自体がマクロなわけですが何か?
866デフォルトの名無しさん:2010/03/24(水) 12:19:25
おー、L""は組み込み型だったんだ。
知らなった。どうもありがとう。
http://msdn.microsoft.com/ja-jp/library/6aw8xdf2.aspx

gccでもそうであることを追試した。
そりゃあそうだ。どこかでshort,int文字型の文字列リテラルが認識出来なかったら
UNICODEビルドなんてできないもんなぁ。
867デフォルトの名無しさん:2010/03/24(水) 12:24:21
別にUNICODEビルド云々は関係ないぞ
wchar_tはC89、つまり20年前からの標準
wcs〜系の関数もC95、つまり15年からの標準

MSすらWin9x系サポートをとっくの昔に放棄し
VC++はWin9x系で動作するバイナリを出力しなくなっているのに
TCHARとかいううんこに真面目に付き合う意味があるとは俺には思えんな
868デフォルトの名無しさん:2010/03/24(水) 12:26:20
質問者が今どっちでビルドしてるのかもわからないような状況だと
説明するのも面倒だからTCHARで説明するのがいいw
869デフォルトの名無しさん:2010/03/24(水) 12:26:28
なぁにそのうちUnicodeも古いっていう時代がやってくる
870デフォルトの名無しさん:2010/03/24(水) 12:32:28
>>867
いいたいことは分からないでもないが、
L""な文字列を真面目に扱ってる処理系なんてWindowsくらいなものだろ?
Unix系のプロダクトでワード文字列を使ってるソースコードなんて見たこと無いぞ。
もっぱらUTF-8をバイト文字列で扱うものばかりだ。

Windows向けに書いたコードをそのままUnixに移植したいというケースはあまり多くないけど、
両対応にするにはTCHAR/_T()で統一しておくのが一番簡単じゃね?
871デフォルトの名無しさん:2010/03/24(水) 12:38:29
>>870
自分で試してもいないソリューションを言ってるのが丸分かりだな……
Unix系のプロダクトで云々〜も、単にお前が無知なだけ

UTF-8(というかUnicode)が広く使われるようになるずっと前からxlibは
wchar_tを使っていたし、BSDのCitrusのように、Unicodeベースではないi18n
実装もある
872デフォルトの名無しさん:2010/03/24(水) 12:39:28
TCHARとかってUNIX系でも定義があるの?
873デフォルトの名無しさん:2010/03/24(水) 12:40:08
    ∩_∩     
   / \ /\   
  |  (゚)=(゚) |    人人人人人人人人人人人人人人人人人人人人
  |  ●_●  |   <  どうでもいいが誰にも迷惑かけずにUNICODE>
 /        ヽ  < を扱えよな                       >
 | 〃 ------ ヾ |   YYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
 \__二__ノ 
            


  ∩  ∩
  | | | |
  | |__| |
./ 一 ー \   人人人人人人人人人人人
/  (・) (・)  | <そんな方法あるの?>
|    ○     |  YYYYYYYYYYYYYYYY    
\__  ─  __ノ


    ∩_∩     
   / \ /\   
  |  (^)=(^) |    人人人人人人人人人人
  |  ●_●  |   < Lマクロってことだよ   >
 / //   ///ヽ  <言わせんな恥ずかしい>
 | 〃 ------ ヾ |   YYYYYYYYYYYYYY
 \__二__ノ

874デフォルトの名無しさん:2010/03/24(水) 12:57:43
>>871
wchar_tがC/C++の標準規格にあり、xlib等で標準的に使われてるのも分かった。
けどそれがTCHAR系を使用しないというポリシーの積極的な根拠にはならないよね。
>>872
ない。しかし高々数個のマクロを再定義するくらいだから大した事はないはず。
今回の議論のためにGTK+とapache-2.2のソースコードを調べたが、
GTK+ではwin32とx11周り、apacheではwin32周りの対応でwchar_tを使用している。
同じくapacheではwin32周りでTCHARも使用している。
apacheではAPRライブラリ内にucs2<->UTF-8のコンバーターがあり、
大半のコードはシングルバイト(char)で記述されている。
GTK+では確認してないが、ほぼ全てのソースコードでcharが使われてるのはapacheと同じ。
875デフォルトの名無しさん:2010/03/24(水) 13:01:18
言語の標準仕様でソースが完結しないのはさびしいね
マクロだらけで別の言語みたいになる
876デフォルトの名無しさん:2010/03/24(水) 13:03:41
>>874
いい加減スレ違い
877デフォルトの名無しさん:2010/03/24(水) 13:19:55
知識ひけらかしたいのかも知らんがボロが出てるしもうやめろと
878デフォルトの名無しさん:2010/03/24(水) 13:38:43
>>861レベルの恥ずかしいことを言っておきながら、ここまで頑張るのは
ある意味凄いな

悪いけどお前の「おすすめ」なんて誰も聞かないと思うよ
879デフォルトの名無しさん:2010/03/24(水) 13:53:32
TCHAR版のCRT使っておきたければTCHARは買いですぞ
まぁ2000からGDIの文字列出力がウニ子なんでウニ子でビルドしないと
内部変換噛まされるという現実があるが
880デフォルトの名無しさん:2010/03/24(水) 13:53:41
WCHARは現状UTF-16だが
wchar_tにUTF-16のような可変長のデータを格納するのは本来不適切
互換性のためとはいえVisualC++等の実装は腐っている
WCHARとwchar_tは偶然一致しているだけの別物と考えるべき
だからWCHARとLもセットで使うべきではなくTEXTを用いるべき
881デフォルトの名無しさん:2010/03/24(水) 14:01:08
>>880
>互換性のためとはいえVisualC++等の実装は腐っている
>WCHARとwchar_tは偶然一致しているだけの別物と考えるべき
>だからWCHARとLもセットで使うべきではなくTEXTを用いるべき

????
書く前によく推敲しような。
882デフォルトの名無しさん:2010/03/24(水) 14:02:14
>>879
> TCHAR版のCRT使っておきたければ
別に要らないでしょ、そんなものは
883デフォルトの名無しさん:2010/03/24(水) 14:04:18
>>881
いやそこはあってるだろ
884デフォルトの名無しさん:2010/03/24(水) 14:19:52
TEXTの代わりにTCHAR*じゃだめなん?
885デフォルトの名無しさん:2010/03/24(水) 14:22:50
おばかさんねえ
886デフォルトの名無しさん:2010/03/24(水) 14:23:29
>>880が言いたいのはこういうことだろ

- L"..."の型はwchar_t[n]

- WindowsAPIの1実装であるマイクロソフトのWindowsで
 WCHARがwchar_tのtypedefだったからといって
 他の実装でもそうなっているとは限らない。

したがって、L"..."の型をWCHAR[n]と期待するのはセマンティクスとしておかしい
887デフォルトの名無しさん:2010/03/24(水) 14:24:22
>>884
それはLPSTRだけど
888デフォルトの名無しさん:2010/03/24(水) 14:24:46
「他の実装」って意味分からんw
WCHARがそもそもマイクロソフトがWindowsのために定義しているマクロじゃないかw
889デフォルトの名無しさん:2010/03/24(水) 14:30:28
TCHARネタはしったかがよく釣れるなあ
890デフォルトの名無しさん:2010/03/24(水) 14:30:55
>>888
WindowsAPIにはWineのような互換実装が他に存在しえて
そのような環境向けの言語処理系でwchar_tがWCHARと互換がない可能性がある
891デフォルトの名無しさん:2010/03/24(水) 14:31:50
おまえらがそうやって型にこだわらないからx64で動かないアプリケーションがごろごろ出てくるんだよ・・・
892デフォルトの名無しさん:2010/03/24(水) 14:33:36
なんつうか本当に仮定の話だけで無駄な骨折りしたがる奴多いんだな
どうしても文字型を隠蔽したいのならtemplate使えよ
basic_string<ほげ>でいいだろ
標準でも何でもない、MSのドキュソマクロじゃなくてさ
893デフォルトの名無しさん:2010/03/24(水) 14:35:44
>>870
>Unix系のプロダクトでワード文字列を使ってるソースコードなんて見たこと無いぞ。

へー w
894デフォルトの名無しさん:2010/03/24(水) 14:36:00
どこから隠蔽が出てきた
895デフォルトの名無しさん:2010/03/24(水) 14:38:02
>>892
リテラルの型の話してんだよアホ
896デフォルトの名無しさん:2010/03/24(水) 14:41:21
>>895
お前が何派だか分からんが、WCHAR == wchar_tを仮定できないのなら
TEXTマクロもリテラルの代わりに使えないのは分かるだろ
WCHARの内部表現がコンパイラがサポートしていない型なら、
実行時計算するしかないからな

つまり無駄な努力なんだよ
897デフォルトの名無しさん:2010/03/24(水) 14:44:53
>>896
コンパイラはchar/wchar_t以外の文字列型を持っていても構わない
898デフォルトの名無しさん:2010/03/24(水) 14:46:17
>>897
ははは
擁護もここまで行くと基地害見てるわ
第三の文字列リテラル型か

非標準どころか、存在すらしないコンパイラのことまで考えて妄想してたのな
電波もここまで行くとついていけんわ
899デフォルトの名無しさん:2010/03/24(水) 14:48:17
相手を馬鹿にしたような発言した時点でどっちもどっち

落ち着こうぜ
900デフォルトの名無しさん:2010/03/24(水) 14:48:52
互換性と規格準拠度を両立させる場合、VisualStudioやWDKの将来のバージョンではTEXTマクロの中身を置き換えるしかないという話
まあ無駄な努力ではあるな
901デフォルトの名無しさん:2010/03/24(水) 14:56:24
>>900
さくっとC1XやC++1xを取り込んでしまえばいいだけの話だよ
UTF-16リテラルが増えてかえって今より状況がよくなるかもしれん
902デフォルトの名無しさん:2010/03/24(水) 14:58:29
正直API直触りしてるコードがレガシー化して
どのみちそのまま動かなくなる可能性のが大だと思うぞ
903デフォルトの名無しさん:2010/03/24(水) 15:04:40
>>902
いやいや、きちんと書かれているプログラムは16bit時代のでも、
いまの64bitのWindows7でソースコードレベルの互換性がほぼ保たれているもの
MSはここだけは気を遣ってるから

16bitから32bitに移行するときに躓いたり
MBCS/Unicodeビルドの両方を提供するので困ったり
XPからVistaに移行するときに急に動かなくなったり
64bit対応するのに大幅な改修が必要だったりするのは
大抵は型の大きさに勝手な仮定を置いていたことが問題じゃないのかね
904デフォルトの名無しさん:2010/03/24(水) 15:08:20
ツールバーって上か下にしか置けないのか?
905デフォルトの名無しさん:2010/03/24(水) 15:24:56
CCS_で始まるコモンコントロールスタイル見れ
906デフォルトの名無しさん:2010/03/24(水) 16:01:04
> 16bitから32bitに移行するときに躓いたり
知ったか発見
907デフォルトの名無しさん:2010/03/24(水) 17:07:06
シッタカとシッタカ叩きしか居ない
正しい答えは何だよ
いい加減FAだせ
908デフォルトの名無しさん:2010/03/24(水) 17:19:52
自分の意見を押し通すために、それぞれが自分勝手に条件設定するんだからまとまるわけがない。
そもそも答えは一つじゃない。
909デフォルトの名無しさん:2010/03/24(水) 17:59:56
うんこが漏れそうなんだが
910デフォルトの名無しさん:2010/03/24(水) 21:16:41
最近ノートン先生が俺の作ったソフトを問答無用に削除してくれる
素敵
911デフォルトの名無しさん:2010/03/24(水) 21:27:26
最近BitDefenderが俺のシステムを問答無用に削除してくれた
素敵
912デフォルトの名無しさん:2010/03/24(水) 22:18:14
intのキーコードを元に、「VK_TAB」のような文字列を返すAPIってありませんか?
913デフォルトの名無しさん:2010/03/24(水) 22:25:39
MapVirtualKeyかな?
914デフォルトの名無しさん:2010/03/24(水) 22:25:59
GetKeyNameText は?
915デフォルトの名無しさん:2010/03/24(水) 22:27:25
質問です。

ネットワークプリンタがやってるように、
LAN上のある特定の(自作)サーバープログラムを検出することは可能でしょうか?

NetServerEnumでマシン一覧を取ってきて、
順番にポートを叩くという方法を思いついたのですが、
流石にスマートではないですよね。
916デフォルトの名無しさん:2010/03/24(水) 22:32:48
ブロードキャストするとか、そんな感じじゃね?
917デフォルトの名無しさん:2010/03/24(水) 22:32:52
パイプとOpenSCManager
918デフォルトの名無しさん:2010/03/25(木) 02:33:17
設定ファイルを暗号化してエディタ等で見れないようにして、
アプリケーション起動時にパスワードを入れないと動作しないような
機能を実装したいのですが、Win32のAPIに暗号化アルゴリズムはありますか?
919デフォルトの名無しさん:2010/03/25(木) 04:19:01
>>918
DPAPI
920デフォルトの名無しさん:2010/03/25(木) 05:41:25
質問1

PCTSTRは定数文字列だから、直接リテラル指定してもいいけど、PTSTRは非定数文字列だから文字列リテラルじゃダメでバッファ指定ってことでおk?


Sample(PTSTR, PCTSTR)
↑こういうAPIがあったとき

Sample(TEXT("AAA"), TEXT("AAA"))
ではなく、

TCHAR buf[] = "AAA"
Sample(buf, TEXT("AAA"))
と使わなければエラーになる場合がある


質問2
PTSTRとLPTSTRって全く同じものと考えていいの?


初心者的質問だけど回答お願い
921デフォルトの名無しさん:2010/03/25(木) 05:54:15
>>920
1. ok.
2. 現在はPSTRはLPSTRの別名という扱いになっている
922デフォルトの名無しさん:2010/03/25(木) 06:12:05
GetCurrentDirctoryというAPIについて。
GetCurrentDirectory(256, &buf); //buf[256]
としたのですが、bufをprintfすると、「C」としか表示されません。
これはCドライブがカレントディレクトリという意味なのでしょうか?
「C:\」と表示されないとおかしいと思っているのですが、間違いでしょうか?
また、SetCurrentDirectory(TEXT("C:\\WINDOWS"));としたにもかかわらず
GetCurrentDirectory(256, &buf);とするとやはり、bufの中身は「C」としか表示されません。
何か思い当たる原因などありますでしょうか?
923デフォルトの名無しさん:2010/03/25(木) 06:21:48
>>922
ワイド文字をprintfなんてしちゃうから
924デフォルトの名無しさん:2010/03/25(木) 07:54:24
>>918
wincrypt.h
925デフォルトの名無しさん:2010/03/25(木) 08:14:51
>>922
簡易デバッグはMessageBoxでおk
926デフォルトの名無しさん:2010/03/25(木) 08:18:44
またWCHARとprintf(L"%s", なんだなwww
927デフォルトの名無しさん:2010/03/25(木) 09:59:46
>>921
朝鮮pedia1ページ分の知識しか無い奴が全く無関心な奴に妙な優越感持っちゃってんだろ
928デフォルトの名無しさん:2010/03/25(木) 10:11:31
いまさらnearやfarやhugeの話すんのwww
929デフォルトの名無しさん:2010/03/25(木) 12:47:17
ウェッブ1ベージの単位をどう見てるのか判らんがww
字数が少なくなって当然な事に、なんと!ハングルは英アルファベット四文字を一単語に集約して表記できるんだ

浅知恵というか、やっぱりと言うか訓読みの「糎」なぞには全然敵わんのだが
930デフォルトの名無しさん:2010/03/25(木) 12:53:37
またチョンかww
ハングル大移動だよwww
931デフォルトの名無しさん:2010/03/25(木) 15:00:57
http://www.geocities.jp/ky_webid/win32c/009.html
の最後に試してくださいって書いてあるやつの3つ目の作りかたが
わかりません。ヒントをください
932デフォルトの名無しさん:2010/03/25(木) 15:03:04
>>931
マウスクリックされたイベントでカーソルの位置を保存しておき、
WM_PAINTでその位置の色を変更するだけだろ。
933デフォルトの名無しさん:2010/03/25(木) 16:19:05
メッセージを表示させて時間が来たら消します

i= MessageBox(hwnd, Message, Title, MB_OK);
Set timer
時間経過→ SendMessage(?,WM_KEYDOWN,VK_RETURN,0);
Killtimer

SendMessageでMessageBoxにエンター入力して表示を消すつもりです。
WM_KEYDOWNにVK_RETURNを送るとエンターの入力になりますよね?
また、MessageBoxのハンドルをどうやって所得すればよいのか解りません。
934デフォルトの名無しさん:2010/03/25(木) 16:41:18
>>933
そんな怪しい処理作らずに
自分でダイアログ作って時間が経ったら消えるようにしたら?
935デフォルトの名無しさん:2010/03/25(木) 16:44:14
タイマー型メッセージ ボックスを作成する方法
http://support.microsoft.com/kb/181934/ja
936デフォルトの名無しさん:2010/03/25(木) 17:06:08
>>935
PeekMessage(&msg, NULL, WM_QUIT, WM_QUIT, PM_REMOVE);が成功してないのかMessageBoxと一緒に
プログラムも終了してしまいます。原因が解らない程レベルが低いので別の処理で代用しようかと思いました。
やっぱ邪道すぎますかね? ダイアログ勉強してみます。
937デフォルトの名無しさん:2010/03/25(木) 18:13:54
注 : WM_QUIT は、メイン メッセージ キューで取得されないように、メッセージ キューから削除する必要があります。
938デフォルトの名無しさん:2010/03/25(木) 20:42:03
スレッドフックでMessageBoxのプロシージャ横取りすればいいじゃないの
俺はそうしてるけど
939デフォルトの名無しさん:2010/03/26(金) 01:01:56
MAX_PATHって終端文字数も含まれてるの?
MAX_PATH + 1で定義したほうがいい?
940デフォルトの名無しさん:2010/03/26(金) 01:18:30
>>939
+1しないでいい。
941デフォルトの名無しさん:2010/03/26(金) 01:19:26
含まれていたと思うけど+1したほうがいい場合もあるかもしれない
MSDNにも+1されてるサンプルがいくつかある
942デフォルトの名無しさん:2010/03/26(金) 04:26:07
MAX_PATHって文字数のことだよね?
ワイドキャラの場合はMAX_PATH*2っていう書き方で良いんだよね?
そうしないとどう考えても文字数が足らないんだけど。
もしかして間違ってる?
943デフォルトの名無しさん:2010/03/26(金) 06:55:00
間違ってる
944デフォルトの名無しさん:2010/03/26(金) 07:12:21
>>935のようなタイマー付きのメッセージボックスで、
あと何秒で閉じるかカウントダウン表示ってできませんか?
945デフォルトの名無しさん:2010/03/26(金) 07:18:10
>>943
間違えた
ワイドキャラはワイドだから関係ないわw

std::string なんかだとMAX_PATH*2しないとだめだな。
946デフォルトの名無しさん:2010/03/26(金) 07:28:19
そういうコード書けばできるだろ。
947デフォルトの名無しさん:2010/03/26(金) 07:29:03
WバージョンのAPIでは、約32000文字がMAXになるというのがあってだな・・・
948デフォルトの名無しさん:2010/03/26(金) 07:53:43
そりゃまた別の話だ
949デフォルトの名無しさん:2010/03/26(金) 08:10:06
std::stringにワイド文字を格納しようとするおとこの人って…
950デフォルトの名無しさん:2010/03/26(金) 08:53:48
次スレまだか?
951デフォルトの名無しさん:2010/03/26(金) 09:53:10
std::stringよりすべてにおいてCStringの方が使いやすいと思ふ
952デフォルトの名無しさん:2010/03/26(金) 09:58:55
std::basic_string<TCHAR>でええやん。
っってかスレ違い
953デフォルトの名無しさん:2010/03/26(金) 12:14:57
変換がめどい
何もかもめどいが
おれはあきめらない!
954デフォルトの名無しさん:2010/03/26(金) 12:53:05
>>951
毎晩私にMFCを使うおとこの人って…
955デフォルトの名無しさん:2010/03/26(金) 14:07:48
windows.hを入れたらmin maxがマクロ定義されていて
tr1::mt19937::minなどのメソッドが使えなくなってしまいます
min maxを使うソースファイル単位でmin maxを#undefで消してしまっても問題ないでしょうか?
956デフォルトの名無しさん:2010/03/26(金) 14:13:42
#define NOMINMAX
957デフォルトの名無しさん:2010/03/26(金) 15:09:24
>>954
今はATLならddkに入ってるから最新版が簡単に使えるよ\(^o^)/
958デフォルトの名無しさん:2010/03/26(金) 15:58:35
VS2008の_ATL_VERは0x0900で6月にVS2010が出るまで一応最新版
先月でたWDK7.1の_ATL_VERは0x0800
もっと新しいDDKがあるのだろうか
959デフォルトの名無しさん:2010/03/26(金) 16:00:18
タイムスタンプで判断してたw><
960デフォルトの名無しさん:2010/03/26(金) 16:12:55
最新のATLは最新版ではなかったという事か
961アプリケーションの終了:2010/03/26(金) 19:25:09
コマンドラインからアプリケーションを終了させるアプリを作りたいと思っています。
taskmgr.exe や、calc.exe を終了させることはできたのですが、
肝心の終了させたいアプリ(仮にアプリAとします)は、OpenProcess()に失敗し、終了させることができません。
cygwin の kill.exe -f でもアプリAは終了させることができません。
しかしアプリAはタスクマネージャからは終了させることができます。
中心となる処理は以下のようです(インデントがおかしくなると思いますがすいません)。
何か他に必要となる処理(API)があれば教えていただけないでしょうか。

snapShot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);

for (Process32First(snapShot, entry); Process32Next(snapShot, entry);)
{
if (strcmp(entry->szExeFile, argv[1]) == 0)
{
terminateId = OpenProcess(PROCESS_TERMINATE, 0, entry->th32ProcessID);
if (terminateId == NULL) { printf("\n Access failed. \n"); return 1; }
TerminateProcess(terminateId, 0);
return 0;
}
}
962デフォルトの名無しさん:2010/03/26(金) 19:51:22
taskkill
963デフォルトの名無しさん:2010/03/26(金) 20:00:47
static const LVCOLUMN column = { ... };
SendMessage(ListView,LVM_INSERTCOLUMN,0,&column);

・マルチバイトビルドでLVM_INSERTCOLUMNを送ると死ぬ
・MSDNでは、lparamはconst LPLVCOLUMNとある
・Unicodeじゃないからcomctl32 v6を使うマニフェストは無し
・Unicodeビルドだとconst定義でも問題なし

どういうことなの‥‥

>>961
殺す前にデバッグ特権を有効にしてないか?
964デフォルトの名無しさん:2010/03/26(金) 22:18:46
>>955
(xxx.min)()
965デフォルトの名無しさん:2010/03/26(金) 23:48:09
>>963
static が駄目とか
966デフォルトの名無しさん:2010/03/27(土) 01:24:00
>>961
管理者権限で実行しても駄目?
967デフォルトの名無しさん:2010/03/27(土) 05:43:35
Windowsの特殊なデータ型の数値をそのままで出力するには
デバック出力の関数で出力するしかない?
たとえばHANDLEやDWORDやTCHARやintがごちゃまぜになってる構造体のメンバ変数を
すべて一度に参照したいんだけど
968デフォルトの名無しさん:2010/03/27(土) 05:47:01
補足
そのときに使う関数はOutputDebugStringであってる?
969デフォルトの名無しさん:2010/03/27(土) 06:20:20
>>968
一応あってるけど、普通デバッガでブレークポイント使わない?
970デフォルトの名無しさん:2010/03/27(土) 17:59:26
http://set.bbspink.com/test/read.cgi/erog/1230489064/240-241

( ・∀・)つ〃∩ ヘェーヘェーヘェー
971デフォルトの名無しさん:2010/03/27(土) 18:11:13
エロゲらしい微笑ましい不具合です
972デフォルトの名無しさん:2010/03/27(土) 18:13:15
エクスプローラのバグなんだけどな。
973デフォルトの名無しさん:2010/03/27(土) 18:47:59
外人の作ったクソアプリみたいだな
974デフォルトの名無しさん:2010/03/27(土) 22:10:41
そりゃエクスプローラ、Windowsはアメリカ製だからな
975デフォルトの名無しさん:2010/03/27(土) 22:18:58
SetTimerでタイムアウト後、タイマのプロシージャの中でKillTimerしても良いんでしょうか?
プロシージャ外じゃないと駄目なんて事は
976デフォルトの名無しさん:2010/03/27(土) 22:30:20
>>975
別にそれで問題ないと思うけど。
977デフォルトの名無しさん:2010/03/27(土) 22:47:36
安心しました、ありがとうございます。
978デフォルトの名無しさん:2010/03/28(日) 00:17:32
>>970
>上記で誤って作成されたフォルダを「エクスプローラ」上で削除した場合、以前より存在する「My Documents」(2000/XPの場合)
>または「Documents」(Vista/7の場合表示上は「ドキュメント」)が「エクスプローラ」自体の問題により削除される危険があります。

なんじゃこりゃ
ひどすぎないか
979デフォルトの名無しさん:2010/03/28(日) 00:27:04
>>978
(Windowsの)仕様ですキリッ
980デフォルトの名無しさん:2010/03/28(日) 00:32:10
作るときは区別されるのに
アクセスするときは区別されないって
Windowsって馬鹿じゃないの?死ぬの?
981デフォルトの名無しさん:2010/03/28(日) 00:42:02
というか、試しにmkdirコマンドで作ろうとしたが、作れなかったぞ。
982デフォルトの名無しさん:2010/03/28(日) 01:06:56
installshieldのバグじゃないかな
983デフォルトの名無しさん:2010/03/28(日) 03:04:15
色々試してみたのだが、SHFileOperationが空気読みすぎたのが原因っぽい。
最後に空白を付けたファイル名を渡しても、
その空白を取り除いたファイルを対象にしてしまうみたいだ。(x64版Windows7)
ちなみに、「\\?\」プリフィックス付じゃないと、
空白で終了するファイル名はCreateFile等では無効扱いされる。
インストーラが頑張り過ぎたのも、結果的に一因となってしまっているな。
984デフォルトの名無しさん:2010/03/28(日) 03:08:04
>>983
そこまでやってくれるなら、逆に「空白つき」のフォルダを作る方法のほうが知りたくなってくるな。
985983:2010/03/28(日) 03:08:19
あと、ファイルと書いたけどディレクトリも挙動は同じだった。
986デフォルトの名無しさん:2010/03/28(日) 03:42:29
まめFile5(ver6.1.4、64bit)で最後にスペースを付けても削られた

パス解析無効(\\?\を付ける)でないと付けられないって事は
Win32サブシステムの制約なのかしら
POSIXサブシステムなら話は変わるかもしれんが‥‥そこはスレ違いか
987デフォルトの名無しさん:2010/03/28(日) 03:46:59
cygwin だと簡単に作れるね>空白末尾ファイル/フォルダ
988983:2010/03/28(日) 03:51:28
あ〜、詳しく調べると、
CreateDirectory/RemoveDirectoryの仕様がファイルとは微妙に違うな。
末尾に空白があると、それを取り除いた上で処理されるみたいだ。
ディレクトリに関してだけで言えば、SHFileOperationが原因とは言い切れないか。
989983:2010/03/28(日) 03:58:04
無論、プリフィックス付は空白除去無しで処理される。
990デフォルトの名無しさん:2010/03/28(日) 04:33:23
\\?\ をつけると、Win32のパス解析を素通りして、ファイルシステムに直接送るようになるってことか

ttp://msdn.microsoft.com/en-us/library/aa365247%28VS.85%29.aspx#namespaces

NTFS 的には空白末尾制限や、MAX_PATH でのパス名制限は無いってことだね
cygwin は常にこの表記でアクセスしてるのかな。
991デフォルトの名無しさん:2010/03/28(日) 07:12:10
LPSって何ですか?
992デフォルトの名無しさん:2010/03/28(日) 08:38:08
いや、cygwinで普通にやるかぎりでは空白つきフォルダは作れなかったぞ。

bash-3.2$ ls
a b c
bash-3.2$ mkdir "a "
mkdir: cannot create directory `a ': File exists
bash-3.2$ mkdir "d "
bash-3.2$ ls -l
total 0
drwxrwxrwx+ 2 user なし 0 Mar 28 08:35 a
drwxrwxrwx+ 2 user なし 0 Mar 28 08:35 b
drwxrwxrwx+ 2 user なし 0 Mar 28 08:35 c
drwxrwxrwx+ 2 user なし 0 Mar 28 08:36 d
bash-3.2$
993デフォルトの名無しさん:2010/03/28(日) 08:50:29
MSDNとかのプログラミング例でよく引数が0とNULLを併用してるのはなぜ?
SampleRoutine(0, NULL, NULL, &buf)
みたいに。0とNULLをあえて使い分ける理由ってなんかあんの?
994デフォルトの名無しさん:2010/03/28(日) 09:09:20
NULLだったらハンドルか何かだなって分かる
ってだけ

TRUEとFALSEもAPIではnon-zero/zeroだから実際に値指定してもいいけど
ぱっと見てBOOLだと分かる方がいいのでやらない
995デフォルトの名無しさん:2010/03/28(日) 09:12:08
型の違いだろ
996デフォルトの名無しさん:2010/03/28(日) 09:15:57
旅に出てくるから新スレ立てとけ
997デフォルトの名無しさん:2010/03/28(日) 09:35:06
>>994
やっぱただそういうことだったんね
998デフォルトの名無しさん:2010/03/28(日) 09:47:09
そういう事か
999デフォルトの名無しさん:2010/03/28(日) 10:19:24
hoge((bool)0,(HANDLE)0)
みたいなことはしてもいいと思う
1000デフォルトの名無しさん:2010/03/28(日) 10:20:28
っつーか1000
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。