直接作成したコントロールのデフォルトプッシュボタンについて – プログラミング – Home

直接作成したコントロールのデフォルトプ...
 
通知
すべてクリア

[解決済] 直接作成したコントロールのデフォルトプッシュボタンについて


ねこ
 ねこ
(@ねこ)
ゲスト
結合: 22年前
投稿: 94
Topic starter  

WindowsXP VC++.NET 2003 で開発しております。
2回目の質問になりますが、よろしくお願いします。

テンプレートを使わずにコントロールを2つ直接作成しました。
1つはエディットボックスで、もう1つはボタンです。

エディットボックスでENTERキーを押せば、自動的にボタンを押す、
というのを実装したいと思っています。
ボタンのスタイルには、BS_DEFPUSHBUTTON を設定したのですが、
ENTERキーを押してもボタンを押したことにはなりません。

リソースを使わず、これを実装する方法はありますでしょうか。

以下にソースの1部を書きます。

//-----WinMain----------
INT APIENTRY WinMain( HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR pCmdLine, INT
nCmdShow )
{
.
...
....
WNDCLASSEX wc;

wc.cbSize = sizeof(WNDCLASSEX);
wc.style = NULL;
wc.lpfnWndProc = WinProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = DLGWINDOWEXTRA;
wc.hInstance = hInst;
wc.hIcon = NULL;
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
wc.lpszMenuName = NULL;
wc.lpszClassName = szWinName;
wc.hIconSm = NULL;

if (!RegisterClassEx(&wc)) return (FALSE);

hWnd = CreateWindowEx(0,
szWinName,
szWinTitle,
WS_OVERLAPPEDWINDOW|WS_SYSMENU,
0,
0,
SCREEN_WIDTH,
SCREEN_HEIGHT,
NULL,
NULL,
hInst,
NULL
);

ShowWindow(hWnd, nWinMode);
UpdateWindow(hWnd);
.
...
....

while(GetMessage(&msg,NULL,0,0))
{
if(!IsDialogMessage(hWnd,&msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
.
...
....

//-----ウインドウプロシージャ-------

LRESULT CALLBACK WinProc(HWND hWnd, UINT msg, WPARAM wPa, LPARAM lPa)
{

.
...
....

case WM_CREATE:

/* テキスト入力ボックスを作成 */
hTextbox=CreateWindowEx(0, EDIT,",
WS_CHILD | ES_MULTILINE | WS_VSCROLL
|WS_GROUP|WS_TABSTOP|WS_VISIBLE,
0, 0, 0, 0,
hWnd,
(HMENU)2,
(HINSTANCE)GetWindowLong(hWnd, GWL_HINSTANCE), NULL);

/* 送る ボタンを作成 */
hButton=CreateWindowEx(0, BUTTON,送る,

WS_CHILD|WS_GROUP|WS_TABSTOP|WS_VISIBLE|BS_DEFPUSHBUTTON,
0, 0,128, 32,
hWnd,
(HMENU)ID_BTN,
(HINSTANCE)GetWindowLong(hWnd, GWL_HINSTANCE), NULL);

break;

.
..
...

case WM_SIZE:
MoveWindow(hButton, LOWORD(lPa)-70,
HIWORD(lPa)-36,64, 32, TRUE);
MoveWindow(hTextbox, 5, HIWORD(lPa)*0.77+10,
LOWORD(lPa)-80, HIWORD(lPa)-HIWORD(lPa)*0.77-
15, TRUE);
break;

.
..
...

default:
return DefWindowProc(hWnd, msg, wPa, lPa);

.
..
...
//---------------

この機能を実装すれば、作りたいプログラムがひとまず完成します。。
アドバイスがありましたら、よろしくお願いいたします。


引用未解決
トピックタグ
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

DM_SETDEFIDで設定します。


返信引用
ねこ
 ねこ
(@ねこ)
ゲスト
結合: 22年前
投稿: 94
Topic starter  

dairygoods様
DM_SETDEFIDを使い、デフォルトプッシュボタンを作ることができました。
的確なアドバイスありがとうございました。
やはり直接書くのは大変なので、リソースのほうも勉強したいとおもいます。


返信引用
ねこ
 ねこ
(@ねこ)
ゲスト
結合: 22年前
投稿: 94
Topic starter  

dairygoods様
DM_SETDEFIDを使い、デフォルトプッシュボタンを作ることができました。
的確なアドバイスありがとうございました。
やはり直接書くのは大変なので、リソースのほうも勉強したいとおもいます。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました