static HWND hwndButton;
static int cxClient,cyClient,cxChar,cyChar;
WS_SIZE:
cxClient=LOWORD(lParam);
cyClient=HIWORD(lParam);
cxChar=LOWORD(GetDialogBaseUnits());
cyChar=HIWORD(GetDialogBaseUnits());
return 0;
WM_CREATE:
hwndButton=CreateWindow("button","OK",WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON,
cxChar, //相对窗口左边的位置
cyChar, //相对窗口上面的位置
cxChar*20,cyChar*4,//按钮大小
hwnd, //父窗口句柄
(HWND)IDC_BUTTON1,//按钮ID,可以在之前定义#define IDC_BUTTON1 100
(HINSTANCE)GetWindowLong(hwnd,GWL_HINSTANCE));
return 0;
WM_COMMAND:
if(LOWORD(wParam)==IDC_BUTTON1)//这里根据按钮ID来判断是否点击,也可以根据句柄来判断
SendMessage(hwnd,WM_CLOSE,0,0);//点击按钮退出窗口
return 0;
6 个解决方案
#1
(HINSTANCE)GetWindowLong(hwnd,GWL_HINSTANCE));
获得当前进程实例句柄HINSTANCE
看一下MSDN不就清楚了
获得当前进程实例句柄HINSTANCE
看一下MSDN不就清楚了
#2
那传的参数是什么
#3
#4
就是得到这个窗口的实例句柄,后面那个GWL_HINSTANCE是函数的第2个参数
#5
那第2个参数 是什么意思啊
#6
就是为了得到窗口的实例句柄而设置的参数啊
下面是这个函数的说明,看看就明白了:
函数功能:该函数获得有关指定窗口的信息,函数也获得在额外窗口内存中指定偏移位地址的32位度整型值。 函数原型:LONG GetWindowLong(HWND hWnd,int nlndex);
参数:
hWnd:窗口句柄及间接给出的窗口所属的窗口类。
nlndex:指定要检索的基于0的偏移量。有效值的范围从0到窗口额外内存空间的字节数,减去4。例如,若指定了12位或多于12位的窗体类的额外存储空间,则应设为第三个32位整数的索引位8(12- 4=8)。要获得任意其他值,指定下列值之一:
GWL_EXSTYLE= (-20) 扩展窗口样式
GWL_STYLE=(-16) 窗口样式
GWL_WNDPROC= (-4) 该窗口的窗口函数的地址
GWL_HINSTANCE= (-6) 拥有窗口的实例的句柄
GWL_HWNDPARENT= (-8) 该窗口之父的句柄。不要用SetWindowWord来改变这个值
GWL_ID= (-12) 对话框中一个子窗口的标识符
GWL_USERDATA = (-21) 含义由应用程序规定
DWL_DLGPROC = 4 这个窗口的对话框函数地址
DWL_MSGRESULT = 0 在对话框函数中处理的一条消息返回的值
DWL_USER = 8 含义由应用程序规定
返回值:如果函数成功,返回值是所需的32位值;如果函数失败,返回值是0。若想获得更多错误信息请调用 GetLastError函数。
另外一点,我觉得你这样遇到一个问题就来论坛上问多没效率,别人就算给你回答也是需要时间的啊,自己要学会利用身边的资源来学习,比如说你可以在MSDN里查到所有想要的信息,如果不会用MSDN或者觉得英文看着麻烦的话可以在GOOGLE或者BAIDU里直接搜索一个函数,就可以得到这个函数有关的信息.
#1
(HINSTANCE)GetWindowLong(hwnd,GWL_HINSTANCE));
获得当前进程实例句柄HINSTANCE
看一下MSDN不就清楚了
获得当前进程实例句柄HINSTANCE
看一下MSDN不就清楚了
#2
那传的参数是什么
#3
#4
就是得到这个窗口的实例句柄,后面那个GWL_HINSTANCE是函数的第2个参数
#5
那第2个参数 是什么意思啊
#6
就是为了得到窗口的实例句柄而设置的参数啊
下面是这个函数的说明,看看就明白了:
函数功能:该函数获得有关指定窗口的信息,函数也获得在额外窗口内存中指定偏移位地址的32位度整型值。 函数原型:LONG GetWindowLong(HWND hWnd,int nlndex);
参数:
hWnd:窗口句柄及间接给出的窗口所属的窗口类。
nlndex:指定要检索的基于0的偏移量。有效值的范围从0到窗口额外内存空间的字节数,减去4。例如,若指定了12位或多于12位的窗体类的额外存储空间,则应设为第三个32位整数的索引位8(12- 4=8)。要获得任意其他值,指定下列值之一:
GWL_EXSTYLE= (-20) 扩展窗口样式
GWL_STYLE=(-16) 窗口样式
GWL_WNDPROC= (-4) 该窗口的窗口函数的地址
GWL_HINSTANCE= (-6) 拥有窗口的实例的句柄
GWL_HWNDPARENT= (-8) 该窗口之父的句柄。不要用SetWindowWord来改变这个值
GWL_ID= (-12) 对话框中一个子窗口的标识符
GWL_USERDATA = (-21) 含义由应用程序规定
DWL_DLGPROC = 4 这个窗口的对话框函数地址
DWL_MSGRESULT = 0 在对话框函数中处理的一条消息返回的值
DWL_USER = 8 含义由应用程序规定
返回值:如果函数成功,返回值是所需的32位值;如果函数失败,返回值是0。若想获得更多错误信息请调用 GetLastError函数。
另外一点,我觉得你这样遇到一个问题就来论坛上问多没效率,别人就算给你回答也是需要时间的啊,自己要学会利用身边的资源来学习,比如说你可以在MSDN里查到所有想要的信息,如果不会用MSDN或者觉得英文看着麻烦的话可以在GOOGLE或者BAIDU里直接搜索一个函数,就可以得到这个函数有关的信息.