WIN32 SDK 子窗口随父窗口移动
发布网友
发布时间:2022-04-29 03:34
我来回答
共4个回答
热心网友
时间:2023-10-09 09:55
爱应用问仁间为您解答:
首先你要建立一个主窗口以及对应的窗口处理函数mainwndproc()
接下来你要在主窗口的消息处理函数中创建一个子窗口
调用createwindow来创建这个子窗口(这一步可以在主窗口响应wm_create时调用)
这时的创建窗口函数有一个重要的参数,就是父窗口句柄
另外就是子窗口的消息处理函数childwndproc()
望采纳。有问题请追问。
热心网友
时间:2023-10-09 09:55
此等问题超出我的能力,前排围观。。。
热心网友
时间:2023-10-09 09:56
//用这个方法,可以不点击标题栏,也可以移动主窗口:
如果创建子窗口的函数CreateWindow();倒数第四个参数设对了的话,应该可以随主窗口移动的。
void OnLbuttonDown(HWND hwnd,LPARAM lParam)/*在消息回调函数外面定义一个移动窗口的函数*/
{
SendMessage(hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0);
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_COMMAND://子窗口的消息放到这里来处理
switch(LOWORD(wParam))
{
case 1000:
PostQuitMessage(0);
break;
}
return 0;
case WM_LBUTTONDOWN:
//WM_LBUTTONDOWN表示鼠标按下,如果是鼠标左键在主窗口上按下了,那么就调用移动的函数。
//如果在子窗口上按下了鼠标左键,那么略过,因为子窗口消息由前面的WM_COMMAND来处理。
switch(LOWORD(wParam))
{
case 1000://这是子窗口ID,在子窗口上按下了鼠标左键,那么略过不做操作,如果不略过,
//像编辑框那样的控件,可能要双击才能输入字符。
return 0;
default://除了子窗口以外肯定就是主窗口了。
OnLbuttonDown(hWnd,lParam);//移动主窗口
break;
}
}
}
热心网友
时间:2023-10-09 09:56
不知道
热心网友
时间:2023-10-09 09:55
爱应用问仁间为您解答:
首先你要建立一个主窗口以及对应的窗口处理函数mainwndproc()
接下来你要在主窗口的消息处理函数中创建一个子窗口
调用createwindow来创建这个子窗口(这一步可以在主窗口响应wm_create时调用)
这时的创建窗口函数有一个重要的参数,就是父窗口句柄
另外就是子窗口的消息处理函数childwndproc()
望采纳。有问题请追问。
热心网友
时间:2023-10-09 09:55
此等问题超出我的能力,前排围观。。。
热心网友
时间:2023-10-09 09:56
//用这个方法,可以不点击标题栏,也可以移动主窗口:
如果创建子窗口的函数CreateWindow();倒数第四个参数设对了的话,应该可以随主窗口移动的。
void OnLbuttonDown(HWND hwnd,LPARAM lParam)/*在消息回调函数外面定义一个移动窗口的函数*/
{
SendMessage(hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0);
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_COMMAND://子窗口的消息放到这里来处理
switch(LOWORD(wParam))
{
case 1000:
PostQuitMessage(0);
break;
}
return 0;
case WM_LBUTTONDOWN:
//WM_LBUTTONDOWN表示鼠标按下,如果是鼠标左键在主窗口上按下了,那么就调用移动的函数。
//如果在子窗口上按下了鼠标左键,那么略过,因为子窗口消息由前面的WM_COMMAND来处理。
switch(LOWORD(wParam))
{
case 1000://这是子窗口ID,在子窗口上按下了鼠标左键,那么略过不做操作,如果不略过,
//像编辑框那样的控件,可能要双击才能输入字符。
return 0;
default://除了子窗口以外肯定就是主窗口了。
OnLbuttonDown(hWnd,lParam);//移动主窗口
break;
}
}
}
热心网友
时间:2023-10-09 09:56
不知道
热心网友
时间:2023-10-09 09:55
爱应用问仁间为您解答:
首先你要建立一个主窗口以及对应的窗口处理函数mainwndproc()
接下来你要在主窗口的消息处理函数中创建一个子窗口
调用createwindow来创建这个子窗口(这一步可以在主窗口响应wm_create时调用)
这时的创建窗口函数有一个重要的参数,就是父窗口句柄
另外就是子窗口的消息处理函数childwndproc()
望采纳。有问题请追问。
热心网友
时间:2023-10-09 09:55
此等问题超出我的能力,前排围观。。。
热心网友
时间:2023-10-09 09:56
//用这个方法,可以不点击标题栏,也可以移动主窗口:
如果创建子窗口的函数CreateWindow();倒数第四个参数设对了的话,应该可以随主窗口移动的。
void OnLbuttonDown(HWND hwnd,LPARAM lParam)/*在消息回调函数外面定义一个移动窗口的函数*/
{
SendMessage(hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0);
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_COMMAND://子窗口的消息放到这里来处理
switch(LOWORD(wParam))
{
case 1000:
PostQuitMessage(0);
break;
}
return 0;
case WM_LBUTTONDOWN:
//WM_LBUTTONDOWN表示鼠标按下,如果是鼠标左键在主窗口上按下了,那么就调用移动的函数。
//如果在子窗口上按下了鼠标左键,那么略过,因为子窗口消息由前面的WM_COMMAND来处理。
switch(LOWORD(wParam))
{
case 1000://这是子窗口ID,在子窗口上按下了鼠标左键,那么略过不做操作,如果不略过,
//像编辑框那样的控件,可能要双击才能输入字符。
return 0;
default://除了子窗口以外肯定就是主窗口了。
OnLbuttonDown(hWnd,lParam);//移动主窗口
break;
}
}
}
热心网友
时间:2023-10-09 09:56
不知道