【发布时间】:2016-06-12 10:04:20
【问题描述】:
我是 WinApi 的新手,我希望在我的程序中创建一个简单的窗口,其中包含一个空白 父窗口和两个较小的子按钮 "button1" & “按钮 2”。使用此按钮,我希望将 bool 值从 false 更改为 true,反之亦然,但是我看到的几乎所有示例都很难理解,似乎您必须返回 MSG某种我不知道如何处理的价值。
我在下面有一个伪代码,说明我正在尝试做的事情,我让 cmets 解释我每时每刻想要做什么,我的做法是否正确?:
#include <windows.h>
static int buildwindow(){
MSG msg;
//create parent window
HWND hWnd = CreateWindow(TEXT("scrollbar"), TEXT("Parent"), WS_VISIBLE | WS_POPUP,
10, 10, 800, 500, NULL, NULL, NULL, NULL);
//create child window
HWND hWnd1 = CreateWindow(TEXT("button"), TEXT("button1"), WS_CHILD|WS_VISIBLE | WS_POPUP,
10, 10, 80, 25, hWnd, NULL, NULL, NULL);
//create child window2
HWND hWnd2 = CreateWindow(TEXT("button"), TEXT("button2"), WS_CHILD|WS_VISIBLE | WS_POPUP,
100, 100, 80, 25, hWnd, NULL, NULL, NULL);
ShowWindow(hWnd, SW_SHOW);
UpdateWindow(hWnd);
ShowWindow(hWnd1, SW_SHOW);
UpdateWindow(hWnd1);
ShowWindow(hWnd2, SW_SHOW);
UpdateWindow(hWnd2);
//wait for buttonpress
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
//return the buttonpress
return (int) msg.wParam;
}
int main(void)
{
//create window inside the buttonpress method
int buttonpress = buildwindow();
//check which button was pressed
if(buttonpress = button1){
//do something
}
elseif(buttonpress = button2){
//do something else
}
//finish
return(0);
}
【问题讨论】:
-
那里有无数关于基本 WinAPI 编程的示例。买一本书(例如 Petzold)或做一些适当的研究。说真的,这个 API 已经存在了将近 30 年 - 它并不晦涩。
-
如果这没有意义,那么您需要一本好的参考书。 Charles Petzold 的Programming Windows®, Fifth Edition 是Windows 编程的黄金标准。如果您赶时间,请查看Learn to Program for Windows in C++。在那之后事情就没有意义了,但它仍然比观看 YouTube 视频更好(如果你是,就停在那里;它没用,而且只是浪费时间)。
-
很高兴知道,我确实有一个截止日期,我通常会寻找代码示例而不是尝试阅读书籍或文档,因为我发现这样我学得更快。我一直在看 youtube 视频,但你是对的,它们并不是很有用。我会看看那个 windows 链接
-
好吧,从问题中的代码来看,您不奠定基础并尝试在没有必要知识的情况下编写程序的计划并不是很好。这段代码有很多问题。帮自己一个忙,阅读 Petzold 的书。这就是我们其他人学习 Win32 的方式。
-
我知道有问题,我确实提到它是一个伪代码。很高兴知道 Petzold 的书,我会研究一下
标签: c++ windows winapi button createwindow