現在windows apiを勉強中のものです。
やりたいことは
1,登録ボタンを押す
2,テキストエディットが出てくる
3,体重を入力
4,描写ボタンを押す
5,記録した体重が親ウィンドウに表示される(現在の体重は00です)
というような簡単なものを作ろうとしています。自力で4番まではできました。しかし、5を実装しようとすると値を変数に登録していく中で型の違いに悩まされうまくできません。
ダイアログボックス内に記録した体重を表示させることはできました。しかし、親ウィンドウに表示できません。
答えはお答えしていただかなくて結構なのでこんな感じにやるよみたいなアドバイスをいただきたいです。
環境はVisualStudioの最新版です
C
1//source.cpp 2#include <windows.h> 3#include <stdio.h> 4#include <stdlib.h> 5#include <string.h> 6#include <tchar.h> 7 8#include "resource.h" 9 10 11#define BUTTON_ID1 0 12 13// グローバル変数: 14TCHAR szBuf_edit1[1024]; 15 16// このコード モジュールに含まれる関数の宣言を転送します: 17LRESULT CALLBACK DialogProc(HWND, UINT, WPARAM, LPARAM); 18 19LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); 20 21char edit_str[256]; 22 23 24int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, 25 PSTR lpCmdLine, int nCmdShow) 26{ 27 28 HWND hwnd; 29 MSG msg; 30 WNDCLASS winc; 31 32 winc.style = CS_HREDRAW | CS_VREDRAW; 33 winc.lpfnWndProc = WndProc; 34 winc.cbClsExtra = winc.cbWndExtra = 0; 35 winc.hInstance = hInstance; 36 winc.hIcon = LoadIcon(NULL, IDI_APPLICATION); 37 winc.hCursor = LoadCursor(NULL, IDC_ARROW); 38 winc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); 39 winc.lpszMenuName = NULL; 40 winc.lpszClassName = TEXT("KITTY"); 41 42 if (!RegisterClass(&winc)) return -1; 43 44 hwnd = CreateWindow( 45 TEXT("KITTY"), TEXT("体重管理アプリ"), 46 WS_OVERLAPPEDWINDOW | WS_VISIBLE, 47 CW_USEDEFAULT, CW_USEDEFAULT, 48 CW_USEDEFAULT, CW_USEDEFAULT, 49 NULL, NULL, hInstance, NULL 50 ); 51 52 CreateWindow( 53 TEXT("BUTTON"), TEXT("記録する"), 54 WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 55 0, 0, 100, 50, 56 hwnd, (HMENU)BUTTON_ID1, hInstance, NULL 57 ); 58 59 if (hwnd == NULL) return -1; 60 while (GetMessage(&msg, NULL, 0, 0)) DispatchMessage(&msg); 61 return msg.wParam; 62} 63 64LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp) { 65 66 switch (msg) { 67 case WM_DESTROY: 68 PostQuitMessage(0); 69 return 0; 70 71 case WM_COMMAND: 72 73 switch (LOWORD(wp)) { 74 case BUTTON_ID1: 75 DialogBox((HINSTANCE)GetWindowLong(hwnd, GWLP_HINSTANCE), "DIALOG_BOX", hwnd, (DLGPROC)DialogProc); 76 } 77 return 0; 78 79 80 } 81 return DefWindowProc(hwnd, msg, wp, lp); 82} 83 84LRESULT CALLBACK DialogProc(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp) { 85 switch (msg) { 86 87 case WM_CLOSE: 88 EndDialog(hwnd, IDOK); 89 break; 90 case WM_COMMAND: 91 switch(LOWORD(wp)){ 92 case IDC_BUTTON1: 93 GetDlgItemText(hwnd, IDC_EDIT1, 94 (LPTSTR)szBuf_edit1, (int)sizeof(szBuf_edit1)); 95 SetDlgItemText(hwnd, IDC_STATIC1, (LPCTSTR)szBuf_edit1); 96 } 97 break; 98 } 99 return FALSE; 100} 101 102 103
//resource.rc
DIALOG_BOX DIALOG 0, 0, 170, 62
FONT 9, "MS UI Gothic"
CAPTION "ダイアログ"
BEGIN
EDITTEXT IDC_EDIT1, 2, 2, 166, 13, ES_AUTOHSCROLL
PUSHBUTTON "描写", IDC_BUTTON1, 132, 17, 26, 13
LTEXT "", IDC_STATIC1, 4, 40, 114, 8
END
resource.h
define IDC_EDIT1 1001
define IDC_BUTTON1 1002
define IDC_STATIC1 1003
ifndef IDC_STATIC
define IDC_STATIC -1
endif
回答1件
あなたの回答
tips
プレビュー