解决方案 »
- codejock XtremePro 菜单显示中文
- 怎样在ListCtrl控件指定的单元格中用Textout或DrawText绘制文字?
- 请问如何在ListBox 用DrawItem 自绘背景图片
- 对话框显示出来后,CStatic控件不能显示出来
- 文本问题,请指点,我想取.txt里的内容,一行一行的取,请问如何解决?
- PreTranslateMessage()为什么不反映了,在线!
- 我从CEdit 继承了一个CMYedit 我想改变原来CEdit 的字体,背景颜色,请问在那些函数中修改?
- SetDialogBkColor为什么不行?
- 怎么向程序发送汉字(WM_CHAR?WM_IME_CHAR?)
- 请问在VC下如何实现软件的多语言支持?
- VC获取屏幕坐标
- 这样自定义的消息哪错了,在线等
dwlnitParam:指定传递到WM_INITDIALOG消息的lParam参数中的对话框过程的值而不是在你的回调函数WndProc中接收
谢谢
那么我可以用什么方法传递参数呢?
如果在DoModal中用SetWindowLong(hwnd, GWL_USERDATA, (LONG)this);
然后在WndProc中用GetWindowLong(hwnd, GWL_WNDPROC);
那么hwnd怎么得来呢?
{
switch(uMsg){
case WM_INITDIALOG:
m_mydlg = (MyDlg*)lParam; //把lParam存放在类成员变量
mydlg->SetHwnd(hWnd);
break;
}
}
参数:
hlnstance:标识一个模块的事例,该模块的可执行文件含有对话框模板。
IpTemplateName:标识对话框模板。此参数可以指向一个以NULL结尾的字符串的指针,该字符串指定对话框模扳名,或是指定对话框模板的资源标识符的一个整型值。如果此参数指定了一个资源标识符,则它的高位字一定为零,且低位字一定含有标识符。一定用MAKEINTRESOURDE宏指令创建此值。
hWndParent:指定拥有对话框的窗口。
IpDirlogFunc:指向对话框过程的指针。有关更详细的关于对话框过程的信息,请参见DialogProc。
dwlnitaram:指定传递到WM_INITDIALOG消息的IParam参数中的对话框过程的值。
用GWL_USERDATA来传递this也是一种方法,Chrome就用了这种方法,在WndProc里用GetWindowLong(hwnd, GWL_USERDATA)来获取this,hwnd直接用WndProc的第一个参数。
SetWindowLong时hwnd怎么得到呢?